神经网络与深度学习——笔记1

  • 一、线性回归及线性分类
    • 1.多元线性回归
    • 2.线性多分类(softmax回归)
    • 3.SGD算法更新参数
  • 二、感知机
    • 1.单神经元模型与单层感知机
    • 2.多层感知机(MLP)
  • 三、多层前馈网络与反向传播(BP)算法
    • 1.多层前馈网络
    • 2.BP算法
  • 四、优化算法
    • 1.动量法
    • 2.自适应梯度算法(AdaGrad)
    • 3.RMSProp
    • 4.Adam

一、线性回归及线性分类

1.多元线性回归

n元线性回归问题,即对输入 x = ( x 1 , x 2 ⋯ x n ) T \bold{x} = {({x_1},{x_2} \cdots {x_n})^T} x=(x1​,x2​⋯xn​)T进行仿射变换,通过模型的输出估计真实的输出,即
y ^ = θ T x = ( θ 1 , θ 2 ⋯ θ n ) ( x 1 , x 2 ⋯ x n ) T + θ 0 = ( θ 0 , θ 1 ⋯ θ n ) ( 1 , x 1 ⋯ x n ) T \begin{aligned} \hat{y}={\theta ^{\rm{T}}}\bold{x} &= ({\theta _1},{\theta _2} \cdots {\theta _n}){({x_1},{x_2} \cdots {x_n})^T} + {\theta _0}\\ &= ({\theta _0},{\theta _1} \cdots {\theta _n}){(1,{x_1} \cdots {x_n})^T} \end{aligned} y^​=θTx​=(θ1​,θ2​⋯θn​)(x1​,x2​⋯xn​)T+θ0​=(θ0​,θ1​⋯θn​)(1,x1​⋯xn​)T​
在给定N组训练数据集 { x ( i ) , y ( i ) } \{ {\bold{x}^{(i)}},{y^{(i)}}\} {x(i),y(i)} 情况下,根据最小均方误差(MMSE)学习一组参数 θ T = ( θ 0 , θ 1 ⋯ θ n ) T {\theta ^{\rm{T}}} = {({\theta _0},{\theta _1} \cdots {\theta _n})^T} θT=(θ0​,θ1​⋯θn​)T使得
min ⁡ J ( θ ) = min ⁡ 1 2 ∑ i = 1 N ( y ( i ) − y ^ ( i ) ) 2 \min J(\theta ) =\min {1 \over 2}{\sum\limits_{i = 1}^N {({y^{(i)}} - {{\hat{y}}^{(i)}})} ^2} minJ(θ)=min21​i=1∑N​(y(i)−y^​(i))2

2.线性多分类(softmax回归)

