Coursera学习笔记Week5

这周的课程主题是:在给定训练集下为神经网络拟合参数的学习算法。

重点讲解神经网络算法在分类中的应用(二元分类、多元分类)

二元分类:输出结果是一个实数,输出单元的个数为1

多元分类:k个不同的类,会有k个输出单元,每个都是一个k维向量。

代价函数(cost function)

首先是逻辑回归的代价函数

Coursera学习笔记Week5

神经网络的代价函数是该函数的一般化

Coursera学习笔记Week5

编程时要注意的是这个公式中的y不是输入的点对应的y,而要把输入的y(1,2,...,10)转化为10维的向量表示对应的类别

之后要做的是最小化代价函数,即要对代价函数中每个参数theta求偏导,这里用到了反向传播算法来求偏导数项。

反向传播算法的主要思路是先通过前向传播计算出每一层的激励值,然后用反向传播算法计算出每一层激励值与真实值的误差

Coursera学习笔记Week5

Coursera学习笔记Week5


由于许多高级优化算法中参数都要以向量的形式传入,因此要将矩阵形式的参数展开成参数。

Coursera学习笔记Week5


使用梯度检查可以计算代价函数的拟合的误差,以此代价函数的拟合效果。

Coursera学习笔记Week5


将所有权重的初始值设为0对神经网络算法是不可行的,因此要进行随机初始化,打破对称并保证权值参数在特定范围内生成并且这个范围设置较小。

Coursera学习笔记Week5


总结:如何训练一个神经网络学习算法

1、搭建网络的大框架(选择神经元之间的连接模式,隐藏层个数,隐藏层的单元个数)

隐藏层和隐藏单元的个数的默认规则:普遍只使用一个隐藏层,如果有多个隐藏层,每个隐藏层都有相同的单元数,通常隐藏单元的个数越多越好,但越多的话计算量会越大。隐藏单元的数目要和输入特征的数目相匹配,可以是它的二倍,三倍四倍等。

2、如何实现神经网络的训练过程

构建一个神经网络,随机初始化权值(通常初始化为很小接近于0);

使用前向传播算法;

计算代价函数;

反向传播算法计算偏导数;

梯度检查:把用反向传播得到的偏导数值与数值计算得到的估计值进行比较,检查后一定要去掉梯度检查的代码;

使用某种最优化方法最小化代价函数;