深度学习系列——反向传播

前言

什么是机器学习

“A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P if its performance at tasks in T, as measured by P, improves with experience E.”
一个电脑程序要完成任务(T),如果程序获取的关于(T)的经验(E)越多就表现(P)得越好,那么我们就可以说这个程序‘学习’了关于(T)的经验。

Tom Mitchell总结的可以说是非常到位了。从这个定义出发机器学习涉及4个方面:

  1. 任务(T):需要完成的工作,一般是对新数据的预测(分类或回归)。
  2. 程序(或模型):用来完成任务的工具。
  3. 经验(E):也就是我们通常所说的数据。
  4. 表现(P):计算预测值与实际值的差距得到的指标(精确率、召回率、 F 1 F_1 F1 Score)。

机器学习的过程

  1. 对于特定任务,构建模型
    (1.1) y = f θ ( x ) y=f_\theta(x)\tag{1.1} y=fθ(x)(1.1) 其中 x x x 是输入, y y y 是输出, θ \theta θ 是参数。

  2. 利用历史数据 X h i s X_{his} Xhis,优化模型,选择合适的参数 θ \theta θ

  3. 预测新的数据(机器没有学习的数据) X n e w X_{new} Xnew 得到预测结果 Y n e w Y_{new} Ynew 并评估预测情况。

梯度下降法

因为机器学习的评估需要用到新的数据 X n e w X_{new} Xnew,而机器在学习的过程中只能看见 X h i s X_{his} Xhis, 因此需要建立只依赖训练数据以及模型参数的评价标准,也就是目标函数 J ( x , θ ) J(x,\theta) J(x,θ) (训练集 X h i s X_{his} Xhis 可以看做是不变的,所以可以记作 J ( θ ) J(\theta) J(θ))。

有了目标函数,机器学习就成为了最优化问题,学习的过程就是最小化目标函数 J ( θ ) J(\theta) J(θ)

因为 X h i s X_{his} Xhis θ \theta θ 的维数很大,不能直接得到最优解,因此只能通过间接方法逐步减小 J ( θ ) J(\theta) J(θ)。梯度下降法正是间接得到最优解的方法。

梯度下降法步骤

  1. t = 0 t =0 t=0, 随机初始化参数 θ 0 \theta_0 θ0
  2. t = t + 1 t = t + 1 t=t+1
  3. 计算目标函数 J J J 关于参数 θ \theta θ 的导数 Δ t = ∂ J ∂ θ t − 1 \Delta_t = \frac{\partial J}{\partial \theta_{t-1}} Δt=θt1J
  4. 更新参数 θ t = θ t − 1 − λ Δ t − 1 \theta_{t} = \theta_{t-1} - \lambda\Delta_{t-1} θt=θt1λΔt1
  5. 如果找到最优解,结束;否则,执行步骤2

深度学习

“Deep learning is a particular kind of machine learning that achieves great power and flexibility by learning to represent the world as nested hierarchy of concepts, with each concept defined in relation to simpler concepts, and more abstract representations computed in terms of less abstract ones.”
深度学习是一种特殊的机器学习,通过学习将世界表示为概念的嵌套层次,其中每个抽象的概念都由更简单、更具体的概念表示,从而获得巨大的能力和灵活性。

深度学习属于机器学习的一个子领域,它的模型是网络结构。

深度学习与传统的机器学习的区别在于:

  1. 能够构建具备大量参数的模型。
  2. 可以表示不同粒度的抽象特征。
  3. 模型构建简单。

反向传播

深度学习模型的目标函数一般为
(1.2) J ( θ ) = L ( θ ) + λ ∣ ∣ θ ∣ ∣ k J(\theta)=L(\theta)+\lambda||\theta||_k\tag{1.2} J(θ)=L(θ)+λθk(1.2)

其中, L ( θ ) L(\theta) L(θ) 是损失函数,表示预测值与实际值的误差; λ ∣ ∣ θ ∣ ∣ k \lambda||\theta||_k λθk是正则项,用于约束参数。

R ( θ ) = λ ∣ ∣ θ ∣ ∣ k R(\theta)=\lambda||\theta||_k R(θ)=λθk

