将AI拉下神坛(五):拎不清反向传播、梯度下降?原来底层数学原理高中就学过!

前些篇章,我们通过实践证明了神经网络训练的可行性(测试集的准确率是不断提高的)。但是,pytorch框架将太多的复杂的细节都隐藏起来了,即便我们已经训练出来一个模型,我们却或许不清楚模型可以可以被训练出来的原理。比如: 模型的参数在训练过程中是怎样被修正的?

答案是借助 「反向传播」「梯度下降」

让我们逐步来理解Ta们是怎样在模型训练过程中修正参数的。

1 损失函数

将训练数据输入到神经网络,得到预测结果,预测结果和真实结果(标注的Label)是有差异的。我们通过一个函数来描述 预测结果真实结果 之间的差异,Ta就是 损失函数

不难理解,训练的过程就是一个 让损失函数取值越来越小 的过程。

如果我们将损失函数表示为 FLoss,神经网络的输入表示为 X(大写字母表示它为向量),权重参数为W,那么损失:

loss = FLoss(X, W)

从推理角度讲,显然:我们的权重 W 是常量(不变的),而输入 X 是变量(我们会对不同的输入进行推理),那么损失loss是一个关于 X 的函数。

此时,损失即y,输入即x

此时,损失即y,输入即x。

但是,在训练过程中,场景完全翻转!

此时,损失依然是y,但作为训练数据和标注(真实结果)确成为了不变的常量,我们要调整的权重参数W反而成为了变量,此时:

损失loss是一个关于 W 的函数!

我们很多时候对于「反向传播」「梯度下降」在神经网络训练中的应用总是感觉朦胧,就在于常量变量的认知总是停留在推理场景下;而在训练场景下,loss 函数的常量变量与推理时完全相反,关键概念认知的误差就很容易让我们在探究训练原理时懵圈。所以,一定要记住:

- 训练过程中,损失loss是关于权重W的函数 -

认知了这点,我们可以继续理解 「反向传播」

2 反向传播

神经网路是有很多”层“的。

4层神经网络示例,现在的神经网络,百层也不再稀奇

如图:第0层的输出为第1层的输入,第1层的输出为第2层的输入,以此类推,第n-1层的输出为第n层的输入,第n层的输出则为最终预测结果输出 out_predict

神经网络的每层操作也可以表示为一个函数,比如:
O1 = F1(O0, W1)
O2 = F2(O1, W2)
...
out_prefict = On = Fn(On-1, Wn)
loss = Floss(out_prefict, out_real) = Floss(Fn(On-1, Wn), out_real)

每一层网络进行计算都需要大量的权重参数 W(图片中的连线),我们在训练过程中要对每一个参数(连线)的值进行调整。

loss为转变为Wn的函数

因为 loss 首先被转换为的是Wn的函数,所以我们首先修正的也是 Wn。接下来,我们将Fn(On-1, Wn)展开到On-1层:

loss为转变为Wn-1的函数

则可以继续修正Wn-1,依次类推,直到完成W1的修正。

那么,我们发现,权重参数修正的顺序推理的顺序是相反的:

推理:计算第1层输出->计算第2层输出->...-->计算第n层输出
W修正:修正第n层->修正第n-1层->...-->修正第1层

所以,我们将模型权重参数的修正称过程称之为 反向传播

那么,问题又来了:
每一层的权重参数是如何修正的?

3 梯度下降

答案是通过梯度下降法,梯度下降可以帮我们找到某个函数的最小值(或者讲局部最小值)。
下面,我们通过升维的方法来理解Ta。

3.1 一元函数的梯度下降理解

一元函数

如图,从图上很容易看出来,y的最小值点在xmin处取得。那么,x0, x1点若想向xmin处移动……图上我们可以看出,x0处,我们希望x变大;x1处,我们期望x变小,即 将 x 向梯度下降的方向移动

梯度 的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。

我们可以计算出 x0,x1处的斜率:

斜率示例

斜率为正,表示y随着x的增大而增大
斜率为负,表示y随着x的增大而减小

我们用k0,k1表示x0,x1处的斜率值,用 a 表示一个无限小的乘数(比如你可以理解为 0.000001),则:

y0' = f(x0 - a * k0) < f(x0) = y0
y1' = f(x1 - a * k1) < f(x1) = y1

即我们找到了一个统一的公式描述 x 的变化,让 y' < y

yn' = f(xn - a * kn) < f(xn) = yn

3.2 二元函数的梯度下降理解

基于二元函数的梯度下降的解释,网上也是最多的,它通常被类比成一个下山问题。

二元函数,三维空间梯度下降示意

我们用函数z表示曲面:z = f(x,y)
并希望通过 x、y 的变化使 z 取得最小值。
梯度下降的策略即为持续寻找 z',使 z' < z
方法即为将函数 f(x,y) 分别在 x,y 方向上面求偏导,然后组合成二维向量作为梯度方向,再朝着梯度相反(下降)的方向移动 x,y

zn' = f(xn - a * kxn, yn - a * kyn) < f(xn, yn) = zn

3.3 多元函数的梯度下降理解

在神经网络的世界中,「元」往往是成千上万,甚至上亿的,我们无法用图片进行有效的表达(因为我们难以绘制多维空间)。但基于数学公式,我们依然可以计算出某个点(100维空间的点则由100个数字组成)的梯度方向,依然可以再某个具体点上沿着梯度下降的方向移动一小步,让新的「位置」计算出来的函数值比之前的位置的函数值小

4 回顾

回到我们最初的问题,模型的参数在训练过程中是怎样被修正的?你有更深的理解了么?
当我们理解了「反向传播」与「梯度下降」,我们终于发现了神器的神经网络训练与我们学过的额数学知识的强关联:求导,求偏导……

虽然这些任务不需要我们自己处理(框架已经做好),但清楚了原理总让我们感到……

好舒服啊~:)

往期回顾

将AI拉下神坛(一):黑白纸片摆出的神经网络
将AI拉下神坛(二):重复的学习居然真的有效!来来,先将课文抄写100遍!
将AI拉下神坛(三):从OCR的应用过程到模型推理抽象
将AI拉下神坛(四):越挫越勇,在对抗中创造!你可以轻松地认知GAN的存在。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,099评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,473评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,229评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,570评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,427评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,335评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,737评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,392评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,693评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,730评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,512评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,349评论 3 314
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,750评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,017评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,290评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,706评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,904评论 2 335