深度学习(神经网络)

这篇具有很好参考价值的文章主要介绍了深度学习(神经网络)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

神经网络历史


  • 提出形式神经元模型(M-P模型)(1943)
  • 提出感知器(1958)
  • 感知器无法解决线性不可分问题(1969)

  • 提出神经认知机(1980)
  • 提出霍普菲尔德模型(1982)
  • 提出误差反向传播算法(1986)
  • 提出卷积神经网络(1989)

  • 提出将 预训练和自编码器 与 深度神经网络 相结合(2006)
  • 提出在卷积神经网络中引入ReLU作为激活函数(2012)

形式神经元模型(M-P模型)

  • 多个输入结点 x i x_i xi 对应一个输出结点
  • 每个输入结点乘以连接权重 w i w_i wi,相加得到 y y y
  • y大于阈值h,输出1,否则输出0。

感知器

感知器能够通过训练自动确定参数

引入误差修正学习:根据实际输出与期望输出的差值调整权重 w i w_i wi 和阈值 h h h

多层感知器

多层结构的感知器 递阶组成 输入值向前传播的网络。(前馈网络、正向传播网络)

通常采用三层结构:输入层,中间层,输出层。

误差反向传播算法

通过比较实际输出和期望输出得到的误差信号,把误差信号从输出层逐层向前传播得到各层的误差信号,再通过调整各层的连接权重以减小误差。

通过实际输出和期望输出之间的误差 E E E梯度进行调整。

例:
y 1 = w 1 x + 1 , w 1 = 2 y 2 = w 2 y 1 2 , w 2 = 1 ; y_1 = w_1x + 1,w_1 = 2\\ y_2 = w_2y_1^2,w_2 = 1; y1=w1x+1w1=2y2=w2y12w2=1;
现输入 x = 1 x = 1 x=1 ,期望输出 y 2 = 3 y_2 = 3 y2=3

代入求得: y 1 = 2 ∗ 1 + 1 = 3 y_1 = 2 * 1 + 1 = 3 y1=21+1=3 y 2 = 1 ∗ 3 2 = 10 y_2 = 1 * 3^2 = 10 y2=132=10

误差 E E E:与期望值相差 3 − 10 = − 7 3-10 = -7 310=7

误差反向传播的梯度
∂ y 2 ∂ w 2 = y 1 2 = 9 ∂ y 2 ∂ w 1 = ∂ ( w 1 x + 1 ) 2 ∂ w 1 = 2 x 2 w 1 + 2 x = 6 或 = ∂ y 2 ∂ y 1 ∂ y 1 ∂ w 1 = 2 w 2 y 1 ∗ x = 6 \frac{\partial y_2}{\partial w_2} = y_1^2 = 9 \\ \quad\\ \frac{\partial y_2}{\partial w_1} = \frac{\partial (w_1x+1)^2}{\partial w_1} = 2x^2w_1 + 2x = 6\\ 或\\ =\frac{\partial y_2}{\partial y_1}\frac{\partial y_1}{\partial w_1} = 2w_2y_1 * x= 6 w2y2=y12=9w1y2=w1(w1x+1)2=2x2w1+2x=6=y1y2w1y1=2w2y1x=6

梯度的意义:
∂ y ∂ w :当 w = w + △ w ,则 y = y + ∂ y ∂ w △ w \frac{\partial y}{\partial w}:当w = w + \bigtriangleup w,则y = y + \frac{\partial y}{\partial w}\bigtriangleup w wy:当w=w+w,则y=y+wyw

已知:
误差为 − 7 ,梯度 ∂ y 2 ∂ w 2 = 9 , ∂ y 2 ∂ w 1 = 6 误差为-7,梯度 \frac{\partial y_2}{\partial w_2} = 9,\frac{\partial y_2}{\partial w_1} =6 误差为7,梯度w2y2=9w1y2=6
故可修改( η 表示学习率,设 η = 1 \eta 表示学习率,设\eta =1 η表示学习率,设η=1 )
w 1 = w 1 + η E ∂ y 2 ∂ w 1 = 2 + 1 ∗ ( − 7 ) / 6 = 2 − 7 / 6 = 5 / 6 w 2 = w 2 + η E ∂ y 2 ∂ w 2 = 1 + 1 ∗ ( − 7 ) / 9 = 1 − 7 / 9 = 2 / 9 w_1 = w_1 + \frac{\eta E}{\frac{\partial y_2}{\partial w_1} } = 2 + 1*(-7)/6 = 2 - 7/6= 5/6\\ \quad\\ w_2 = w_2 + \frac{\eta E}{\frac{\partial y_2}{\partial w_2} } = 1 + 1 * (-7)/9 = 1-7/9 = 2/9 w1=w1+w1y2ηE=2+1(7)/6=27/6=5/6w2=w2+w2y2ηE=1+1(7)/9=17/9=2/9

