IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> Task5-神经网络设计的技巧 -> 正文阅读

[人工智能]Task5-神经网络设计的技巧

优化失败的可能原因

在critical point卡住了,即梯度为0的地方卡住了。

两种critical point:局部最小点;鞍点

在低维度中的局部最小点在高维度中可能是鞍点;在低维度中的critical point在高维度中可能不属于critical point

找出是哪一种情形:泰勒级数

θ \theta θ趋于 θ ′ \theta' θ时:
L ( θ ) ≈ L ( θ ′ ) + ( θ ? θ ′ ) T ? θ ′ ? θ i + 1 2 ( θ ? θ ′ ) T ? 2 L ( θ ′ ) ? θ i ? θ j ( θ ? θ ′ ) L(\theta)≈L(\theta')+(\theta-\theta')^T \frac{\partial \theta'}{\partial \theta_i}+\frac{1}{2}(\theta-\theta')^T\frac{\partial^2L(\theta')}{\partial\theta_i\partial\theta_j}(\theta-\theta') L(θ)L(θ)+(θ?θ)T?θi??θ?+21?(θ?θ)T?θi??θj??2L(θ)?(θ?θ)

对于critical point,一次微分项为0,即 ( θ ? θ ′ ) T ? θ ′ ? θ i = 0 (\theta-\theta')^T \frac{\partial \theta'}{\partial \theta_i}=0 (θ?θ)T?θi??θ?=0

( θ ? θ ′ ) T ? 2 L ( θ ′ ) ? θ i ? θ j ( θ ? θ ′ ) = v T H v (\theta-\theta')^T\frac{\partial^2L(\theta')}{\partial\theta_i\partial\theta_j}(\theta-\theta')=v^THv (θ?θ)T?θi??θj??2L(θ)?(θ?θ)=vTHv

其中 H = H= H=
[ ? 2 L ? θ 1 2 ? 2 L ? θ 1 ? θ 2 ? 2 L ? θ 2 ? θ 1 ? 2 L ? θ 2 2 ] \begin{bmatrix} \frac{\partial^2 L}{\partial \theta^2_1} & \frac{\partial^2 L}{\partial \theta_1\partial\theta_2} \\ \frac{\partial^2 L}{\partial \theta_2\partial\theta_1} & \frac{\partial^2 L}{\partial \theta^2_2} \end{bmatrix} [?θ12??2L??θ2??θ1??2L???θ1??θ2??2L??θ22??2L??]
对所有的 v v v

  1. v T H v > 0 → v^THv>0\to vTHv>0 θ ′ \theta' θ附近 L ( θ ) > L ( θ ′ ) → L(\theta)>L(\theta')\to L(θ)>L(θ)局部最小
  2. v T H v < 0 → v^THv<0\to vTHv<0 θ ′ \theta' θ附近 L ( θ ) < L ( θ ′ ) → L(\theta)<L(\theta')\to L(θ)<L(θ)局部最大
  3. v T H v v^THv vTHv时大时小 → \to 鞍点

延伸:(序号和上方一一对应)

  1. H是正定矩阵(所有特征值为正)
  2. H是负定矩阵(所有特征值为负)
  3. H的特征值有正有负

逃离鞍点(理论上)

H H H的特征向量为 u u u,则 u T H u = λ ∣ ∣ u ∣ ∣ 2 u^THu=\lambda||u||^2 uTHu=λu2

λ < 0 ? λ ∣ ∣ u ∣ ∣ 2 < 0 ? u T H u < 0 \lambda<0\Rightarrow \lambda||u||^2<0\Rightarrow u^THu<0 λ<0?λu2<0?uTHu<0

? L ( θ ) ≈ L ( θ ′ ) + 1 2 u T H u < L ( θ ′ ) \Rightarrow L(\theta)≈L(\theta')+\frac{1}{2}u^THu <L(\theta') ?L(θ)L(θ)+21?uTHu<L(θ)

即令 θ = θ ′ + u \theta=\theta'+u θ=θ+u可以减小 L L L

也就是说,往 u u u的方向移动可以减小 L L L

(实际使用过程中通常不用 → \to 计算太复杂)

分组计算

  • 将训练数据分为很多个小组,每计算完一组数据更新一次参数

大组合小组的对比

比较小组大组
速度一样一样
一个周期的时长
梯度有噪音稳定
优化性能更好更差
Generalization更好更差
  • 训练时,大、小组训练得一样好,但在测试时小组表现更好。via On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima.

加入动量

  • 梯度下降+动量:更新参数的方向改为梯度的反方向+上一次更新的方向(向量和)
    θ 0 , m 0 = 0 ? 计 算 g 0 ? m 1 = λ m 0 ? η g 0 \theta^0,m^0=0\Rightarrow 计算g^0\Rightarrow m^1=\lambda m^0-\eta g^0 θ0,m0=0?g0?m1=λm0?ηg0

? θ 1 = θ 0 + m 1 ? 计 算 g 1 ? m 2 = λ m 1 ? η g 1 \Rightarrow \theta^1=\theta^0+m^1\Rightarrow计算g^1\Rightarrow m^2=\lambda m^1-\eta g^1 ?θ1=θ0+m1?g1?m2=λm1?ηg1

… \dots

m i = λ m i ? 1 ? η g i ? 1 ? θ i = θ i ? 1 + m i m^i=\lambda m^{i-1}-\eta g^{i-1}\Rightarrow \theta^i=\theta^{i-1}+m^i mi=λmi?1?ηgi?1?θi=θi?1+mi

  • 实质上: m i m^i mi g 0 , … g i ? 1 g^0, \dots g^{i-1} g0,gi?1的加权和

