-
x1,x2,x3是输入单元,将原始数据输入给它们
-
输入层:数据节点所在的层
-
网络层:输出hihi连同它的网络层参数w,bw,b
-
隐藏层:网络层中间的层
-
输出层:最后一层
-
偏置单元:bias unit,每层加上偏置单元
工作原理
激活单元和输出的表示:
第l层第j个神经元的输出
g: Sigmoid函数 在神经网络中被称为激活函数
神经网络的代价函数
-
m : 训练样本个数
-
x, y : 输入和输出信号
-
L : 代表神经网络层数
-
S_I : 每层的神经元个数
-
S_l : 表示输出神经元个数
分类
-
二类分类: S_L=0, y=0 / 1 ;输出是一个实数
-
K 类分类: S_L=k, y_i=1 表示分到第 i 类的情况。输出是一个多维向量
代价函数
logistic回归(LR)中的代价函数:
在logistic回归中,只有一个输出变量称之为标量scalar。
但是在神经网络中会有多个输出变量,hθ(x)是一个K维的向量。
假设第i个输出函数:
代价函数J表示为:
解释说明:
反向传播
-
首先计算最后一层的误差
-
再一层层地反向求出各层的误差,直到倒数第二层
前向传播例子
假设有一个数据样本:
前向传播法就是通过一层层地按照神经网络的顺序从输入层到输出层计算下去。
反向传播例子
-
从最后一层的误差开始计算:
-
用δ表示误差,误差=模型预测值-真实值
-
前一层的误差
-
再前一层的误差
第一层是输入变量,不存在误差
-
假设λ=0,如果不做正则化处理时
对上面的式子中各个上下标的含义进行解释:
-
l代表的是第几层
-
j代表的是计算层中的激活单元的下标
-
i代表的是误差单元的下标
算法
-
利用正向传播方法计算每层的激活单元
-
利用训练集的真实结果与神经网络的预测结果求出最后一层的误差
-
最后利用该误差运用反向传播法计算出直至第二层的所有误差。
-
便可以计算代价函数的偏导数
反向传播的直观理解
前向传播原理
-
2个输入单元;2个隐藏层(不包含偏置单元);1个输出单元
-
上标ii表示的是第几层,下标表示的是第几个特征或者说属性
图中有个小问题,看截图的右下角!!!
根据上面的反向传播法得到的结论:
反向传播原理
参数展开
上面的式子中实现了怎么利用反向传播法计算代价函数的导数,在这里介绍怎么将参数从矩阵形式展开成向量形式
总结
首要工作
在构建神经网络的时候,首先考虑的是如何选择网络结构:多少层和每层多少个神经单元
-
第一层的单元数即我们训练集的特征数量。
-
最后一层的单元数是我们训练集的结果的类的数量。
-
如果隐藏层数大于1,确保每个隐藏层的单元个数相同,通常情况下隐藏层单元的个数越多越好。
训练神经网络步骤
-
参数的随机初始化
-
利用正向传播方法计算所有的hθ(x)
-
编写计算代价函数 J_j 的代码
-
利用反向传播方法计算所有偏导数
-
利用数值检验方法检验这些偏导数
-
使用优化算法来最小化代价函数