w 1 , w 2 已被调整为新值, w 1 = 5 6 , w 2 = 2 9 w_1,w_2已被调整为新值,w_1 = \frac{5}{6},w_2=\frac{2}{9} w1,w2已被调整为新值,w1=65w2=92
将此值带入原式计算,
y 1 = 11 6 , y 2 = 121 162 y_1 = \frac{11}{6} , y_2 = \frac{121}{162} y1=611,y2=162121
可看到, y 2 y_2 y2从原先的 10 10 10 被调整到了 121 / 162 121/162 121/162,可以看到,通过误差反向传播确实可以修正权值 w 1 , w 2 w_1,w_2 w1,w2
但是过大的学习率会导致结果过拟合,如上,我们需要最后值为3,但修改后的值甚至小于了1。因此调整合适的学习率 η \eta η是必须的。

误差函数和激活函数

【机器学习基础】2、代价函数\损失函数汇总

误差函数

用于计算误差值 E E E

引自:https://www.cnblogs.com/go-ahead-wsg/p/12346744.html

二次代价函数

C = 1 2 n ∑ x 1 , … x n ∥ y ( x ) − a L ( x ) ∥ 2 C=\frac{1}{2 n} \sum_{x_{1}, \ldots x_{n}}\left\|y(x)-a^{L}(x)\right\|^{2} C=2n1x1,xn y(x)aL(x) 2

  • C表示代价函数
  • x表示样本
  • y表示实际值
  • a表示输出值
  • n表示样本的总数;

其中 a = σ ( z ) , z = ∑ w j ∗ x j + b a=\sigma(z), z=\sum w_j*x_j +b a=σ(z),z=wjxj+b

  • a代表激活函数的输出值
  • σ代表sigmoid函数

∂ C ∂ w = ( a − y ) σ ′ ( z ) x ∂ C ∂ b = ( a − y ) σ ′ ( z ) \frac {\partial C} {\partial w} = (a-y)\sigma' (z)x \\\quad\\ \frac {\partial C} {\partial b} = (a-y)\sigma' (z) wC=(ay)σ(z)xbC=(ay)σ(z)

注:由于反向误差梯度与sigmoid函数的导数有关,而sigmoid函数的导数会在值较大时有较小的倒数,故会导致权值调整较小。
如下图所示:
深度学习(神经网络)
因此引入交叉熵代价函数

交叉熵代价函数

交叉熵代价函数(Cross-entropy cost function)是用来衡量人工神经网络(ANN)的预测值与实际值的一种方式。与二次代价函数相比,它能更有效地促进ANN的训练。

C = − 1 n ∑ x 1 , x n [ y ln ⁡ a + ( 1 − y ) ln ⁡ ( 1 − a ) ] C=-\frac{1}{n} \sum_{x_{1}, x_{n}}[y \ln a+(1-y) \ln (1-a)] C=n1x1,xn[ylna+(1y)ln(1a)]

  • C表示代价函数
  • x表示样本
  • y表示实际值
  • a表示输出值
  • n表示样本的总数;
    a = σ ( z ) , z = ∑ w j ∗ x j + b σ ′ ( z ) = σ ( z ) ( 1 − σ ( x ) ) a=\sigma(z), z=\sum w_j*x_j +b\\ \quad\\ \sigma'(z) = \sigma(z)(1-\sigma (x)) a=σ(z),z=wjxj+bσ(z)=σ(z)(1σ(x))

梯度求解
∂ C ∂ w j = − 1 n ∑ x ( y σ ( z ) − ( 1 − y ) 1 − σ ( z ) ) ∂ σ ∂ w j = − 1 n ∑ x ( y σ ( z ) − ( 1 − y ) 1 − σ ( z ) ) σ ′ ( z ) x j = 1 n ∑ x σ ′ ( z ) x j σ ( z ) ( 1 − σ ( z ) ) ( σ ( z ) − y ) = 1 n ∑ x x j ( σ ( z ) − y ) ∂ C ∂ b = 1 n ∑ x ( σ ( z ) − y ) \begin{aligned} \frac{\partial C}{\partial w_{j}} & =-\frac{1}{n} \sum_{x}\left(\frac{y}{\sigma(z)}-\frac{(1-y)}{1-\sigma(z)}\right) \frac{\partial \sigma}{\partial w_{j}} \\ & =-\frac{1}{n} \sum_{x}\left(\frac{y}{\sigma(z)}-\frac{(1-y)}{1-\sigma(z)}\right) \sigma^{\prime}(z) x_{j} \\ & =\frac{1}{n} \sum_{x} \frac{\sigma^{\prime}(z) x_{j}}{\sigma(z)(1-\sigma(z))}(\sigma(z)-y) \\ & =\frac{1}{n} \sum_{x} x_{j}(\sigma(z)-y) \\ \frac{\partial C}{\partial b} & =\frac{1}{n} \sum_{x}(\sigma(z)-y) \end{aligned} wjCbC=n1x(σ(z)y1σ(z)(1y))wjσ=n1x(σ(z)y1σ(z)(1y))σ(z)xj=n1xσ(z)(1σ(z))σ(z)xj(σ(z)y)=n1xxj(σ(z)y)=n1x(σ(z)y)