对于K类的线性分类问题,输入仍为特征 x = ( x 1 , x 2 ⋯ x n ) T \bold{x} = {({x_1},{x_2} \cdots {x_n})^T} x=(x1​,x2​⋯xn​)T,但与线性回归问题不同,线性分类问题的输出不是回归的具体值而是属于某个类的概率,相当于有K个线性回归网络(每个网络的输出仍为 θ T x {\theta ^{\rm{T}}}\bold{x} θTx),同时为了满足使输出符合概率的特性,需要对输出进行处理,通常采用
y ^ ( i ) = ∑ i = 1 K 1 ∑ m = 1 K e θ m T x ( i ) [ e θ 1 T x ( i ) e θ 2 T x ( i ) ⋮ e θ K T x ( i ) ] {\hat{\bold{y}}^{(i)} }= \sum\limits_{i = 1}^K {\frac{1}{{\sum\limits_{m = 1}^K {{e^{{\bm{\theta} _m^T}{\bold{x}^{(i)}}}}} }}} \left[ \begin{array}{l} {e^{{\bm{\theta} _1^T}{\bold{x}^{(i)}}}}\\ {e^{{\bm{\theta} _2^T}{\bold{x}^{(i)}}}}\\ \vdots \\ {e^{{\bm{\theta} _K^T}{\bold{x}^{(i)}}}} \end{array} \right] y^​(i)=i=1∑K​m=1∑K​eθmT​x(i)1​ ​eθ1T​x(i)eθ2T​x(i)⋮eθKT​x(i)​ ​根据最大似然估计最大化似然估计 L ( θ ) L(\bm{\theta} ) L(θ) 相当于最小化负对数似然 − l ( θ ) = − log ⁡ L ( θ ) = − ∑ i = 1 N log ⁡ ( p ( y ( i ) ∣ x ( i ) , θ ) ) - l(\bm{\theta}) = - \log L(\bm{\theta} ) = - \sum\limits_{i = 1}^N {\log(p({\bold{y}^{(i)}}|{\bold{x}^{(i)}},\bm{\theta} ))} −l(θ)=−logL(θ)=−i=1∑N​log(p(y(i)∣x(i),θ))在给定N组训练数据集 { x ( i ) , y ( i ) } \{ {\bold{x}^{(i)}},{\bold{y}^{(i)}}\} {x(i),y(i)} (其中 y ( i ) \bold{y}^{(i)} y(i)为独热码,如 y ( i ) = ( 0 , 1 , 0 ⋯ 0 ) T \bold{y}^{(i)}=(0,1,0 \cdots 0)^T y(i)=(0,1,0⋯0)T)情况下找到 θ = [ θ 1 T , θ 2 T ⋯ θ K T ] T \bm{\theta} = {[{\bm{\theta} _1^T},{\bm{\theta}_2 ^T} \cdots {\bm{\theta}_K ^T}]^T} θ=[θ1T​,θ2T​⋯θKT​]T,使得
min ⁡ J ( θ ) = min ⁡ − l ( θ ) = m i n − ∑ i = 1 N log ⁡ ( p ( y ( i ) ∣ x ( i ) , θ ) ) = min ⁡ ∑ i = 1 N l ( y ( i ) , y ^ ( i ) ) = min ⁡ − ∑ i = 1 N ∑ j = 1 K y j ( i ) log ⁡ y ^ j ( i ) \begin{aligned} \min J(\bm{\theta })= \min - l(\bm{\theta} ) &=min - \sum\limits_{i = 1}^N {\log(p({\bold{y}^{(i)}}|{\bold{x}^{(i)}},\bm{\theta} ))}\\ &= \min \sum\limits_{i = 1}^N {l({\bold{y}^{(i)}},{\hat{\bold{y}}^{(i)}})} \\ &= \min - \sum\limits_{i = 1}^N {\sum\limits_{j = 1}^K {y_j^{(i)}} } \log{\hat{y}_j^{(i)}} \end{aligned} minJ(θ)=min−l(θ)​=min−i=1∑N​log(p(y(i)∣x(i),θ))=mini=1∑N​l(y(i),y^​(i))=min−i=1∑N​j=1∑K​yj(i)​logy^​j(i)​​其中 l ( y ( i ) , y ^ ( i ) ) = ∑ j = 1 K y j ( i ) log ⁡ y ^ j ( i ) {l({\bold{y}^{(i)}},{\hat{\bold{y}}^{(i)}})}= {\sum\limits_{j = 1}^K {y_j^{(i)}} } \log{\hat{y}_j^{(i)}} l(y(i),y^​(i))=j=1∑K​yj(i)​logy^​j(i)​为交叉熵损失。假定第一个样本属于第2类,即 y ( i ) = ( 0 , 1 , 0 ⋯ 0 ) T \bold{y}^{(i)}=(0,1,0 \cdots 0)^T y(i)=(0,1,0⋯0)T,则 l ( y ( i ) , y ^ ( i ) ) = log ⁡ y ^ 2 1 {l({\bold{y}^{(i)}},{\hat{\bold{y}}^{(i)}})=\log{\hat{y}_2^{1}}} l(y(i),y^​(i))=logy^​21​,其中 y ^ 2 1 {\hat{y}_2^{1}} y^​21​为对应输出第二类的概率。

3.SGD算法更新参数

