本次学习笔记主要记录学习机器学习时的各种记录,包括吴恩达老师视频学习、李宏毅老师视频学习、周志华老师的《机器学习》(西瓜书)以及李航老师的《统计学习方法》。作者能力有限,如有错误等,望联系修改,非常感谢!
第一版 2022-02-08 初稿
一、代价函数
假设神经网络的训练样本有m个,每个包含一组输入x和一组输出信号y,S_L表示最后一层中处理单元的个数。
二元分类:S_L=0 , y=0 or 1表示哪一类;
K类分类:S_L=k , y_i=1表示分到第i类;(k>2)
下边复杂的代价函数思想是一样的,希望通过代价函数来观察算法预测的结果与真实情况的误差有多大,唯一不同是,对于每一行特征,都会给出K个预测,基本上我们可以利用循环,对每一行特征都预测K个不同结果,然后再利用循环在K个预测中选择可能性最高的一个,将其与y中的实际数据进行比较。
正则化的那一项只是排除了每一层θ_0后,每一层的θ矩阵的和。最里层的循环j循环所有的行(由s_l+1 层的激活单元数決定),循环 i 则循环所有的列,由该层(S_l层)的激活单元数所决定。即:h_θ(x)与真实值之间的距离为每个样本-每个类输出的加和,对参数进行regularization 的bias 项处理所有参数的平方和。
二、反向传播算法
现在,为了计算代价函数的偏导数
∂
∂
Θ
i
j
(
l
)
J
(
Θ
)
\frac{\partial}{\partial \varTheta _{ij}^{\left( l \right)}}J\left( \varTheta \right)
∂Θij(l)∂J(Θ),我们需要采用一种反向传播算法,也就是首先计算最后一层的误差,然后再一层一层反向求出各层的误差,直到倒数第二层。以一个例子来说明反向传播算法。
l代表目前所计算的是第几层;
j代表目前计算层中的激活单元的下标,也将是下一层的第j个输入变量的下标;
i代表下一层中误差单元的下标,是受到权重矩阵中第i行影响的下一层中的误差单元的下标。
三、反向传播算法的直观理解
本节讨论反向传播算法复杂的步骤,并希望给你一个更加全面直观的感受。
四、实现注意:使用参数
本节介绍一个细节的实现过程,怎样把参数从矩阵展开成向量。
五、梯度检测
对一个复杂模型(etc.神经网络)使用梯度下降算法时,可能存在不易观察错误。虽然cost看上去减小,但最终结果不是最优解。
为避免此情况,采取 梯度的数值检验 方法,思想是 通过估计梯度值来检验我们计算的导数值是否真的是我们要求的。
六、随机初始化
七、综合
八、自主驾驶(Autonomous Driving)
每秒生成12次数字化图片,并将图像传给神经网络进行训练,多个神经网络同时工作,每个网络都生成一个行驶方向,以及一个预测自信度的参数,预测自信度最高的那个神经网络得到的行驶方向。