【Stanford机器学习笔记】7-Neural Networks: Learning

本文深入探讨神经网络训练过程,从成本函数出发,详细解释了代价函数的构成及优化方法,包括前向传播与后向传播算法的核心原理。通过实例分析,指导读者如何正确初始化参数、实现自动计算代价函数及利用高级优化算法来最小化代价函数,确保神经网络的有效训练。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一章节中主要讲了神经网络的模型表达,但对于其中的参数如何求解没有讲,这一章主要讲如何训练神经网络得到最优参数。

1. Cost function of Neural Networks

(1)为了方便,首先定义以下参量:

  • K为类别的个数
  • L为神经网络的层数
  • sl为第L层神经元个数

这里写图片描述

(2)代价函数
神经网络的代价函数和逻辑回归模型的代价函数形式上相似,只是多了多类别的处理。
逻辑回归模型的代价函数:

J(θ)=1m[i=1my(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]+λ2mj=1nθ2j

神经网络的代价函数:

J(Θ)=1m[i=1mk=1Ky(i)klog(hθ(x(i)))k+(1y(i)k)log(1hθ(x(i)))k]+λ2ml=1L1i=1slj=1sl+1(Θlji)2

这里写图片描述

2. Backpropagation Algorithm

(1)训练过程
神经网络的训练方法本质上是梯度下降法,主要包括两个过程:

  • 前向传播(Forwardpropagation)
  • 后向传播(Backpropagation)

核心是:

  • 计算代价函数J(Θ)
  • 最小化代价函数

利用高级优化算法训练神经网络需要计算J(Θ)Θ(l)ijJ(Θ),下面主要讲如何计算代价函数的偏导数。

这里写图片描述

(2)前向传播(Forwardpropagation)

这里写图片描述

(3)后向传播(Backpropagation)

A. 假设我们只有一个训练样本
反向传播的关键在于求每一层上各神经元的误差δ(l)j,以图中的4层神经网络为例,计算过程如下:

  • 输出层→隐藏层:残差 = -(输出值-样本值) * 激活函数的导数
  • 隐藏层→隐藏层:残差 = (右层每个节点的残差加权求和)* 激活函数的导数

这里写图片描述

B. 假设我们有许多训练样本

这里写图片描述

3. Backpropagation Algorithm Intuition

(1)前向传播(Forward propagation)

这里写图片描述

(2)反向传播(Backpropagation)
根据代价函数可知,反向传播的作用就是使输出层的输出值与类别值相差最小

这里写图片描述

反向传播算法实际上就是在计算那些误差项δ(l)j,这些误差实质上是计算的代价函数关于中间项zlj的偏微分。

这里写图片描述

4. Implementation Note: Unrolling Parameters

为了使用某些高级优化算法,一般需要把参数矩阵和导数矩阵转化成向量形式,这样有利用计算,一般需要使用reshape命令。

5. Gradient Checking

反向传播算法是一种复杂的算法,如果你的编码出现错误,将会造成诡异的结果,所以需要进行梯度检验以保证算法的正确性。检查的方法是比较数值导数与反向传播算法中得出的倒数基本相等。

这里写图片描述
这里写图片描述

6. Random Initialization

神经网络的初始参数需要随机初始化,否则神经网络无法进行优化,总会得到相同的神经元。

这里写图片描述
这里写图片描述

7. Summary

(1)训练神经网络进行机器学习,首先要建立一个神经网络的结构,包括层数以及每一层的神经元个数,原则如下:

  • 输入层个数即是你样本的特征个数
  • 输出层即是你类别的个数
  • 隐藏层是无法准确确定的,一般默认一个隐藏层,如果有多个隐藏层,则最好保证每个隐藏层的神经元个数相等(一般越多越好)

这里写图片描述

(2)训练神经网络的步骤是:

  • 参数矩阵的初始化
  • 针对每一个训练样本,执行前向传播得到输出层的激励函数值
  • 编程实现自动计算大家函数J(Θ)
  • 执行后向传播,计算代价函数关于每个参数的偏导数
    这个过程主要在于计算激励值a(l)和误差项δ
  • 利用梯度检验算法比较数值导数和反向传播计算的倒数基本相等以判断代码或模型的正确性(如果正确则删除)
  • 利用梯度下降算法或其他高级优化算法使得代价函数最小,进而优化参数矩阵

这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值