对于 J ( θ ) J(\bm{\theta}) J(θ)为非线性的情况,无法通过常规的求偏导方式求得最优解;而沿着梯度方向损失函数值上升最快,所以沿着梯度相反方向损失函数减少的最快,有了方向还需要控制下降的步幅大小,即设置合适的学习率 α \alpha α,即
θ k + 1 = θ k + Δ θ k = θ k − α ∇ θ J {\bm{\theta }_{k + 1}} = {\bm{\theta} _k} + \Delta {\bm{\theta} _k} = {\bm{\theta} _k} - \alpha {\nabla\bm{ _{\theta }}}J θk+1​=θk​+Δθk​=θk​−α∇θ​J有 J ( θ k + 1 ) = J ( θ k ) − [ ∂ J ( θ ) ∂ θ ] T Δ θ k = J ( θ k ) − α [ ∂ J ( θ ) ∂ θ ] T ∂ J ( θ ) ∂ θ ≤ J ( θ k ) J(\bm{\theta}_{k+1})=J(\bm{\theta}_{k})-{[{{\partial J(\bm{\theta} )} \over {\partial \bm{\theta} }}]^T}\Delta {\bm{\theta} _k} = J({\bm{\theta} _k}) - \alpha {[{{\partial J(\bm{\theta} )} \over {\partial \bm{\theta} }}]^T}{{\partial J(\bm{\theta} )} \over {\partial \bm{\theta}}} \le{J(\bm{\theta}_{k})} J(θk+1​)=J(θk​)−[∂θ∂J(θ)​]TΔθk​=J(θk​)−α[∂θ∂J(θ)​]T∂θ∂J(θ)​≤J(θk​)

二、感知机

1.单神经元模型与单层感知机

单神经元模型如下图,有n个输入,输出为 y = f ( z ) = f [ ∑ i = 1 n w i x i − θ ] = f ( w T x ) y = f(z) = f\left[ {\sum\limits_{i = 1}^n {{w_i}{x_i} - \theta } } \right] = f({\bold{w}^T}\bold{x} ) y=f(z)=f[i=1∑n​wi​xi​−θ]=f(wTx)为阈值,只有当大于阈值时神经元才有相应输出,其中权值的调整量(Hebb规则) Δ w = α x y \Delta \bm{w}=\alpha\bold{x}{y} Δw=αxy


f ( ⋅ ) f( \cdot ) f(⋅)为激活函数,常用的激活函数有阶跃函数、对称性和非对称型Sigmoid函数等。非对称Sigmoid函数 f ( x ) = 1 1 + e − β x f(x) = {1 \over {1 + {e^{ - \beta x}}}} f(x)=1+e−βx1​,对称Sigmoid函数 f ( x ) = 1 − e − β x 1 + e − β x f(x) = {{1 - {e^{ - \beta x}}} \over {1 + {e^{ - \beta x}}}} f(x)=1+e−βx1−e−βx​,下图为 β = 2 \beta=2 β=2时的各函数图像。

单层感知机用来解决线性分类问题,对于一个输入为二维特征的两类的线性分类问题,需要寻找一条最优的分类直线 w T x = 0 {\bold{w}^T}\bold{x}=0 wTx=0(输入维数>2时为分类超平面),能够将数据准确分开。在给定样本 { x ( i ) , y ( i ) } \{ {\bold{x}^{(i)}},{y^{(i)}}\} {x(i),y(i)} 情况下寻找最优参数 w ∗ {\bold{w}^*} w∗,使得 L ( w ∗ ) = min ⁡ ∑ i y ( i ) ( w T x ( i ) ) L({w^ * }) = \min \sum\limits_{i } {{y^{(i)}}} ({\bold{w}^T}{\bold{x}^{(i)}}) L(w∗)=mini∑​y(i)(wTx(i))感知机输出为 y ( i ) = s i g n ( w T x ( i ) ) {y^{(i)}} = sign({\bold{w}^T}\bold{x}^{(i)}) y(i)=sign(wTx(i)),即○所对的 y ( i ) = 1 y^{(i)}=1 y(i)=1,×所对的 y ( i ) = − 1 y^{(i)}=-1 y(i)=−1;当分类正确时有 y ( i ) ( w T x ( i ) ) > 0 {{y^{(i)}}} ({\bold{w}^T}{\bold{x}^{(i)}})>0 y(i)(wTx(i))>0,分类错误时有 y ( i ) ( w T x ( i ) ) < 0 {{y^{(i)}}} ({\bold{w}^T}{\bold{x}^{(i)}})<0 y(i)(wTx(i))<0.

