神经网络与深度学习第二周课程总结

1.1线性分类问题:

线性分类问题是指在一个特征空间中,将不同类别的数据通过一个线性决策边界进行分类的问题。具体来说,对于一个二分类问题,我们可以用一条直线来将两类数据分开;对于一个多分类问题,我们可以用一组超平面来将多类数据分开。

线性分类问题的目标是找到一个最优的决策边界,使得分类误差最小。在训练过程中,通常采用一些优化算法来求解最优的决策边界参数,例如支持向量机(SVM)、逻辑回归(Logistic Regression)等。这些算法的基本思路是通过最小化损失函数来寻找最优的决策边界,其中损失函数的定义与具体算法有关。

线性分类问题是机器学习中一个非常基础的问题,在很多实际应用场景中都有广泛的应用。例如,在图像识别、文本分类、信用评估等领域中,线性分类模型都可以作为基础模型进行建模和预测。

1.2梯度下降算法

梯度下降算法是一种常用的优化算法,用于寻找函数的最小值点。在机器学习中,梯度下降算法被广泛应用于训练各种模型,例如线性回归、逻辑回归、神经网络等。下面是梯度下降算法的基本思路和流程:

  1. 初始化模型参数:首先需要对模型参数进行初始化,通常采用随机初始化。

  2. 计算损失函数的梯度:使用当前参数计算损失函数关于参数的梯度,即在当前位置的斜率方向。梯度可以通过计算偏导数得到,也可以通过自动求导工具自动计算。

  3. 更新模型参数:按照梯度下降的思想,以一定的步长(学习率)沿着负梯度方向更新模型参数,使得损失函数尽可能地减小。更新公式如下:

    参数 = 参数 - 学习率 × 梯度

  4. 重复步骤2和3,直到满足停止条件:例如达到指定的迭代次数或者损失函数的变化量小于阈值。

 

1.3神经元模型:

神经元模型是神经网络中的基本单元,它是通过对生物神经元的简化和抽象得到的一个数学模型。神经元模型接收多个输入信号,将这些信号加权求和后,再通过一个非线性激活函数进行输出。这个过程可以简单地表示为:

z = Σ(wi xi) + b y = f(z)

其中,xi表示输入,wi表示对应的权重,b表示偏置,f(z)表示非线性激活函数,z表示线性组合的结果,y表示输出。

 

神经元模型的核心思想是在输入和输出之间建立一个映射关系,通过调整权重和偏置来学习这个映射关系。在训练过程中,通过反向传播算法来计算模型参数的梯度,然后根据梯度进行参数更新,以最小化损失函数,进而提高模型的预测能力。

不同的非线性激活函数会对神经元模型的输出产生不同的影响,例如sigmoid函数可以用于二分类问题中,而ReLU函数则可以缓解梯度消失问题,提高训练速度和效果。根据不同的应用场景和任务需要,可以选择不同的神经元模型和激活函数进行建模和训练。

1.4作用函数

神经元模型中的作用函数一般是一种非线性函数,它能够将神经元模型的输出映射到一个非线性空间,从而增加模型的表达能力和拟合能力。如果不加非线性激活函数,神经元模型的输出只是输入的线性组合,无法拟合更为复杂的模式。而加上非线性激活函数后,神经元模型就可以表示出更为复杂的非线性函数,从而提高模型的表达能力。

常见的非线性激活函数包括sigmoid函数、ReLU函数、Tanh函数、Softmax函数等,它们各有优缺点,在不同的任务和场景中有不同的应用。在神经网络中,通常会根据具体的问题和网络结构选择合适的非线性激活函数。

f(x)=\frac{1}{1+e^{-x}}

1.5感知机模型

知机模型是一种最简单的人工神经元模型,是由两部分组成:线性组合和阈值函数。输入通过线性组合后,经过阈值函数后输出。阈值函数通常是一个阶跃函数。

感知机模型通常用于二分类问题中,其基本思想是将输入向量乘以权重向量并加上一个偏置,然后通过一个阈值函数(例如符号函数或者单位阶跃函数)将输出转化为0或1,即二分类问题的预测结果。

感知机模型在二分类问题中应用广泛,可以用于对样本进行二分类,例如区分是否为垃圾邮件、是否为恶性肿瘤等问题。然而,感知机模型有其局限性,例如只能处理线性可分问题,对于非线性可分问题无法进行分类。

在实际应用中,感知机模型通常需要经过多轮迭代,通过不断地调整权重和偏置,以最小化误差损失函数。其中,误差损失函数可以采用感知机损失函数,即误分类点到超平面的距离之和。当误分类点为0时,模型达到最优解,分类边界就是超平面。

