神经网络与深度学习 记录贴



一、线性分类与感知机

1.1 线性回归

1.1.1 定义

利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法
最简单的方法就是直线(最小二乘法拟合直线)

1.1.2 线性回归要素

  • 训练集(数据集),是我们流程中的输入数据,一般称为 x x x
  • 输出数据,一般称为 y y y
  • 拟合的函数(或者称为假设或者模型):一般写作 y = h ( x ) y=h(x) y=h(x) ;如果是直线则为 y = k x + b y=kx+b y=kx+b
  • 训练数据的条目数:一条训练数据是由一对输入和输出数据组成的,输入数据的维度n(特征的个数)

1.1.3 学习过程

学习过程

1.1.4 举例

  • 假设房价和房屋面积、年限有关,则我们可以做出一个二维线性函数: y = θ 1 x 1 + θ 2 x 2 + θ 0 y=\theta_1x_1+\theta_2x_2+\theta_0 y=θ1x1+θ2x2+θ0
    进一步扩展问题,假设和 n n n 个元素有关,令

θ = [ θ 1 , θ 2 , ⋅ ⋅ ⋅ θ n ] T , X = [ x 1 , x 2 , ⋅ ⋅ ⋅ x 3 ] T \pmb{\theta}=[\theta_1,\theta_2,···\theta_n]^T , \pmb{X} = [x_1,x_2,···x_3]^T θ=[θ1,θ2,⋅⋅⋅θn]T,X=[x1,x2,⋅⋅⋅x3]T

  • 则有:

y = h θ ( X ) = θ T X y=h_{\theta}(\pmb{X})=\pmb{\theta}^T\pmb{X} y=hθ(X)=θTX

  • 假设给定样本 ( X ( i ) , y ( i ) ) (\pmb{X}^{(i)},y^{(i)}) (X(i),y(i))
  • 构造代价(误差、损失)函数: J ( θ ) = 1 2 ∑ i = 1 m ( y ( i ) − h θ ( X ( i ) ) ) 2 J(\pmb{\theta})=\frac{1}{2}\sum_{i=1}^{m}(y^{(i)}-\pmb{h}_{\pmb{\theta}}(\pmb{X}^{(i)}))^2 J(θ)=21i=1m(y(i)hθ(X(i)))2(目标代价函数为二次型形式)
  • 目标:找到超平面参数 θ \pmb{\theta} θ,使 J ( θ ) \pmb{J}(\pmb{\theta}) J(θ)最小,即求解 m i n θ J ( θ ) \underset {\theta}{min}\pmb{J}(\pmb{\theta}) θminJ(θ)
  • 求解:令 ∂ J ( θ ) ∂ θ \frac{\partial{\pmb{J}(\pmb{\theta})}}{\partial{\pmb{\theta}}} θJ(θ) = 0 ,
  • 可以得到 θ = ( X T X ) − 1 X T y \pmb{\theta} = \pmb{(X^TX)^{-1}X^Ty} θ=(XTX)1XTy
    其中
    X = [ ( x ( 1 ) ) T ( x ( 1 ) ) T ⋯ ( x ( N ) ) T ] , y = [ y ( 1 ) y ( 2 ) ⋯ y ( N ) ] \pmb{X}=\left[ \begin{matrix} (\pmb{x}^{(1)})^T \\ (\pmb{x}^{(1)})^T \\ \cdots \\ (\pmb{x}^{(N)})^T \end{matrix} \right], y=\left[ \begin{matrix} y^{(1)} \\ y^{(2)} \\ \cdots \\ y^{(N)} \end{matrix} \right] X= (x(1))T(x(1))T(x(N))T ,y= y(1)y(2)y(N)
    注意:这是解析解,只要维数不高速度很快

1.2 线性二分类问题

1.2.1 线性分类

  • 定义:线性分类器透过特征的线性组合来做出分类决定,以达到此种目的。简言之,样本通过直线(或超平面)可分
    在这里插入图片描述
  • 输入: 特征向量
  • 输出:如果是二分类问题,则为0和1;或者是属于某类的概率,即0-1之间的数
  • 具体做法
    给定样本 ( X ( i ) , y ( i ) ) (\pmb{X}^{(i)},y^{(i)}) (X(i),y(i)),这里 y ( i ) y^{(i)} y(i)只能取0,1
    构造代价(误差函数): J ( θ ) = 1 2 ∑ i = 1 m ( y ( i ) − h θ ( X ( i ) ) ) 2 J(\pmb{\theta})=\frac{1}{2}\sum_{i=1}^{m}(y^{(i)}-\pmb{h}_{\pmb{\theta}}(\pmb{X}^{(i)}))^2 J(θ)=21i=1m(y(i)hθ(X(i)))2
    这里的 h θ ( X ( i ) ) \pmb{h}_{\pmb{\theta}}(\pmb{X}^{(i)}) hθ(X(i))是S函数,因此又称softmax回归
    目标就是找到超平面参数 θ \pmb{\theta} θ使 J ( θ ) J(\pmb{\theta}) J(θ)最小,使用的迭代的方法,梯度下降法寻找