初始时刻权值随机初始化,通过将训练数据 x ( i ) \bold{x}^{(i)} x(i)输入感知机利用判断错误的样本进行权值更新 w k + 1 = w k + α x ( i ) y ( i ) \bold{w}_{k+1}=\bold{w}_{k}+\alpha\bold{x}^{(i)}{y}^{(i)} wk+1​=wk​+αx(i)y(i),直到没有分类错误的样本点。可以看到单层感知机权值的更新规则与单神经元模型的Hebb规则一致。

2.多层感知机(MLP)

单层感知机仅能解决线性可分问题,对于线性不可分问题(如XOR问题),可在输入和输出层之间加入一层或者多层隐藏层构成多层感知机,实现对非线性函数的近似,下图所示为含一个隐藏层的的多层感知机结构。
XOR问题

x 1 x_1 x1​ x 2 x_2 x2​ y y y
0 0 0
0 1 1
1 0 1
1 1 0

根据多层感知机结构可得第一层输出 y 1 1 = f ( w 11 1 u 1 + w 12 1 u 2 − θ 1 1 ) {y_1^1} = f({w_{11}^1}{u_1} + {w_{12}^1}{u_2} - {\theta _1^1}) y11​=f(w111​u1​+w121​u2​−θ11​), y 2 1 = f ( w 21 1 u 1 + w 22 1 u 2 − θ 2 1 ) {y_2^1} = f({w_{21}^1}{u_1} + {w_{22}^1}{u_2} - {\theta _2^1}) y21​=f(w211​u1​+w221​u2​−θ21​),第二层输出 y = f ( w 1 2 y 1 1 + w 2 2 y 2 1 − θ ) {y} = f({w_{1}^2}{y_1^1} + {w_{2}^2}{y_2^1} - {\theta }) y=f(w12​y11​+w22​y21​−θ),激活函数 f ( ⋅ ) f( \cdot ) f(⋅)为阶跃函数。

三、多层前馈网络与反向传播(BP)算法

1.多层前馈网络

如下图所示,u、y是网络的输入、输出向量,神经元用节点表示,网络由输入层、隐层和输出层节点组成,隐层可一层,也可多层(前层至后层节点通过权联接)。

2.BP算法

BP算法由正向传播和反向传播构成,正向传播是按顺序(从输⼊层到输出层)计算和存储神经⽹络中每层的结果;反向传播是将误差(样本输出与网络输出之差)按原联接通路反向计算,由梯度下降法调整各层节点的权值和阈值,使误差减小,具体实现见: SGD算法更新参数。BP算法流程图如下:

四、优化算法

1.动量法

如果把原始的 SGD 想象成一个纸团在重力作用向下滚动,由于质量小受到山壁弹力的干扰大,导致来回震荡;或者在鞍点处因为质量小速度很快减为 0,导致无法离开这块平地;动量方法相当于把纸团换成了铁球;不容易受到外力的干扰,轨迹更加稳定;同时因为在鞍点处因为惯性的作用,更有可能离开平地。

2.自适应梯度算法(AdaGrad)

具有较大偏导的参数相应有一个较大的学习率,而具有小偏导的参数则对应一个较小的学习率。每个参数的学习率会缩放各参数反比于其历史梯度平方值总和的平方根。

3.RMSProp

RMSProp使用指数衰减平均以丢弃遥远的历史,使其能够快速收敛;此外, RMSProp 还加入了超参数