可以看出:权值 w w w 和偏执值 b b b 的调整与 σ ′ ( z ) σ′(z) σ(z) 无关,另外,梯度公式中的 σ ( z ) − y σ(z)−y σ(z)y
表示输出值与实际值放入误差。所以当误差越大时,梯度就越大,参数w和b的调整就越快,训练的速度也就越快。

总结:当输出神经元是线性的,那么二次代价函数就是一种合适的选择。如果输出神经元是S型函数,那么比较适合交叉墒代价函数。

激活函数

激活函数类似于人类神经元,对输入信号进行线性或非线性变换。

  • M-P模型中使用step函数作为激活函数
  • 多层感知器中使用sigmoid函数,或tanh函数(双曲正切函数)
  • 最近几年在深度学习中,修正线性单元(Rectified Linear Unit,ReLU)

sigmoid函数

f ( u ) = 1 1 + e − u u = ∑ i = 1 n w i x i f(u) = \frac{1}{1+e^{-u}} \\\quad\\ u = \sum_{i=1}^nw_ix_i f(u)=1+eu1u=i=1nwixi
偏导数:
∂ f ( u ) ∂ u = f ( u ) ( 1 − f ( u ) ) \frac{\partial f(u)}{\partial u} = f(u)(1-f(u)) uf(u)=f(u)(1f(u))

RELU函数

f ( u ) = m a x ( 0 , u ) ∂ f ( u ) ∂ u = 1 f(u) = max(0,u)\\ \quad\\ \frac{\partial f(u)}{\partial u} = 1 f(u)=max(0,u)uf(u)=1

似然函数

似然函数用于计算多层感知器的输出结果,通常以softmax函数作为似然函数。

softmax函数

p ( y k ) = e x p ( u 2 k ) ∑ q = 1 Q e x p ( u 2 q ) p(y^k) = \frac{exp(u_{2k})}{\sum_{q=1}^Q exp(u_{2q})} p(yk)=q=1Qexp(u2q)exp(u2k)
softmax函数的分母是对输出层所有单元(q = 1,······,Q)的激活函数值的求和,起到归一化的作用。

随机梯度下降法

使用部分训练样本进行迭代计算,这种方法叫做随机梯度下降法(Stochastic Gradient Descent,SGD),与之相对的是批量学习方法。

批量学习方法

计算时遍历全部训练样本,设第 t t t 次迭代各训练样本误差为 E n t E_n^t Ent ,通过所有误差项计算全部训练样本误差:
E = ∑ n = 1 n E n E = \sum_{n=1}^n E_n E=n=1nEn
基于全部训练样本得到权重权重调整值并修正网络连接权重
w = w − η ∂ E ∂ w w = w - \eta \frac{\partial E}{\partial w} w=wηwE
然后使用调整后的连接权重测试全部训练样本,如此反复迭代计算权重调整并修正网络。

  • 优点:能有效抑制训练集内带噪声的样本所导致的输入模式剧烈变动
  • 缺点:每次调整连接权值,所有样本都要参与训练,所有训练时间长

在线学习

逐个输入训练样本

由于在线学习每次迭代计算一个训练样本,所以训练样本的差异会导致结果出现大幅变动。
迭代结果的变动可能导致训练无法收敛。

小批量梯度下降法

介于在线学习和批量学习之间,将训练集分成几个子集D,每次迭代使用一个子集。

小批量下降法能够缩短单次训练时间,又能降低迭代结果的变动。

由于随机梯度下降法只使用部分训练样本,每次迭代后样本集的趋势都会发生变化,所以减少了迭代结果陷入局部最优解的情况。

学习率

用来确定权重连接调整的系数。

如果学习率过大,则有可能修正过头
如果学习率较小,收敛速度会很慢。

自适应调整学习率—AdaGrad方法

用学习率除以截至当前时刻 t t t 的梯度 ▽ E \bigtriangledown E E 的累计值,得到神经网络的连接权重 w w w.