1.3 对数回归

对数回归是一种广义线性模型,用于处理二分类问题。在对数回归中,我们希望预测一个二元变量 y y y的概率,其取值为 0 0 0 1 1 1。如果我们将所有的输入特征表示为向量 x x x,则可以将对数回归表示为:

P ( y = 1 ∣ x ) = 1 1 + e − w T x P(y=1|x) = \frac{1}{1+e^{-w^Tx}} P(y=1∣x)=1+ewTx1

其中, w w w是权重向量。我们可以通过最大化似然函数来估计权重向量 w w w。似然函数可以表示为:

L ( w ) = ∏ i = 1 n P ( y i ∣ x i ) y i ( 1 − P ( y i ∣ x i ) ) 1 − y i L(w) = \prod_{i=1}^{n} P(y_i|x_i)^{y_i}(1-P(y_i|x_i))^{1-y_i} L(w)=i=1nP(yixi)yi(1P(yixi))1yi

通过最大化似然函数,我们可以得到权重向量 w w w的估计值。

1.4 多分类回归

多分类回归是一种广义线性模型,用于处理多分类问题。在多分类回归中,我们希望将输入特征 x x x映射到多个类别中的一个。如果我们有 K K K个类别,则可以将多分类回归表示为:

P ( y = k ∣ x ) = e w k T x ∑ j = 1 K e w j T x P(y=k|x) = \frac{e^{w_k^Tx}}{\sum_{j=1}^{K} e^{w_j^Tx}} P(y=kx)=j=1KewjTxewkTx

其中, w k w_k wk是属于类别 k k k的权重向量。我们可以通过最大化似然函数来估计所有的权重向量 w k w_k wk。似然函数可以表示为:

L ( w ) = ∏ i = 1 n ∏ k = 1 K P ( y i = k ∣ x i ) 1 y i = k L(w) = \prod_{i=1}^{n} \prod_{k=1}^{K} P(y_i=k|x_i)^{1{y_i=k}} L(w)=i=1nk=1KP(yi=kxi)1yi=k

通过最大化似然函数,我们可以得到所有权重向量 w k w_k wk的估计值。

对数回归和多分类回归是两种常见的广义线性模型。对数回归用于处理二分类问题,而多分类回归用于处理多分类问题。在这两种模型中,我们可以通过最大化似然函数来估计权重向量。这些模型可以用于各种分类问题,并且在实际应用中得到广泛应用。

1.5 神经元模型

深度学习神经元模型是深度学习的基本单元,它是一种基于数学模型的计算单元,用于实现人工神经网络。神经元模型由多个输入和一个输出组成,每个输入都有一个对应的权重,输出是所有输入和权重的加权和经过一个激活函数计算得到的结果。以下是深度学习神经元模型的基本结构:

在这里插入图片描述
其中,输入 x i x_i xi通过权重 w i w_i wi进行加权求和,得到加权和 z z z。加权和 z z z再通过激活函数 ϕ \phi ϕ进行非线性变换,得到神经元的输出 y y y。常用的激活函数包括sigmoid函数、ReLU函数等。

1.5.1 激活函数

激活函数是神经元模型中非常重要的一部分,它决定了神经元模型的非线性特性。激活函数的主要作用是将神经元模型的输出限制在一个固定的范围内,以便更好地适应不同的任务需求。以下是一些常用的激活函数:

  • Sigmoid函数:Sigmoid函数是一种常用的激活函数,它可以将任意实数值映射到(0, 1)之间的一个值。Sigmoid函数的数学公式为 ϕ ( z ) = 1 1 + e − z \phi(z) = \frac{1}{1 + e^{-z}} ϕ(z)=1+ez1
  • ReLU函数:ReLU函数是一种常用的激活函数,它可以将负数部分截断为0,保留正数部分。ReLU函数的数学公式为 ϕ ( z ) = max ⁡ ( 0 , z ) \phi(z) = \max(0, z) ϕ(z)=max(0,z)
  • Softmax函数:Softmax函数是一种用于多分类任务的激活函数,它可以将神经元模型的输出转化为概率值。Softmax函数的数学公式为 ϕ ( z j ) = e z j ∑ k = 1 K e z k \phi(z_j) = \frac{e^{z_j}}{\sum_{k=1}^{K}e^{z_k}} ϕ(zj)=k=1Kezkezj,其中 K K K是类别数。

1.5.2 小结

深度学习神经元模型是深度学习的基本单元,它由多个输入和一个输出组成,通过权重和激活函数实现信息的传递和处理。激活函数是神经元模型中非常重要的一部分,它决定了神经元模型的非线性特性。常用的激活函数包括Sigmoid函数、ReLU函数和Softmax函数等。

1.6 感知机模型

感知机是一种基本的二分类模型,是深度学习中最早的神经网络模型之一。感知机模型由多个输入和一个输出组成,每个输入都有一个对应的权重,输出是所有输入和权重的加权和经过一个阶跃函数计算得到的结果。

1.6.1 具体做法

输入 x i x_i xi通过权重 w i w_i wi进行加权求和,得到加权和 z z z。加权和 z z z再通过阶跃函数 ϕ ( z ) \phi(z) ϕ(z)进行非线性变换,得到感知机的输出 y y y。阶跃函数通常是一个符号函数,即当 z z z大于0时,输出为1,否则输出为-1。

感知机模型的训练过程就是对权重 w w w的调整过程,以使感知机模型能够正确分类所有训练样本。感知机模型的学习算法包括原始形式的感知机学习算法和对偶形式的感知机学习算法。

1.6.2 优缺点

感知机模型有一些优点和缺点:

  • 优点:感知机模型具有简单、易于实现和快速训练等优点,适用于大规模数据集的处理任务。
  • 缺点:感知机模型的表示能力受限,只能解决线性可分问题;此外,感知机模型对噪声敏感,可能会导致过拟合问题。

为了解决感知机模型的局限性,人们发展了一系列更加强大的神经网络模型,如多层感知机、卷积神经网络和循环神经网络等。

二、多层前馈网络与误差反传算法

2.1 多层感知机

多层感知机模型是一种基于神经元模型构建的深度学习模型,它由多个全连接层和非线性激活函数组成,可以用于解决各种机器学习任务。以下是多层感知机模型的基本结构:
在这里插入图片描述
其中,输入 x x x经过第一层全连接层,得到第一层的输出 h 1 h_1 h1。第一层的输出 h 1 h_1 h1再经过第二层全连接层,得到第二层的输出 h 2 h_2 h2。第二层的输出 h 2 h_2 h2再经过一个输出层,得到模型的最终输出 y y y。全连接层中每个神经元都与前一层的所有神经元相连,每个连接都有一个权重,通过学习权重和偏置项,模型可以自动从数据中学习特征和模式,进而实现任务的目标。

2.2 BP算法

2.2.1多层前馈网络

反向传播算法是一种基于梯度下降的优化算法,用于训练多层前馈网络。其核心思想是通过反向传播算法,将输出误差从输出层向输入层逐层传递,并更新每个连接的权重和偏置项。以下是反向传播算法的基本流程:

  1. 前向传播:将输入数据经过多层前馈网络进行前向传播,得到输出结果。
  2. 计算误差:将输出结果与真实标签进行比较,计算误差。
  3. 反向传播:从输出层开始,将误差逐层向输入层反向传播,计算每个连接的梯度。
  4. 更新参数:根据每个连接的梯度,使用梯度下降法更新每个连接的权重和偏置项。

通过反向传播算法,可以高效地更新多层前馈网络中的权重和偏置项,从而提高模型的性能和泛化能力。

三、优化方法

3.1 病态曲率问题

在深度学习中,病态曲率问题是指损失函数在某些方向上的曲率非常大,而在另一些方向上的曲率非常小,导致梯度下降算法在更新参数时容易陷入局部最优解或者震荡。病态曲率问题通常发生在深度学习模型具有大量参数和非线性激活函数的情况下,因为这时损失函数的曲面通常非常复杂。

解决病态曲率问题的一种方法是使用动量法。

3.2 动量法

动量法是一种基于动量的优化算法,用于加速梯度下降的收敛速度,并减小震荡。动量法的基本思想是引入一个动量项,用于记忆历史梯度的方向和大小,从而在更新参数时综合考虑当前梯度和历史梯度的信息,加速梯度下降的收敛速度。

具体来说,动量法中每个参数的更新公式为:
在这里插入图片描述

其中, v t v_t vt表示第 t t t次迭代时历史梯度的加权平均, γ \gamma γ是动量系数, η \eta η是学习率, ∇ f ( θ t ) \nabla f(\theta_t) f(θt)表示当前时刻的梯度。