神经网络与深度学习——笔记1相关推荐

  1. 神经网络与深度学习笔记汇总一

    神经网络与深度学习笔记汇总一 梯度下降法: 向量化:代替for循环 广播 ReLU激活函数 逻辑回归 损失函数(误差函数) 代价函数 卷积神经网络 往期回顾 梯度下降法: 通过最小化代价函数(成本函数 ...

  2. 神经网络与深度学习笔记汇总二

    神经网络与深度学习笔记汇总二 正交化(方便调整参数) 迭代 单实数评估指标(判断几种手段/方法哪个更好) 指标选取 训练集.开发集.测试集作用与用途 评估指标 判断算法是好是坏 迁移学习 总结 往期回 ...

  3. 神经网络与深度学习笔记汇总三

    神经网络与深度学习笔记汇总三 往期回顾 将之前掘金写的学习笔记所遇困难搬到这里,方便查看复习 遇到问题: 异常值处理 学习内容 1..drop() 返回的是一个新对象,原对象不会被改变. 2.遇到问题 ...

  4. 神经网络与深度学习笔记汇总五

    神经网络与深度学习笔记汇总五 往期回顾 将之前掘金写的学习笔记所遇困难搬到这里,方便查看复习 遇到问题: 报错 (未解决) 学习内容: 1.报错operand should contain 1 col ...

  5. 神经网络与深度学习笔记 (五)深层神经网络

    摘要:本文知识点主要有简单介绍深层神经网络.深层神经网络的传播过程.保证矩阵维数的正确性.深度神经网络强大的原因.神经网络正向传播和反向传播的流程图.参数和超参数和神经网络与人脑机制的关系. 1.深层 ...

  6. 神经网络与深度学习笔记

    1.神经网络 感知机就是一个人工神经元,是最简单的神经网络,可以用来解决简单"与"和"或"分类问题,但是无法解决"异或"逻辑分类问题这一基础 ...

  7. 神经网络与深度学习笔记(二)正向传播与反向传播

    文章目录 正向传播 反向传播 矢量计算 cost function由来 神经网络层每层向量的形状 正向传播 正向传播计算的是神经网络的输出 如上图,就是一次类似的正向传播的过程,正向传播计算最后的输出 ...

  8. 神经网络与深度学习笔记(三)python 实现反向传播算法

    1.BP方程式 2.计算步骤 3.代码 def backprop(self, x, y): """Return a tuple "(nabla_b, nabla ...

  9. 深度学习笔记(5) 深层神经网络

    深度学习笔记(5) 深层神经网络 1. 深层神经网络 2. 前向传播和反向传播 3. 核对矩阵的维数 4. 参数和超参数 5. 深度学习和大脑的关联性 1. 深层神经网络 当算神经网络的层数时,不算输 ...

最新文章

  1. python面向对象代码示例
  2. javascript正则表达式验证密码(必须含数字字符特殊符号,长度4-16位之间)
  3. r语言 整理、处理数据步骤_R语言万能数据清洗整理包Tidyverse(一)
  4. vue.js的使用总结
  5. Go Python 7: 2-Layer Neural Network
  6. 前端 Offer 提速:如何写出有亮点的简历
  7. 对PostgreSQL SPI例子的学习
  8. 第三周作业(一)单元测试
  9. 担当大任者的九大特征
  10. 谷歌浏览器怎么禁用flash flash禁用方法分享
  11. Java 判断字符串的存储长度
  12. 跨考计算机报班,考研跨考的经验总结与分享
  13. HeadFirstJava——11_异常处理
  14. 计算机怎么获取权限删除文件,电脑删除文件需要获取trustedinstaller权限怎么回事...
  15. mysql中临时字段_MySQL临时表
  16. 万字长文解析Redis数据倾斜与JD开源hotkey源码分析
  17. opencv+ffmpeg+Qt h264录制
  18. 股票买卖接口如何实现委托下单的功能?
  19. C语言 读写锁pthread_rwlock_init
  20. AES、DES、RSA、base64、MD5、SHA加密

热门文章

  1. Makefile 文件详细介绍
  2. GPE监控预警系统-alertmanager配置介绍.md
  3. chrome Android 65,Chrome谷歌浏览器稳定版
  4. 11.修改数据库字符编码
  5. vue怎么使用实现视频播放功能
  6. 洛谷 P3413 SAC#1 - 萌数(数位dp)
  7. 大疆雷达livox avia的bag包转pcd
  8. 用java写一个四则运算计算器
  9. JS UMD规范实现
  10. 模电——比较器与放大器的联系与区别