神经网络是一层一层组织起来的一个层状结构。简单来说,就是由输入层,隐藏层,输出层组成。

输入层用于接受数据,节点数等于输入特征的维度。

隐藏层也就是神经网络进行思考的地方。

输出层就是产生预测结果。

神经网络最重要的一个步骤就是学习,那么他是如何学习呢?

实质上就是重复“进行前向传播\rightarrow计算损失函数\rightarrow进行反向传播\rightarrow进行更新权重”,从而重复“反向传播”从而的得到最优参数。

导数

指的是函数值随自变量变化的速率

方向导数

指的是多元函数在某一个特定方向上的导数值。

最常用的方法就是利用梯度下降法,通过计算损失函数关联模型参数的梯度,从而优化模型参数。

简单的就是举一个例子:

目标是得到预测的房价,输入为面积,输出为房价。

该神经网络只有输入层,输出层。输出层没有激活函数

y_{p}y_{prediction}的简称,y_{t}y_{true}

这是输出层:y_{p}=w*x+b

均方误差:L=0.5(y_{p}-y_{t})^{2}

输入100平方米,真实值为300万元

x=100,y_{t}=300

设置随机值为w=1.5,b=50

y_{p}=1.5*x+50,于是y_{p}=200

误差为200-300=-100

损失函数为L=0.5(y_{p}-y_{t})^{2}=0.5*10000=5000

计算损失函数对w的梯度

\frac{\partial L}{\partial w}=\frac{\partial L}{\partial y_{p}}*\frac{\partial y_{p}}{\partial w}=(y_p-y_t)*x=(200-300)*100=-10000

计算损失函数对b的梯度

\frac{\partial L}{\partial b}=\frac{\partial L}{\partial y_p}*\frac{\partial y_p}{\partial x}=(y_p-y_t)*1=-100

利用学习率更新模型参数

学习率为lr=0.0001

w_{new}=w-lr*\frac{\partial L}{\partial w}=1.5-0.0001*(-10000)=1.5+1=2.5

b_{new}=b-lr*\frac{\partial L}{\partial b}=50-0.0001*(-100)=50.01

更新完一轮

y_p=2.5*x+50.01=300.01

如果有激活函数当然也要给激活函数求导,所以激活函数一定要可导

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