感知机模型是神经网络的基础之一,它的提出对于后来神经网络的发展有着重要的影响。

模型定义为:     y=f(x)=\operatorname{sign}\left(\mathbf{w}^{\mathrm{T}} \mathbf{x}\right)

定义损失函数:L(\mathbf{w})=-\frac{1}{\|\mathbf{w}\|} \sum y^{(i)}\left(\mathbf{w}_{\text {cson } \mathbf{x}^{\mathrm{T}}(\boldsymbol{i})}\right)

取其最小值。

3.1多层感知机

多层感知机(Multilayer Perceptron,简称MLP)是一种基于神经元模型的前向人工神经网络。它由多个神经元层组成,每个神经元层包括若干个神经元模型,各层之间的神经元之间全连接。输入信号从输入层经过若干个隐藏层的非线性变换,最终输出到输出层,得到模型的输出结果。

其非线性拟合能力强:由于多层感知机采用多个神经元层进行非线性变换,因此它具有强大的非线性拟合能力,能够处理各种复杂的输入输出关系,如图像、语音、自然语言等。多层感知机可以处理高维数据,对于维度较高的数据具有较好的处理能力。通过添加多个神经元层,可以将高维数据映射到低维空间,从而进行特征提取和分类。

3.3BP算法

BP算法(Backpropagation Algorithm,反向传播算法)是一种基于梯度下降的神经网络训练算法,用于计算神经网络模型的参数梯度,并进行参数更新。其计算步骤如下:

(1)前向传播:将输入数据通过神经网络进行前向传播,计算每个神经元的输出值。

(2)计算损失函数:将神经网络的输出与实际输出进行比较,计算损失函数的值。

(3)反向传播:从输出层开始,计算每个神经元输出值对损失函数的梯度,然后向前逐层计算每个神经元的梯度,直到计算出输入层的梯度。

(4)参数更新:根据计算得到的梯度和学习率,更新神经网络中的参数,使损失函数值最小化。

 

反向传播算法的具体计算步骤如下:

(1)对于输出层的每个神经元,计算其输出值对损失函数的梯度。

(2)对于倒数第二层到第一层的每个神经元,计算其输出值对损失函数的梯度,同时根据下一层神经元的梯度计算其自身梯度。

(3)通过链式法则,逐层计算每个神经元的梯度,直到计算出输入层的梯度。

(4)使用计算得到的梯度和学习率,更新神经网络中的参数,例如权重和偏置。

需要注意的是,反向传播算法只能用于训练基于梯度下降的神经网络模型,例如多层感知机、卷积神经网络、循环神经网络等。在实际应用中,反向传播算法的计算效率和稳定性也是需要考虑的问题。

算法推导:

假设有一个包含L层的神经网络,第l层的神经元个数为sl。设输入数据为x,第l层的输出为a(l),则有:

a(1) = x

z(l) = W(l)a(l-1) + b(l)

a(l) = σ(z(l))

其中,W(l)和b(l)分别表示第l层的权重和偏置,σ表示激活函数。通过这些公式,我们可以得到神经网络前向传播的输出值。

  1. 反向传播

我们需要计算每个神经元的梯度,并根据梯度更新权重和偏置,使损失函数值最小化。设损失函数为J(W,b),则有:

δ(L) = ∇aJ(W,b) ⊙ σ'(z(L))

δ(l) = ((W(l+1))^T δ(l+1)) ⊙ σ'(z(l))

其中,δ表示误差项,⊙表示向量的逐元素乘积,^T表示矩阵的转置,σ'表示激活函数的导数。

根据这些公式,我们可以逐层计算每个神经元的梯度,并更新权重和偏置:

∂J/∂W(l) = δ(l+1) a(l)^T

∂J/∂b(l) = δ(l+1)

其中,a(l)表示第l层的输出,δ(l+1)表示第l+1层的误差项。

通过这些公式,我们可以得到BP算法的推导公式,可以使用这些公式来计算神经网络的梯度,并进行参数更新,从而实现神经网络模型的训练。

3.4.1神经网络分类

考虑二分类问题(单输出)

J(\mathbf{w})=\frac{1}{N} \sum_{i=1}^{N} L\left(a^{(i)}, y^{(i)}\right)=-\frac{1}{N} \sum_{i=1}^{N}\left[y^{(i)} \log a^{(i)}+\left(1-y^{(i)}\right) \log \left(1-a^{(i)}\right)\right]

