由预测房价的例子引出一个基本的神经网络结构:
结构化数据:每个特征都有着清晰的定义
非结构化数据:如音频、图像、文本等,其每个特征可以是图像中的像素或者文本中的单词。
后面需要用到的一些符号说明:
Logistic回归用于二分类问题,预测输出的概率
右上角的(i)表示第i个训练样本
Logistic回归损失函数的定义及解释(凸的便于优化)
损失函数衡量了在单个训练样本上的表现
成本函数衡量的是在全体训练集上的表现
梯度下降法的实现方法
函数导数的介绍(跳过)
首先计算神经网络的输出,紧接着进行一个反向传输操作(用来计算对应的梯度或者导数)
注:链式法则(chain rule)求导数,反向传播写代码时直接用da表示输出对变量a的导数
计算出dw1,dw2,db后,更新w1,w2,b
这里dw1,dw2,db作为累加器,计算在所有样本上的梯度
两个for循环待向量化(Vectorization):遍历所有样本,遍历样本的每个特征
去掉一个for循环(同时处理所有特征):
一步迭代的向量化实现(同时处理所有m个训练样本):
所有样本横向堆叠在X里
再去掉一个for循环,向量化同时计算m个训练数据的梯度:
总结:实现logistic回归的梯度下降一次迭代(完成正向和反向传播,实现对所有训练样本进行预测和求导)
广播的一些通用规则:
右上角[i]表示这些节点相关的量:层。注意与(i)相区分
直觉:神经网络类似于logistic,不过是反复计算z,a
2层神经网络:隐藏层和输出层(输入层称第0层,不包含进来)
各层参数维度的确定:对于隐藏层(4,3),有4个节点,3个输入特征
a[l]i:第l层的第i个节点
一个小圈圈执行两步计算
当我们向量化时一条经验法则:当在一层中有不同的节点,纵向堆叠起来
计算神经网络的输出只需要这四行代码(单个训练样本时 计算神经网络的预测)
将不同训练样本向量化
横向指标对应了不同的训练样本
竖向指标对应了神经网络里的不同节点
第一个黑点对应第一个训练样本,第一个隐藏单元的激活函数
m个训练样本向量化实现的解释:
如果将输入成列向量堆叠,运算后得到成列堆叠的输出
同样的计算不断重复
如果使用线性激活函数,无论你的神经网络有多少层,由于线性函数的组合还是线性函数,所以不如直接去掉全部隐藏层
n[0],n[1],n[2]表示各层神经元的维度
前向传播:四个等式
后向传播:六个等式
总结
完全对称,输出的每行数值都一样
参数太大的话,激活函数接近饱和,梯度小,减慢学习速度
多个样本时,z,a,x的维度发生变化,Z,A,X变成m列(样本个数),反向传播d..维度与其一样:
初始化一个向量化反向传播的方法: