| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 深度学习优化算法 -> 正文阅读 |
|
[人工智能]深度学习优化算法 |
文章目录学习目标: - 知道局部最优问题、鞍点与海森矩阵 - 说明批梯度下降算法的优化 - 说明三种类型的优化算法 - 知道学习率退火策略 - 知道参数初始化策略与输入归一化策略 - 应用完成梯度下降算法的优化 1、为什么深度学习需要进行优化? 虽然硬件水平的提升,让我们可以很方便的构建大型神经网络,但是构建神经网络的算法,还是需要我们自己进行一些优化。所以深度学习是需要优化。 2、优化好处 帮助我们能够提高模型的计算效率 反思一个问题:深度学习里面的“优化算法”,指的是什么?以下说明本人的看法,欢迎各位一起讨论!我们平时所说的优化,在算法领域,我们都知道一个nlogn级别的算法要优于n^2级别的算法,这里讨论的优化算法是降低算法的时间复杂度,就好比在排序领域,我们将两次for循环n方级别的算法优化成nlong级别的算法。在深度学习领域,个人体会到所说的优化算法是将测试集的准确率尽可能的提高,也就是在训练集和测试机都得到一个错误率都比较小又比较接近的一个模型效果,这样一来,需要我们去解决最小值问题、鞍点问题等等一系列在深度学习模型中会遇到的问题。 优化算法
局部最优
鞍点与海森矩阵
海森矩阵为什么需要用到海森矩阵?在很多时候,我们通过一阶求导,通过这个导函数为0得到的判断仅仅为必要条件,也就是说,如果一阶导数为0的点并不能推出是原函数的极值点。用数学上的极限公式来看:该点的导数=当x->x0时的极值,该值等于0,什么问题也说明不了。海森矩阵就是针对这个问题而研究出来的。 梯度消失为什么会造成损失很难优化?有个原因是因为激活函数存在梯度消失的问题。我们来看一下输出: 批梯度下降也就是将整个样本都拿来进行训练,虽然速度会慢些(当样本数量几千万的时候)。 Mini-Batch 梯度下降Mini-batch位于banch和SGD(当mini-banch的大小为1时,就是SGD;当mini-banch大大小为全体样本数时,就是banch)之间,mini-banch是每次同时处理固定大小的数据集。关于Banch和mini-banch二者的代价函数下降如下图所示:左边是banch梯度下降,右边是mini-banch梯度下降算法。
mini-banch大小选择以下的规则可以在论文或者工业界实际操作中应用:
动量梯度下降目的:解决因鞍点问题而带来的梯度停止更新问题 指数加权平均是一种序列数据处理方式,通常用在金融序列分析、温度变化序列分析等。 怎么解决鞍点问题通过使用动量梯度下降的方法,使下降的时候偏离鞍点的方向,即可解决鞍点问题。 逐参数适应学习率方法我自己理解的逐参数适应学习率的方法意思是:我们之前的梯度下降,都是用这一次的权重值去更新下一次的权重值,但是这样子进行更新会像SGD和mini-banch方法都会出现抖动现象,那么研究人员就想了一个办法就是不让这个抖动发生的那么频繁或者减少其抖动,其目的是让这条曲线(也就是损失函数)更加平滑,顺带解决鞍点的问题,那么就把之前全部更新的权重参数拿过来进行参考下一次权重更新的方向。这个思想有点像动态规划里面的单串问题之dp[i]跟前面(i-1)都有联系,但是不同的是动态规划是要最优,取满足最优条件的值即可,而这里的逐参数是用全部的权重参数。以下是学习内容:
Adagrad先贴上一段话: RMSProp算法由于Adagrad算法在后期学习率过小,可能很难找到一个有用的解,为了解决这一问题,RMSProp算法对Adagrad算法做了一点小小的修改。 Adam算法将动量和RMSProp结合在一起。 学习率退火如果设置一个固定的学习率α,那么可能会出现两个问题:
参数初始化策略和归一化输入参数初始化主要指的是神经网络的权重系数,归一化主要指的是特征处理。我们都知道参数不能初始化成同一个值(因为这样的话梯度更新就没有意义了),同样也不能设置过大或者过小,这里是有策略的,目前我还没学到,就先放到这里~。 权重初始化有四种方法: 初始化的值考虑到上一层神经元的个数和下一层神经元的个数。其中输入层和输出层不需要进行权重初始化。
2、He初始化 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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:30:58- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |