深度模型的优化

回顾概念:
代价函数时训练集上损失函数的平均:
\[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. Spring基础02——Spring HelloWorld

    1.首先我们来创建一个HelloWorld类,通过Spring来对这个类进行实例化 package com.wzy.lesson1; /** * @author wzy * @version 1.0 ...

  2. mysql基础知识和pymysql

    一.视图 视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据.但是,视图并不在数据库中以存储的数据值集形式存在.行和列数据来自由定义视图的 ...

  3. Keepalived高可用服务器案例

    部署Keepalived高可用软件,实现如下: - 使用Keepalived实现web服务器的高可用 - Web服务器IP地址分别为192.168.4.100和192.168.4.200 - Web服 ...

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

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

  5. python-类对象的比较

    #类对象的比较 class Person: def __init__(self,age,height): self.age=age self.height=height def __eq__(self ...

  6. spark-2.1.1 yarn(高可用)搭建

    一.概述 spark分布式搭建方式大致分为三种:standalone.yarn.mesos.三种分类的区别这里就不一一介绍了,不明白可自行了解.standalone是官方提供的一种集群方式,企业一般不 ...

  7. 【leetcode】1129. Shortest Path with Alternating Colors

    题目如下: Consider a directed graph, with nodes labelled 0, 1, ..., n-1.  In this graph, each edge is ei ...

  8. JWT--无状态单点登录

    序言 传统的 seesion 认证存在的问题: 1)用户信息存储在内存中,用户规模大之后增加服务器开销:2)由于登录信息存储在内存中,限制了登录机器,不利于分布式站点. JWT JWT无状态登录 常规 ...

  9. .NET COM+级别的事务Transaction实现

    参考: https://docs.microsoft.com/zh-cn/dotnet/api/system.enterpriseservices.contextutil?view=netframew ...

  10. flask中的Configuration为何这样写

    flask中的Configuration flask中,我们需要用到很多配置.我们知道最简单的flask是: from flask import Flask app = Flask(__name__) ...