TensorFlow学习笔记9-深度模型的优化
深度模型的优化
回顾概念:
代价函数时训练集上损失函数的平均:
\[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-深度模型的优化的更多相关文章
- Tensorflow学习笔记No.11
图像定位 图像定位是指在图像中将我们需要识别的部分使用定位框进行定位标记,本次主要讲述如何使用tensorflow2.0实现简单的图像定位任务. 我所使用的定位方法是训练神经网络使它输出定位框的四个顶 ...
- 深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识
深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识 在tf第一个例子的时候需要很多预备知识. tf基本知识 香农熵 交叉熵代价函数cross-entropy 卷积神经网络 s ...
- 深度学习-tensorflow学习笔记(2)-MNIST手写字体识别
深度学习-tensorflow学习笔记(2)-MNIST手写字体识别超级详细版 这是tf入门的第一个例子.minst应该是内置的数据集. 前置知识在学习笔记(1)里面讲过了 这里直接上代码 # -*- ...
- tensorflow学习笔记——使用TensorFlow操作MNIST数据(2)
tensorflow学习笔记——使用TensorFlow操作MNIST数据(1) 一:神经网络知识点整理 1.1,多层:使用多层权重,例如多层全连接方式 以下定义了三个隐藏层的全连接方式的神经网络样例 ...
- tensorflow学习笔记——自编码器及多层感知器
1,自编码器简介 传统机器学习任务很大程度上依赖于好的特征工程,比如对数值型,日期时间型,种类型等特征的提取.特征工程往往是非常耗时耗力的,在图像,语音和视频中提取到有效的特征就更难了,工程师必须在这 ...
- TensorFlow学习笔记——LeNet-5(训练自己的数据集)
在之前的TensorFlow学习笔记——图像识别与卷积神经网络(链接:请点击我)中了解了一下经典的卷积神经网络模型LeNet模型.那其实之前学习了别人的代码实现了LeNet网络对MNIST数据集的训练 ...
- tensorflow学习笔记——VGGNet
2014年,牛津大学计算机视觉组(Visual Geometry Group)和 Google DeepMind 公司的研究员一起研发了新的深度卷积神经网络:VGGNet ,并取得了ILSVRC201 ...
- tensorflow学习笔记——使用TensorFlow操作MNIST数据(1)
续集请点击我:tensorflow学习笔记——使用TensorFlow操作MNIST数据(2) 本节开始学习使用tensorflow教程,当然从最简单的MNIST开始.这怎么说呢,就好比编程入门有He ...
- TensorFlow学习笔记10-卷积网络
卷积网络 卷积神经网络(Convolutional Neural Network,CNN)专门处理具有类似网格结构的数据的神经网络.如: 时间序列数据(在时间轴上有规律地采样形成的一维网格): 图像数 ...
随机推荐
- debian利用snmp监控服务器异常状态
1.安装snmp apt-get install snmp snmpd 2.配置snmp vi /etc/snmp/snmpd.conf 注释15行 #agentAddress udp:127.0.0 ...
- R语言parse函数与eval函数的字符串转命令行及执行操作
parse()函数能将字符串转换为表达式expression:eval()函数能对表达式求解 A <- : B <- 'print(A)' class(B) C <- parse(t ...
- 二、在 ASP.NET Core 中使用 SignalR之类库
一.前段代码: @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="view ...
- 微信授权获取code/openid
微信网页授权 如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑. 关于网页授权回调域名的说明 1.在微信公众号请求用户网页授权之前,开发者需要 ...
- 细数不懂Spring底层原理带来的伤与痛
原文链接:https://www.jianshu.com/p/c9de414221ac?utm_campaign=haruki&utm_content=note&utm_medium= ...
- classloader加载class的流程及自定义ClassLoader
java应用环境中不同的class分别由不同的ClassLoader负责加载.一个jvm中默认的classloader有Bootstrap ClassLoader.Extension ClassLoa ...
- [洛谷P4823] TJOI2013 拯救小矮人
问题描述 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯.即:一个小矮人站在另一小矮人的 肩膀上,知道最顶端的小矮人伸直胳膊可以碰到陷阱口. 对于每一个小矮人,我们知道他从 ...
- springboot自定义错误页
静态错误页放在 动态可以放在freemaker或者thymeleaf 匹配规则: 先找动态页面再找静态页面 先找精确错误页面再找模糊页面 注:精确错误页面=50 ...
- a标签禁止跳转
方法一: <a href="javascipt:void(0)>....</a>
- Vue在移动端App中使用的问题总结
1.客户端中弹出键盘使得fixed布局错乱 Vue 在移动端中使用,当弹出键盘时,fixed 布局的元素可能会被键盘顶起. 例子图示及解决方法参考:https://blog.csdn.net/qq_3 ...