动态调参

特制 η \eta η

adagrad

希望同参数同方向也可以动态调整 η ? R M S P r o p \eta \Rightarrow RMSProp η?RMSProp

θ 1 = θ 0 ? η σ 0 g 0 , σ 0 = ( g 0 ) 2 \theta^1=\theta^0-\frac{\eta}{\sigma^0}g^0, \sigma^0=\sqrt{(g^0)^2} θ1=θ0?σ0η?g0,σ0=(g0)2 ?

θ 2 = θ 1 ? η σ 1 g 1 , σ 1 = α ( σ 0 ) 2 + ( 1 ? α ) ( g 1 ) 2 \theta^2=\theta^1-\frac{\eta}{\sigma^1}g^1, \sigma^1=\sqrt{\alpha(\sigma^0)^2+(1-\alpha)(g^1)^2} θ2=θ1?σ1η?g1,σ1=α(σ0)2+(1?α)(g1)2 ?

… \dots

θ t = θ t ? 1 ? η σ t g t , σ t = α ( σ t ? 1 ) 2 + ( 1 ? α ) ( g t ) 2 \theta^t=\theta^{t-1}-\frac{\eta}{\sigma^t}g^t, \sigma^t=\sqrt{\alpha(\sigma^{t-1})^2+(1-\alpha)(g^t)^2} θt=θt?1?σtη?gt,σt=α(σt?1)2+(1?α)(gt)2 ?

? \star ?加入 α \alpha α衡量 g i g^i gi的重要性

其他工具:adam=RMSProop+动量,在pytorch中可以直接调用,一般不调预设参数

Learning Rate Scheduling

调整 θ t + 1 = θ t ? η t σ t m t \theta^{t+1}=\theta^t-\frac{\eta ^t}{\sigma ^t}m^t θt+1=θt?σtηt?mt 中的 η t \eta^t ηt

  1. Decay: η \eta η 随时间越来越小(越来越接近目标,所以减小步长以免在步长内跳过目标)
  2. Warm Up: η \eta η 先变大再变小

用回归做分类问题

使不同类别间距一致的方法

设为向量
c l a s s 1 : [ 1 0 0 ] class 1:\begin{bmatrix} 1\\0\\0 \end{bmatrix} class1:???100???? ? c l a s s 2 : [ 0 1 0 ] ? c l a s s 3 : [ 0 0 1 ] \ class2:\begin{bmatrix} 0\\1\\0 \end{bmatrix} \ class3:\begin{bmatrix} 0\\0\\1 \end{bmatrix} ?class2:???010?????class3:???001????

同时网络由单输入单输出变为多输入多输出
在这里插入图片描述
y = b ′ + w ′ σ ( b + w x ) ? y ′ = s o f t m a x ( y ) ? y ^ y=b'+w'\sigma(b+wx)\Rightarrow y'=softmax(y)\Leftrightarrow\hat{y} y=b+wσ(b+wx)?y=softmax(y)?y^?

softmax

将y映射为(0,1)的实数,并归一化使和为1。

y ′ = e y i ∑ i e y i ? { 0 < y i < 1 , ∑ i y i ′ = 1 y'=\frac{e^{y_i}}{\sum_i e^{y_i}} \Rightarrow \left\{\begin{matrix}0<y_i<1,\\\sum_i y'_i=1 \end{matrix}\right. y=i?eyi?eyi???{0<yi?<1i?yi?=1?

会让差距大的值之间的差距更大

  • 当只有2个类别时,直接取sigmoid效果和用softmax一样

计算损失

L = 1 N ∑ n e n L=\frac{1}{N}\sum_ne_n L=N1?n?en?

e n e_n en?有两种计算方法:

  • 均方误差: e n = ∑ i ( y i ^ ? y i ′ ) 2 e_n=\sum_i(\hat{y_i}-y_i')^2 en?=i?(yi?^??yi?)2
  • 交叉熵: e n = ? ∑ i y i ^ l n y i ′ e_n=-\sum_i\hat{y_i}lny_i' en?=?i?yi?^?lnyi?

均方误差在损失大的地方可能会卡主,交叉熵更适合用于分类问题。

使交叉熵 m i n min min等价于使相似度 m a x max max

分批次标准化

前情提要:特征缩放

  • 如果使用sigmoid作为激活函数,则在sigmoid之前做特征缩放更好 ? \Rightarrow ?在0附近有更大的梯度值

分批次标准化

在这里插入图片描述
要使均值不为0,加入新的参数进去:
在这里插入图片描述
在测试时,可能无法获得一个Batch的数据就要进行计算,解决方法:
对每一个batch的 μ \mu μ σ \sigma σ 都拿来计算动态均值

μ  ̄ = p μ  ̄ + ( 1 ? p ) μ t \overline{\mu}=p\overline{\mu}+(1-p)\mu^t μ?=pμ?+(1?p)μt
σ  ̄ = p σ  ̄ + ( 1 ? p ) σ t \overline{\sigma}=p\overline{\sigma}+(1-p)\sigma^t σ=pσ+(1?p)σt

? z ~ = z ? μ  ̄ σ  ̄ \Rightarrow \tilde{z}=\frac{z-\overline{\mu}}{\overline{\sigma}} ?z~=σz?μ??

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-24 15:33:09  更:2021-08-24 15:35:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 18:50:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码