可以看出,动量法中更新参数的过程类似于物理学中的运动学中的加速度和速度的关系, v t v_t vt类似于速度, γ v t − 1 \gamma v_{t-1} γvt1类似于加速度。通过引入动量项,动量法可以减少梯度下降算法在病态曲率问题中的震荡,加速收敛速度,提高训练效果。

3.3 自适应梯度法

自适应梯度法是一种基于梯度信息自适应调整学习率的优化算法,可以提高梯度下降算法的收敛速度和准确性。自适应梯度法的基本思想是根据历史梯度信息调整每个参数的学习率,从而在不同方向上采用不同的学习率,适应损失函数的形状和参数的分布,提高收敛速度和准确性。
常用的自适应梯度法有Adagrad、Adadelta、RMSprop、Adam等。

3.3.1 Adagrad

Adagrad是一种基于梯度二次平均根(Root Mean Square)的自适应梯度法,用于调整每个参数的学习率。Adagrad通过累加历史梯度的平方根来调整每个参数的学习率,使得每个参数的学习率逐渐降低,从而在训练初期较大的学习率可以快速更新参数,训练后期较小的学习率可以细致地调整参数,提高训练效果。

具体来说,Adagrad中每个参数的更新公式为:
在这里插入图片描述
其中, g t , i g_{t,i} gt,i表示第 t t t次迭代时第 i i i个参数历史梯度的平方根, η \eta η表示学习率, ∇ f ( θ t , i ) \nabla f(\theta_{t,i}) f(θt,i)表示第 t t t次迭代时第 i i i个参数的梯度。

可以看出,Adagrad中每个参数的学习率是根据历史梯度信息自适应调整的,从而适应不同方向上的梯度信息,提高训练效果。

3.3.2 Adam算法

Adam(Adaptive Moment Estimation)是一种基于梯度下降优化算法,主要用于训练神经网络。Adam算法结合了RMSProp算法和Momentum算法的优点,能够更加高效地优化模型参数。

Adam算法的核心思想是利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率。具体来说,对于每个参数 w w w,Adam算法维护以下两个变量:

  • m m m:梯度的一阶矩估计,类似于Momentum算法中的动量,用于估计梯度的期望值;
  • v v v:梯度的二阶矩估计,用于估计梯度的方差。

Adam算法对每个参数的学习率进行自适应调整,具体地,每次更新参数时,学习率会被乘上一个衰减系数 1 − β 2 t 1 − β 1 t \frac{\sqrt{1-\beta_2^t}}{1-\beta_1^t} 1β1t1β2t ,其中 t t t 表示当前迭代次数, β 1 \beta_1 β1 β 2 \beta_2 β2 是可调节的超参数,通常取值为 0.9 0.9 0.9 0.999 0.999 0.999。这个衰减系数可以理解为对历史梯度信息的加权平均,使得学习率在迭代初期较大,在迭代后期逐渐变小,更加稳定。

3.4 常用优化方法(正则化方法)

正则化是一种降低模型复杂度的方法,可以防止模型过拟合。常见的正则化方法包括L1正则化、L2正则化、Dropout等。

3.4.1 L1正则化

L1正则化是一种线性模型的正则化方法,它通过在损失函数中增加L1范数惩罚项来惩罚参数的绝对值。其数学表达式为:
在这里插入图片描述
其中, α \alpha α 是正则化超参数, d d d 是参数的维数, ∣ w j ∣ |w_j| wj w j w_j wj 的绝对值。

L1正则化有一个很好的性质,它可以使得一些参数变为零,因此可以实现特征选择的效果。

3.4.2 L2正则化

L2正则化也是一种线性模型的正则化方法,它通过在损失函数中增加L2范数惩罚项来惩罚参数的平方和。其数学表达式为:
在这里插入图片描述
其中, α \alpha α 是正则化超参数, d d d 是参数的维数, w j 2 w_j^2 wj2 w j w_j wj 的平方。
与L1正则化不同的是,L2正则化不会使得参数为零,而是让参数变得很小,但不为零。

3.4.3 Dropout

Dropout 是一种神经网络的正则化方法,它随机丢弃一些神经元,从而减少神经元之间的相互依赖关系,从而防止过拟合。

具体来说,Dropout 是在训练过程中随机地将一些神经元的输出置为0,从而使得这些神经元在当前的训练过程中失活。在测试过程中,所有的神经元都会被激活,但是会将每个神经元的输出乘以一个与失活概率相同的因子,从而保持期望的输出值不变。

Dropout 也有一个超参数,即失活概率。一般情况下,失活概率取0.5。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值