机器学习中的目标函数(target function),又称损失函数(loss/cost function),参数的求解是从目标函数的优化开始。But,如何在程序中编写目标函数,小结一下:
1. 假设存在一个目标函数:
如何将其写在程序中,python形式如下:
# 定义目标函数
def rosen(x):
''' The Rosenbrock function '''
return sum(100.0 * (x[1:] - x[:-1]**2.0)**2.0 + (1 - x[:-1])**2.0)
x0 = np.array([1.3, 0.7, 0.8, 1.9, 1.2])
res = minimize(rosen, x0, method = 'nelder-mead',\
options = {'xtol': 1e-8, 'disp': True}) # 目标函数rosen, 初始值x0, 优化方法nelder-mead
print res.x # 得到的是最小值对应的解
如果使用BFGS算法优化该目标函数时,需要求目标函数对应的梯度,梯度计算如下:
上式推导中的第二步,没看明白,是不是δ(i,j)的i==j时,该值为1; i != j时,该值为0?