则有
∂ J ∂ θ = ∂ L ∂ θ + ∂ R ∂ θ \frac{\partial J}{\partial \theta}=\frac{\partial L}{\partial \theta}+\frac{\partial R}{\partial \theta} θJ=θL+θR

其中, ∂ R ∂ θ \frac{\partial R}{\partial \theta} θR 可根据微分公式直接得到。

一般的深度学习模型结构可以表示如下:
神经网络模型图
x x x 表示输入, h i h_i hi 表示第 i i i 个隐藏层, y y y 表示输出。

很多网络模型可能比图示的模型要复杂很多,但是它们都有一个共同点:网络模型是有向的不循环图,有起点(输入 x x x)和终点(输出 y y y),节点之间存在依赖的传递关系。
n j n_j nj 表示节点, S j S_j Sj 表示节点的集合,并且假设
n 1 = φ 1 ( n 2 , S 1 ) n_1=\varphi_1(n_2, S_1) n1=φ1(n2,S1) n 2 = φ 2 ( n 3 , S 2 ) n_2=\varphi_2(n_3, S_2) n2=φ2(n3,S2) 即节点 n 1 n_1 n1 依赖于节点 n 2 n_2 n2,节点 n 2 n_2 n2 依赖于节点 n 3 n_3 n3
则对于节点 n 1 n_1 n1 n 2 n_2 n2 n 3 n_3 n3,有
n 1 , n 2 , n 3 ∉ S 1 n_1, n_2, n_3\notin S_1 n1,n2,n3/S1 n 1 , n 2 , n 3 ∉ S 2 n_1,n_2,n_3\notin S_2 n1,n2,n3/S2 所以更复杂的模型也满足下面的推导。

h 0 = x h_0=x h0=x h m + 1 = y h_{m+1}=y hm+1=y,则参数 θ i ( i = 0 , 1 , ⋯   , m ) \theta_i(i=0,1,\cdots,m) θi(i=0,1,,m) 表示从 h i h_i hi 层到下一层的参数,且层与层之间的关系可以表示为
(1.3) h i + 1 = f m ( h i , θ i ) h_{i+1}=f_m(hi,\theta_i)\tag{1.3} hi+1=fm(hi,θi)(1.3) 由此,有
y = f m ( h m , θ m ) y=f_m(h_m,\theta_m) y=fm(hm,θm)

L ( θ ) L(\theta) L(θ) 表示模型输出 y y y 与实际值 y ^ \hat y y^ 的误差,因此有
(1.4) L = E ( y ) L=E(y)\tag{1.4} L=E(y)(1.4)


L = E ( f m ( h m , θ m ) ) L=E(f_m(h_m,\theta_m)) L=E(fm(hm,θm))

由链式法则,有
(1.5) ∂ L ∂ θ m = ∂ L ∂ y ⋅ ∂ y ∂ θ m \frac{\partial L}{\partial \theta_m}=\frac{\partial L}{\partial y}\cdot\frac{\partial y}{\partial \theta_m}\tag{1.5} θmL=yLθmy(1.5)


∂ L ∂ θ m = ∂ L ∂ h m + 1 ⋅ ∂ h m + 1 ∂ θ m \frac{\partial L}{\partial \theta_m}=\frac{\partial L}{\partial h_{m+1}}\cdot\frac{\partial h_{m+1}}{\partial \theta_m} θmL=hm+1Lθmhm+1

同理可以得到,对 ∀ i = 0 , 1 , ⋯   , m − 1 \forall i=0,1,\cdots,m-1 i=0,1,,m1,有
(1.6) ∂ L ∂ θ i = ∂ L ∂ h i + 1 ⋅ ∂ h i + 1 ∂ θ i \frac{\partial L}{\partial \theta_i}=\frac{\partial L}{\partial h_{i+1}}\cdot\frac{\partial h_{i+1}}{\partial \theta_i}\tag{1.6} θiL=hi+1Lθihi+1(1.6)

所以在梯度下降的第3步中,目标函数 J J J 对参数 θ i \theta_i θi 的导数总是由 J J J h i h_i hi 的导数以及 h i h_i hi θ i \theta_i θi 的导数算得,就好像误差从最后一层依次向前传递一样。

Reference

  1. 深度学习VS机器学习——到底什么区别
  2. 深入浅出–梯度下降法及其实现
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值