w = w − η ▽ E ( t ) ∑ i = 1 t ( ▽ E ( i ) ) 2 + ε w = w - \eta\frac{\bigtriangledown E^{(t)}}{\sqrt{ \sum_{i=1}^t(\bigtriangledown E^{(i)})^2 +}\varepsilon } w=wηi=1t(E(i))2+ εE(t)文章来源地址https://www.toymoban.com/news/detail-477164.html

到了这里,关于深度学习(神经网络)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机竞赛 深度学习卷积神经网络垃圾分类系统 - 深度学习 神经网络 图像识别 垃圾分类 算法 小程序

    🔥 优质竞赛项目系列,今天要分享的是 深度学习卷积神经网络垃圾分类系统 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 近年来,随着我国经济的快速发展,国家各项建设都蒸蒸日上,成绩显著。

    2024年02月07日
    浏览(54)
  • 深度学习卷积神经网络垃圾分类系统 - 深度学习 神经网络 图像识别 垃圾分类 算法 小程序 计算机竞赛

    🔥 优质竞赛项目系列,今天要分享的是 深度学习卷积神经网络垃圾分类系统 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 近年来,随着我国经济的快速发展,国家各项建设都蒸蒸日上,成绩显著。

    2024年02月04日
    浏览(52)
  • 【机器学习】——深度学习与神经网络

    目录 引入 一、神经网络及其主要算法 1、前馈神经网络 2、感知器 3、三层前馈网络(多层感知器MLP) 4、反向传播算法 二、深度学习 1、自编码算法AutorEncoder 2、自组织编码深度网络 ①栈式AutorEncoder自动编码器 ②Sparse Coding稀疏编码 3、卷积神经网络模型(续下次) 拓展:

    2024年02月09日
    浏览(41)
  • 【机器学习】——神经网络与深度学习

    目录 引入 一、神经网络及其主要算法 1、前馈神经网络 2、感知器 3、三层前馈网络(多层感知器MLP) 4、反向传播算法 二、深度学习 1、自编码算法AutorEncoder 2、自组织编码深度网络 ①栈式AutorEncoder自动编码器 ②Sparse Coding稀疏编码 3、卷积神经网络模型(续下次) 拓展:

    2024年02月10日
    浏览(49)
  • 深度学习|卷积神经网络

    卷积神经网络(Convolutional Neural Network,CNN)是一种深度学习神经网络结构,主要用于 图像识别 、 计算机视觉 等领域。该结构在处理图像等高维数据时表现出色,因为它具有共享权重和局部感知的特点,一方面减少了权值的数量使得网络易于优化,另一方面降低了模型的复

    2024年02月11日
    浏览(40)
  • 深度学习,卷积神经网络

      CV领域发展 CV领域是计算机视觉(Computer Vision)领域的简称。 计算机视觉是指利用计算机模拟人类视觉系统的科学,让计算机具有类似于人类在观察外界的视觉、图像的能力,包括图像处理、图像分析、图像理解等。 计算机视觉领域发展有以下特点: 视觉系统的出现和不

    2024年02月15日
    浏览(51)
  • 深度学习循环神经网络

    循环神经网络(Recurrent Neural Network,RNN)是一种广泛应用于序列数据、自然语言处理等领域的神经网络。与传统的前馈神经网络不同,循环神经网络的输入不仅取决于当前输入,还取决于之前的状态。这使得循环神经网络可以对序列数据进行建模,具有记忆和递归的能力。

    2024年02月13日
    浏览(39)
  • 深度学习(神经网络)

    提出 形式神经元模型(M-P模型) (1943) 提出 感知器 (1958) 感知器无法解决线性不可分问题(1969) 提出 神经认知机 (1980) 提出 霍普菲尔德模型 (1982) 提出 误差反向传播算法 (1986) 提出 卷积神经网络 (1989) 提出 将 预训练和自编码器 与 深度神经网络 相结合 (20

    2024年02月08日
    浏览(54)
  • 深度学习和神经网络

    人工神经网络分为两个阶段: 1 :接收来自其他n个神经元传递过来的信号,这些输入信号通过与相应的权重进行 加权求和传递给下个阶段。(预激活阶段) 2:把预激活的加权结果传递给激活函数 sum :加权 f:激活函数 神经元         神经元是组成神经网络的最基本单位,

    2024年02月16日
    浏览(24)
  • 深度学习,神经网络介绍

    目录 1.神经网络的整体构架 2.神经网络架构细节 3.正则化与激活函数 4.神经网络过拟合解决方法   ConvNetJS demo: Classify toy 2D data 我们可以看看这个神经网络的网站,可以用来学习。 神经网络的整体构架如下1: 感知器(Perceptron)感知器是所有神经网络中最基本的,也是更复杂

    2024年02月14日
    浏览(21)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包