深度模型的优化

回顾概念:
代价函数时训练集上损失函数的平均:
\[J(\theta)=E_{(x,y)\sim \hat{p}_{data}}L(f(x;\theta),y) \tag{1}\]

引入概念:

概念 描述
批量梯度算法 使用整个训练集的优化算法,可计算更精确的梯度估计,但回报小于线性
批量batch 整个数据集中的一组样本构成的子集
随机算法(在线算法) 每次只使用一个样本的优化算法,难以充分利用多核结构
小批量随机方法 介于批量梯度算法和在线梯度算法之间的方法

小批量

  • 随机抽取;通常做法是:将数据集的顺序打乱一次,然后按这个乱序进行顺序抽取;
  • 通常多次遍历整个数据集。(第一次遍历是无偏估计,后面的遍历就是有偏估计了);

随机梯度下降(SGD)

从原始数据集中抽取m个样本的小批量。共进行\(\tau\)次迭代,其中第k次迭代的参数\(\theta\)更新算法如下:

设置学习率\(\epsilon_k\)和初始参数\(\theta\)

\(while\ 停止准则未满足\ do\)

\(\quad\)从数据集中拿到m个样本的小批量;

\(\quad\)计算梯度估计:\(\hat{g}\leftarrow +\frac{1}{m}\nabla_{\theta}\sum_iL(f(x_i;\theta),y_i)\)

\(\quad\)更新参数\(\theta\leftarrow\theta-\epsilon_k\hat{g}\)

\(end\ while\)

一般实践中,第k次迭代的学习率为:
\[\begin{aligned}
\epsilon_k=\lbrace
\begin{matrix}
(1-\alpha)\epsilon_0+\alpha\epsilon_{\tau},\ &k<\tau\\
\epsilon_{\tau},\ &k\geq\tau
\end{matrix}
\end{aligned}
\]
其中

  • \(\alpha =\frac{k}{\tau}\)
  • \(\tau\)常设置为反复遍历整个训练集几百次的迭代次数;
  • \(\epsilon_{\tau}\)设置为\(\epsilon_0\)的1%。
  • \(\epsilon_0\)的选择:检测最早的几轮迭代,选择一个比在效果上表现最佳的学习率更大的学习率。但不能太大引起振荡。

使用动量的随机梯度下降

设置学习率\(\epsilon\),动量参数\(\alpha\)和初始参数\(\theta\),速度\(v\)

\(while\ 停止准则未满足\ do\)

\(\quad\)从数据集中拿到m个样本的小批量;

\(\quad\)计算梯度估计:\(g\leftarrow +\frac{1}{m}\nabla_{\theta}\sum_iL(f(x_i;\theta),y_i)\)

\(\quad\)计算速度更新:\(v\leftarrow\alpha v-\epsilon g\)

\(\quad\)更新参数\(\theta\leftarrow\theta+v\)

\(end\ while\)

这样随机梯度下降的速度更快,加快了训练速度。

另一种算法:

设置学习率\(\epsilon\),动量参数\(\alpha\)和初始参数\(\theta\),速度\(v\)

\(while\ 停止准则未满足\ do\)

\(\quad\)从数据集中拿到m个样本的小批量;

\(\quad\)计算梯度估计:\(g\leftarrow +\frac{1}{m}\nabla_{\theta}\sum_iL(f(x_i;\theta+\alpha v),y_i)\)

\(\quad\)计算速度更新:\(v\leftarrow\alpha v-\epsilon g\)

\(\quad\)更新参数\(\theta\leftarrow\theta+v\)

\(end\ while\)

参数初始化策略

偏置:默认初始化为启发式挑选的小常数。
权重:高斯或均匀分布中随机抽取的小值。
8.3-8.7看不下去了。后面补上吧。