计算可得:\frac{\partial}{\partial w_{j}^{[2]}} J(\mathbf{w})=\frac{1}{N} \sum_{i=1}^{N}\left[a^{(i)}-y^{(i)}\right] a_{j}^{[1]}

3.4.2权值正则化

加入正则项:J(\mathbf{w})=\frac{1}{N} \sum_{i=1}^{N} L\left(a^{(i)}, y^{(i)}\right)+\frac{\lambda}{2 P}\|\mathbf{w}\|^{2}

可得:\frac{\partial}{\partial w_{j}^{[2]}} J(\mathbf{w})=\frac{1}{N} \sum_{i=1}^{N}\left[a^{(i)}-y^{(i)}\right] x_{j}^{(i)}+\frac{\lambda}{P} w_{j}^{[2]}

4.1动量法

动量法是一种常用的加速神经网络训练的方法。它的基本思想是:在更新权值时,不仅考虑当前的梯度,还要考虑之前的权值更新量的影响。通过引入一个动量因子,可以让网络在更新权值时向之前的方向继续前进,从而加速收敛。
动量法的更新公式为:

v(t) = βv(t-1) + (1-β)∇J(w(t))

w(t+1) = w(t) - ηv(t)

4.2自适应梯度

自适应梯度法是一种基于梯度信息的动态调整学习率的方法。它的基本思想是:对于不同的权值,使用不同的学习率进行更新,以提高训练的效率和性能。

4.2.1RMSProp算法

RMSProp是一种基于梯度的优化算法,可以用于训练神经网络,旨在通过适当地调整学习率来加速梯度下降过程并防止过度拟合。RMSProp算法可以看作是Adagrad算法的改进版本,它引入了一种新的梯度缩放方式,使得模型能够更快地收敛,并能够应对一些特殊情况,例如大规模的数据集或非平稳的梯度方向。

RMSProp算法的核心思想是对梯度进行平方根平均处理,并根据该处理结果对学习率进行自适应调整,以加速梯度下降过程和提高模型的稳定性。具体来说,RMSProp算法在每次迭代时,根据当前的梯度和历史梯度的平方根平均值来更新参数,其更新公式如下:

g(t) = βg(t-1) + (1-β)(∇J(w(t)))^2

w(t+1) = w(t) - η(∇J(w(t)) / (√g(t) + ε))

其中,g(t)表示历史梯度的平方根平均值,β表示梯度的衰减系数,∇J(w(t))表示损失函数J(w)对参数w的梯度,η表示学习率,ε表示一个很小的正数,用于防止分母为零。

通过引入梯度的平方根平均值来缩放学习率,RMSProp算法可以减少梯度方向的变化,使得模型能够更快地收敛,并且在处理大规模的数据集时,该算法可以自适应地调整学习率,从而提高模型的稳定性。此外,由于RMSProp算法的学习率是自适应的,因此不需要手动调整学习率,使得该算法更加方便和易于使用。

需要注意的是,RMSProp算法的核心思想是对梯度进行缩放,因此不同的模型和数据集可能需要不同的超参数设置,例如学习率、衰减系数和ε等,需要通过实验来选择最优的超参数。

4.2.2Adam算法

Adam算法是一种基于梯度的优化算法,可以用于训练神经网络。它是一种结合了动量法和RMSProp算法的优化算法,旨在通过自适应调整学习率和动量系数来加速梯度下降过程和提高模型的稳定性。

具体来说,Adam算法在每次迭代时,根据当前梯度和历史梯度的平方根平均值来更新参数,其更新公式如下:

m(t) = β1m(t-1) + (1-β1)∇J(w(t))

v(t) = β2v(t-1) + (1-β2)(∇J(w(t)))^2

m_hat(t) = m(t) / (1-β1^t)

v_hat(t) = v(t) / (1-β2^t)

w(t+1) = w(t) - η(m_hat(t) / (√v_hat(t) + ε))

其中,m(t)和v(t)分别表示历史梯度的一阶和二阶矩估计,β1和β2分别表示一阶和二阶矩估计的衰减系数,η表示学习率,ε表示一个很小的正数,用于防止分母为零。

通过引入一阶和二阶矩估计,Adam算法可以自适应地调整动量系数和学习率,从而加速梯度下降的过程,同时还可以提高模型的稳定性和泛化能力。需要注意的是,Adam算法的性能和收敛速度受到超参数设置的影响,例如学习率、衰减系数和ε等,需要通过实验来选择最优的超参数。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值