神经网络入门篇:神经网络的梯度下降(Gradient descent for neural networks)
神经网络的梯度下降
- 在这篇博客中,讲的是实现反向传播或者说梯度下降算法的方程组
单隐层神经网络会有,,,这些参数,还有个表示输入特征的个数,表示隐藏单元个数,表示输出单元个数。
在这个例子中,只介绍过的这种情况,那么参数:
矩阵的维度就是(),就是维向量,可以写成,就是一个的列向量。
矩阵的维度就是(),的维度就是维度。
还有一个神经网络的成本函数,假设在做二分类任务,那么的成本函数等于:
Cost function:
公式:
loss function和之前做logistic回归完全一样。
训练参数需要做梯度下降,在训练神经网络的时候,随机初始化参数很重要,而不是初始化成全零。当参数初始化成某些值后,每次梯度下降都会循环计算以下预测值:
公式1.28:
公式1.29:
其中
公式1.30:
公式1.31:
正向传播方程如下(之前讲过):
forward propagation:
(1)
(2)
(3)
(4)
反向传播方程如下:
back propagation:
公式1.32:
公式1.33:
$ dW^{[2]} = {\frac{1}{m}}dz{[2]}A $
公式1.34:
公式1.35:
$ dz^{[1]} = \underbrace{W^{[2]T}{\rm d}z{[2]}}_{(n,m)}\quad\underbrace{{g{[1]}}{'}}_{activation ; function ; of ; hidden ; layer}\quad\underbrace{(z{[1]})}_{(n,m)} $
公式1.36:
公式1.37:
上述是反向传播的步骤,注:这些都是针对所有样本进行过向量化,是的矩阵;这里np.sum
是python的numpy命令,axis=1
表示水平相加求和,keepdims
是防止python输出那些古怪的秩数,加上这个确保阵矩阵这个向量输出的维度为这样标准的形式。
目前为止,计算的都和Logistic回归十分相似,但当开始计算反向传播时,需要计算,是隐藏层函数的导数,输出在使用sigmoid函数进行二元分类。这里是进行逐个元素乘积,因为和这两个都为矩阵;
还有一种防止python输出奇怪的秩数,需要显式地调用reshape
把np.sum
输出结果写成矩阵形式。
以上就是正向传播的4个方程和反向传播的6个方程,这里是直接给出的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通