TensorFlow学习笔记9-深度模型的优化的更多相关文章

  1. Tensorflow学习笔记No.11

    图像定位 图像定位是指在图像中将我们需要识别的部分使用定位框进行定位标记,本次主要讲述如何使用tensorflow2.0实现简单的图像定位任务. 我所使用的定位方法是训练神经网络使它输出定位框的四个顶 ...

  2. 深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识

    深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识 在tf第一个例子的时候需要很多预备知识. tf基本知识 香农熵 交叉熵代价函数cross-entropy 卷积神经网络 s ...

  3. 深度学习-tensorflow学习笔记(2)-MNIST手写字体识别

    深度学习-tensorflow学习笔记(2)-MNIST手写字体识别超级详细版 这是tf入门的第一个例子.minst应该是内置的数据集. 前置知识在学习笔记(1)里面讲过了 这里直接上代码 # -*- ...

  4. tensorflow学习笔记——使用TensorFlow操作MNIST数据(2)

    tensorflow学习笔记——使用TensorFlow操作MNIST数据(1) 一:神经网络知识点整理 1.1,多层:使用多层权重,例如多层全连接方式 以下定义了三个隐藏层的全连接方式的神经网络样例 ...

  5. tensorflow学习笔记——自编码器及多层感知器

    1,自编码器简介 传统机器学习任务很大程度上依赖于好的特征工程,比如对数值型,日期时间型,种类型等特征的提取.特征工程往往是非常耗时耗力的,在图像,语音和视频中提取到有效的特征就更难了,工程师必须在这 ...

  6. TensorFlow学习笔记——LeNet-5(训练自己的数据集)

    在之前的TensorFlow学习笔记——图像识别与卷积神经网络(链接:请点击我)中了解了一下经典的卷积神经网络模型LeNet模型.那其实之前学习了别人的代码实现了LeNet网络对MNIST数据集的训练 ...

  7. tensorflow学习笔记——VGGNet

    2014年,牛津大学计算机视觉组(Visual Geometry Group)和 Google DeepMind 公司的研究员一起研发了新的深度卷积神经网络:VGGNet ,并取得了ILSVRC201 ...

  8. tensorflow学习笔记——使用TensorFlow操作MNIST数据(1)

    续集请点击我:tensorflow学习笔记——使用TensorFlow操作MNIST数据(2) 本节开始学习使用tensorflow教程,当然从最简单的MNIST开始.这怎么说呢,就好比编程入门有He ...

  9. TensorFlow学习笔记10-卷积网络

    卷积网络 卷积神经网络(Convolutional Neural Network,CNN)专门处理具有类似网格结构的数据的神经网络.如: 时间序列数据(在时间轴上有规律地采样形成的一维网格): 图像数 ...

随机推荐

  1. CentOS7.6中 KVM虚拟机内存、CPU调整

    CentOS7.6中 KVM虚拟机内存.CPU调整 一.调小虚拟机内存 调小虚拟机内存可以动态实现,不用关机 1.查看当前内存大小 [root@heyong kvm]# virsh dominfo t ...

  2. JAVA中关于日期的最常见的操作

    //获取当前系统的时间戳 long times = System.currentTimeMillis(); //创建一个当前日期对象 Date now = new Date(); //基于指定的时间戳 ...

  3. 008-流程控制 case 语句

    流程控制 case 语句 与if...elif...else 语句一样都是多分支条件语句,不过if语句可以判断多种条件关系,case只能判断一种条件关系 [root@zabbix lianxi]# . ...

  4. CIC许可更新

    打开IA软件,点击软件中的[License],可以查看当前许可是否可用或者过期,如果过期,点击下方的[Load License],选择最新的I3许可文件加载,重启电脑.

  5. N^2取N

    序列合并 有两个长度都是N的序列A和B,在A和B中各取一个数相加可以得到N^2个和,求这N^2个和中最小的N个. 先把A B排序 然后pushA[1]+B[i](1<=i<=n)每次取出一 ...

  6. 网络流最大流dinic

    hdu 6214 #include <bits/stdc++.h> #include<cstdio> #include<cstring> #include<q ...

  7. deviceiocontrol与ioctl

    驱动配置设置,配置 ioctl --linux 平台 https://blog.csdn.net/coolwriter/article/details/78242256

  8. GUI学习之二十一——QSlider、QScroll、QDial学习总结

    上一章我们学习了QAbstractSlider的用法,在讲功能的时候我们是借助了它的子类QSlider来实现的,今天来学习一下它的三个子类——QSlider.QScroll和QDial. 一.QSli ...

  9. flask之日志的配置

    1. 项目中,日志和配置文件都是单独在一个文件夹中,一般log文件夹和config文件夹,两个文件夹和manage.py在同一个目录下. 2. 配置日志前,先给flask装上script脚本扩展,Fl ...

  10. 使用logrotate轮询nginx和apache日志

    使用logrotate轮询nginx和apache日志     文章目录 [隐藏] 配置nginx 配置apache 使用logrotate轮询日志很方便,配置也很简单. 配置nginx 1.建立/e ...