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)专门处理具有类似网格结构的数据的神经网络.如: 时间序列数据(在时间轴上有规律地采样形成的一维网格): 图像数 ...
随机推荐
- Windows Neovim
配置文件路径C:\Users\UserName\AppData\Local\nvim\init.vim Vim-plug配置文件路径:C:\Users\UserName\AppData\Local ...
- 64bit机器编译32bit汇编
sudo apt-get install gcc-multilib sudo apt-get install g++-multilib gcc -m32 -S a.c -o a.s gcc -m64 ...
- Linux服务器调优
Linux内核参数 http://space.itpub.net/17283404/viewspace-694350 net.ipv4.tcp_syncookies = 表示开启SYN Cookies ...
- 前端之CSS:属性操作1
css之操作属性 1.文本 1.文本颜色:color 颜色属性被用来设置文字的颜色. 颜色是通过CSS最经常的指定: 十六进制值 - 如: #FF0000 一个RGB值 - 如: RGB(255,0, ...
- 郭盛华现身北京机场,颇有IT男的风范,网友:疑似被招安了
郭盛华纵横互联网江湖数十年,他白手起家,凭着过人的勇敢.智慧和绝技,身经百战,显赫辉煌,成为中外闻名的互联网安全领域大师级人物. 郭盛华的网络技术指导方面经验丰富实力深厚.他是中国互联网安全领域的传奇 ...
- 2016.5.21【初中部 NOIP提高组】模拟赛A 总结
这次比赛的题目看上去好像不难,但当开始仔细想的时候才发现,并没有那么简单. T1旅行:刚开始看到k<=4的时候还以为有题可以AC了,不过呢,还是毫无思路. T3Pty爬山:雨天的尾巴最近打了几道 ...
- 【leetcode】1144. Decrease Elements To Make Array Zigzag
题目如下: Given an array nums of integers, a move consists of choosing any element and decreasing it by ...
- 6364. 【NOIP2019模拟2019.9.20】养马
题目描述 题解 一种显然的水法:max(0,-(点权-边权之和*2)) 这样会挂是因为在中途体力值可能会更小,所以考虑求走完每棵子树所需的至少体力值 考虑从子树往上推求出当前点的答案 设每棵子树从根往 ...
- linux运维、架构之路-Hadoop完全分布式集群搭建
一.介绍 Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS.HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件 ...
- Ubuntu 16.04下使用docker部署ceph集群
ceph集群docker部署 通过docker可以快速部署小规模Ceph集群的流程,可用于开发测试. 以下的安装流程是通过linux shell来执行的:假设你只有一台机器,装了linux(如Ubun ...