Day 19: 人工智慧初探 优化器的作用

Optimizer 优化器

神经网路是由多个神经元节点组成,每个神经元(Neuron)都拥有自己的权重w,表示在某项任务中该神经元的重要程度。假设输入数据为x,
那麽预测值即为: prediction = wx + b (b是偏置量/偏差值)
训练过程其实就是计算合适的w和b的过程。
那麽什麽才是合适的w和b呢? 答案就是与真实值相差不大的预测值。
例如定义损失函数如: loss = sum(|(y_ - prediction)|)
即真实值减去预测值,取绝对值後求和。训练过程可以被粗略理解成调节w和b,使得loss尽可能变小。这就是优化器需要去做的事情,也就是优化器的作用。

优化器的主要目的都是为了训练神经网路,而每个优化器的训练速度上都有些差异,因此需要根据实际资料的状况来决定使用什麽优化器。

我们主要介绍常常用到的三种优化器:

  • GradientDescentOptimizer

GradientDescentOptimizer为最基础的梯度下降法优化器。此方法会利用所有样本,因此他训练时的速度会比较慢,但是只要能运作到一定的次数,他就能够找到问题的最优解。

  • MomentumOptimizer

Momentum 在英文上的意思就是「运动量」的意思,此优化器就像是模拟物理动量的概念,有点像物理学中的球体运动时会受到先前的动量影响,在同方向的维度上学习速度会慢慢变快,但要调头改变学习方向的话只能慢慢降速,直到停止後才能开始反向学习。

https://ithelp.ithome.com.tw/upload/images/20210925/20141566oKDHcklGlG.png

  • AdamOptimizer

结合了Momentum和AdaGrad,保留了 Momentum 对过去梯度的方向做梯度速度调整与Adam对过去梯度的平方值做学习率的调整,动态调整每个参数的学习率,它对学习率有个约束,使得每次学习率都有个确定的范围,会让参数的更新较为平稳。他是目前最为馆范使用的优化器。

资料参考:
https://www.zhihu.com/question/265516791


<<:  正视自己的缺点

>>:  GitHub Commit signature verification - 确定每次变更来源是可以信任的

PHP 与 资料库的连接 使用 MySQLi

使用 MySQLi MySQLi 全称 MySQL Improved extension, 算是 M...

Day 10 开始你的广告活动吧

当我们熟建立了关键字的基本概念後,那不妨开始在 Google Ads 建立完善的广告活动吧,并透过一...

Day 13 - Futures期货、Options选择权Order建立

本篇重点 Futures期货Order建立 Options选择权Order建立 由於前一篇有说明Or...

Clean Code系列笔记-原则篇

本文同步发表於个人部落格 前言: 近期在开发公司内部产品系统时,写完後再进行功能测试时,往往会遇到蛮...

认识 RxJS 的 Scheduler

今天我们来认识一下 RxJS 的 Scheduler,虽然在一般使用 RxJS 开发应用程序时几乎不...