神经网络概念新颖解释+BP算法


1 概念

这些图片主要是摘选自B站up主3Blue1Brown创作的深度学习 Deep Learning。摘抄这些up主在mnist数字识别中对神经网络的complex concepts的visualization或者assumption,是期望获得对神经网络概念更加形象化的认识。

1.2 记号新颖解释

记号解释
输入值图片可以视为 A 28 × 28 \displaystyle A_{28 \times 28} A28×28灰度值矩阵展开得到 x ⃗ 784 × 1 \vec x_{784\times 1} x 784×1
weights形象表明连接的强弱
bias形象表明神经元是否更容易被激活
lossfunction(costfunction)告诉电脑选的参数多糟
激活值activation神经元视为一个装有激活值的容器

在这里插入图片描述
在这里插入图片描述

1.3 各层含义

在这里插入图片描述

  • 第一层为灰度图片的输入值灰度矩阵 A 28 × 28 A_{28\times 28} A28×28

  • 中间层称为隐含层hidden layers,可先视为黑箱

  • 最后一层softmax将倒数第二层输入值映射到 ( 0 , 1 ) (0,1) (0,1)之间作为分成十个数字的概率

1.4 各层功能的新颖解释

在这里插入图片描述

up主的比较新颖的解释,认为第二层点亮的那些神经元能识别组成9的短边,然后第三层点亮的那些神经元能点亮组成9的更完整的图案,然后最终第四层点亮的神经元能识别一个完整的9。尽管up主最后说这种想法是错误的,但是我觉得这种想法本身很新颖。

2. 前馈神经网络

数据从输入开始,流过中间计算过程,最终到达输出层。
模型的输入和输出两者之间没有反馈。

img

比如这张图输入数据 x T x^T xT流经激励函数,再流到代价函数 J J J,而中间没有向回流反馈

3. BP算法

3.1 单个神经元

img
  • 设输入为 x ⃗ = [ x 1 , x 2 , x 3 ] T \vec x=[x_1,x_2,x_3]^T x =[x1,x2,x3]T y y y为目标值

  • 进行前向传播

z = ∑ i = 1 3 w i x i + b = w ⃗ ⋅ x ⃗ + b z=\sum_{i=1}^3w_ix_i+b=\vec w\cdot \vec x+b z=i=13wixi+b=w x +b

a = f ( z ) = 1 1 + e − z a=f(z)=\frac{1}{1+e^{-z}} a=f(z)=1+ez1

J ( w , b , x , y ) = 1 2 ∥ ( a − y ) ∥ 2 J(w,b,x,y)=\frac{1}{2}\Vert (a-y)\Vert^2 J(w,b,x,y)=21(ay)2

  • 进行反向传播

∂ J ∂ a = − ( y − a ) \frac{\partial J}{\partial a}=-(y-a) aJ=(ya)

∂ J ∂ z = ∂ J ∂ a ∂ a ∂ z = ∂ J ∂ a ∗ ( a ( 1 − a ) ) \frac{\partial J}{\partial z}=\frac{\partial J}{\partial a}\frac{\partial a}{\partial z}=\frac{\partial J}{\partial a}*(a(1-a)) zJ=aJza=aJ(a(1a))

∂ J ∂ w = ∂ J ∂ z ∂ z ∂ w = ∂ J ∂ z x T \frac{\partial J}{\partial w}=\frac{\partial J}{\partial z}\frac{\partial z}{\partial w}=\frac{\partial J}{\partial z}x^T wJ=zJwz=zJxT

∂ J ∂ b = ∂ J ∂ z ∂ z ∂ b = ∂ J ∂ z \frac{\partial J}{\partial b}=\frac{\partial J}{\partial z}\frac{\partial z}{\partial b}=\frac{\partial J}{\partial z} bJ=zJbz=zJ

​ 从代价函数开始,从输出到输入,求各节点的偏导,在这个过程中 先后求出 ∂ J ∂ a 、 ∂ J ∂ z 、 ∂ J ∂ w 、 ∂ J ∂ b \frac{\partial J}{\partial a}、\frac{\partial J}{\partial z}、\frac{\partial J}{\partial w}、\frac{\partial J}{\partial b} aJzJwJbJ

  • 然后利用梯度下降法更新w,b

w = w − λ ∂ J ∂ w w=w-\lambda \frac{\partial J}{\partial w} w=wλwJ

b = b − λ ∂ J ∂ b b=b-\lambda\frac{\partial J}{\partial b} b=bλbJ

  • 然后再重复进行前向算法查看 J ( w , b , x , y ) J(w,b,x,y) J(w,b,x,y)是否达到要求或者达到迭代步数

3.2 多层神经网络

img

θ ⃗ = [ w 0 , w 1 , w 2 , ⋯   , w m , b 0 , b 1 , ⋯   , b n ] T \vec \theta=[w_0,w_1,w_2,\cdots,w_{m},b_0,b_1,\cdots,b_n]^T θ =[w0,w1,w2,,wm,b0,b1,,bn]T

和上面的单个神经元BP算法类似,通过反向传播获得梯度 ∇ l o s s f u n c t i o n ( θ ⃗ ) \nabla lossfunction(\vec \theta) lossfunction(θ )

更新参数: θ ⃗ = θ ⃗ − λ ∇ l o s s f u n c t i o n ( θ ⃗ ) \vec \theta=\vec \theta-\lambda\nabla lossfunction(\vec \theta) θ =θ λlossfunction(θ )

最终求得的就是最优的 θ ⃗ \vec \theta θ 使得 l o s s f u n c t i o n lossfunction lossfunction最小

4. 模型过程

4.1 回归问题

y = w x + b y=wx+b y=wx+b一维线性预测为例

首先初始化w和b

定义模型model: y = f ( w x + b ) y=f(wx+b) y=f(wx+b)经过隐含层求出预测值 y ^ \hat y y^

定义均方误差 l o s s f u n c t i o n = ∑ i = 1 n ( y ^ i − y i ) 2 n \displaystyle lossfunction=\frac{\sum_{i=1}^n(\hat y_i-y_i)^2}{n} lossfunction=ni=1n(y^iyi)2

然后利用梯度下降求出适当的 w , b w,b w,b使得 l o s s f u n c t i o n lossfunction lossfunction达到条件之后退出迭代

再将不在样本中的x带入model就可以得到预测值

4.2 分类问题

以mnist图像识别为例

首先给出一个初始化的w和b

定义模型 model: y = f ( w x + b ) y=f(wx+b) y=f(wx+b)经过隐含层输出然后利用softmax分类器求出预测的概率 p r e d = [ p ( x 1 ) , p ( x 2 ) , ⋯   , p ( x n ) ] pred=[p(x_1),p(x_2),\cdots,p(x_n)] pred=[p(x1),p(x2),,p(xn)]

然后 l o s s f u n c t i o n lossfunction lossfunction为pred和ans的交叉熵

利用梯度下降求得适当的 w , b w,b w,b使得 l o s s f u n c t i o n lossfunction lossfunction到达要求之后退出迭代

最终输出准确率(用 t f . a r g m a x ( p r e d , 1 ) = = t f . a r g m a x ( y , 1 ) tf.argmax(pred,1)==tf.argmax(y,1) tf.argmax(pred,1)==tf.argmax(y,1)来统计在testdata里面分类成功的个数)

再将不在样本中的x带入model就可以得到预测分类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值