“山外有山比山高”-为什么叫深度学习?

模型的复杂表示

在上一节中(参考链接“众里寻他千百度”-深度学习的本质),讨论了如何通过简单的回归模型预测未来一天的youtube频道的观看人数。事实上,在上一节的案例介绍中,使用的是线性回归模型。现在,考虑更复杂的情况。因为线性回归模型的特点是只能简单的认为前一天的观看人数和后一天的观看人数之间是简单的直线关系,但是在现实的情况中,可能二者之间的关系比较复杂,可能呈现出先上升后下降再上升的态势。因此,需要考虑如何表示复杂的曲线,来增强模型的拟合能力。

图1 复杂曲线的表示_1

在上图中,红色的曲线可以看成由三段直线组成,在机器学习中称为分段直线(Picese Linear Curve)。在图1中可以通过常数项(Constant)和多个蓝色曲线的总和来表示红色的曲线,其中,“0号位”的直线代表常数项。由于红色曲线左侧的直线与“1号位”中间的直线斜率相等,因此,可以红色曲线左侧的直线可以通过“0号位”的直线代表常数项与“1号位”分段直线相加来表示。依此类推,红色曲线中间的直线可以通过“0号位”的直线代表常数项与“2号位”分段直线相加来表示;红色曲线右侧的直线可以通过“0号位”的直线代表常数项与“3号位”分段直线相加来表示。如此,便证明了可以通过常数项和多个蓝色曲线的总和来表示红色的曲线。

图2 复杂曲线的表示_2

前一天的观看人数和后一天的观看人数之间的关系可能并不是分线段直线的表示形式,可能是在图2中黑色的连续曲线(Continuous Curve)的形式。经过进一步分析发现,在黑色曲线上标记合适点(图2中绿色的点)或者标记足够的点,便可以使用分线段的直线来近似表示黑色的连续曲线。

由于分线段的直线可以使用常数项和多个蓝色曲线表示,这就等价于使用足够多的蓝色曲线可以近似表示黑色的连续曲线。因此,复杂模型表示问题的本质在于如何寻找蓝色曲线的函数表达式。

如图3所示,可以通过sigmoid函数曲线(虚线)来代替蓝色的曲线。在机器学习中,蓝色的曲线也被称为Hard Sigmoid。

图3 sigmoid曲线

                                                                                         \begin{aligned}

y & =c \frac{1}{1+e^{-\left(b+w x_{1}\right)}} \\

& =c \operatorname{sigmoid}\left(b+w x_{1}\right)

\end{aligned}                                                                                  (1)

Sigmoid函数的函数表达式见公式(1),函数中包括了3个参数c、b和w。其中,c决定了Sigmoid曲线的高度,b决定了Sigmoid曲线变化的快慢,w决定了Sigmoid曲线的坡度。

综上所述,可以使用三个不同的Sigmoid函数之和加上一个常数项来近似表示红色的曲线,见公式(2)。在式(2)中,i代表不同的Sigmoid函数,本例中i取整数1至3。

                                                                                y=b+\sum_{i} c_{i} \operatorname{sigmoid}\left(b_{i}+w_{i} x_{1}\right)                                                                       (2)


多元特征的引入

未来一天的观看人数可能不仅仅只和前一天的观看人数有关,可能还和前几天的观看人数都有联系。在这种情况下可以将多元的情况引入,模型的表现会更好。由此,可以将公式(2)进一步拓展为公式(3)。

                                                                        y=b+\sum_{i} c_{i} \text { sigmoid }\left({b_{i}+\sum_{j} w_{i j} x_{j}}\right)                                                                (3)

在公式(3)中,下标j表示输入x的编号,如果人为未来一天的观看人数与前三天的观看人数都有关系,j的取值即为1至3。

现在假定i和j的取值均为整数1至3,进一步讨论公式(3)的表达形式。假设,Sigmoid函数里的表达式是一个整体,用符号r表示,r和x之间的关系见公式(4)。

                                                                            \begin{array}{l}

r_{1}=b_{1}+w_{11} x_{1}+w_{12} x_{2}+w_{13} x_{3} \\

r_{2}=b_{2}+w_{21} x_{1}+w_{22} x_{2}+w_{23} x_{3} \\                                           

r_{3}=b_{3}+w_{31} x_{1}+w_{32} x_{2}+w_{33} x_{3}

\end{array}                                                                          (4)

可以将其进一步表示成矩阵的形式见式(5),式(5)的简写表达为式(6)。

                                                                       \left[\begin{array}{l}

r_{1} \\

r_{2} \\

r_{3}

\end{array}\right]=\left[\begin{array}{l}

b_{1} \\

b_{2} \\

b_{3}

\end{array}\right]+\left[\begin{array}{lll}

w_{11} & w_{12} & w_{13} \\

w_{21} & w_{22} & w_{23} \\

w_{31} & w_{32} & w_{33}

\end{array}\right]\left[\begin{array}{l}

x_{1} \\

x_{2} \\

x_{3}

\end{array}\right]                                                            (5)

                                                                                                \boldsymbol{r}=\boldsymbol{b}+\boldsymbol{W} \boldsymbol{x}                                                                                                 (6)

在式(6)中,\boldsymbol{r}\boldsymbol{b}\boldsymbol{x}为向量,\boldsymbol{W}为矩阵。

将向量r代入Sigmoid函数,可得向量a,见公式(7)。

                                                                                                   \boldsymbol{a}=\sigma(\boldsymbol{r})                                                                                                      (7)

由于式(3)本质上为3个Sigmoid函数之和,只是权重c不同,类似于用权重c加权,再加上常数项b。因此式(3)可以写成\boldsymbol{c^{T}}和\boldsymbol{a}作点积,再加上常数项b的形式,见公式(8)。

                                                                                               \boldsymbol{y}= b+ \boldsymbol{c^{T}} \boldsymbol{a}                                                                                                   (8)

神经网络的形成

如果将公式(6)值公式(8),通过符号学派的符号表示,可以发现其实当前的模型已经形成了一个“网络”形状的结构,见图4。在图4中,最右侧的黄色方块表示模型的输入即x,也被称为特征(Feature)。与输入直接相连的箭头表示权重w(Weight)和输入对应的x相乘。输入箭头指向的浅蓝色方块中是“+”号,同时代表偏差(bias)的绿色方块指向浅蓝色方块,表示权重和输入相乘的结果与偏差相加。蓝色的球形表示Sigmoid函数,浅蓝色方块的箭头又指向蓝色球形,表示经浅蓝色方块得到的结果r代入Sigmoid函数。经过蓝色的球形之后,得到黄色的方块a。依此类推,a和权重c相乘,加上常数项最终得到结果y。

图4 复杂模型的符号表示

在深度学习中,将蓝色的球形,也就是这里的Sigmoid函数,称为激活函数(Activation Function)。由于图4所表示的“网状结构”与人脑的神经元十分类似,因此激活函数也被称为神经元(Neruon)。图4中,一排的神经元(3个Sigmoid)被称为隐藏层(Hidden Layer)。隐含层的个数以及每层神经元的个数均为超参数,需要依据经验和专业领域的认知确定。这样,图4便构成了一个神经网络(Nerual Network)。

激活函数不止Sigmoid函数一种。除了Sigmoid之外,常用的激活函数还有Relu函数(Rectified Linear Unit),其函数表达式见公式(9)。

                                                                                                y=c \max \left(0, b+w x_{1}\right)                                                                              (9)

公式(9)所表达的含义是,取0和某直线的最大值,并乘以权重C,调节曲线的高度。事实上,图1中的深蓝色曲线就是由两个Relu函数曲线相加得到的,见图5。至于激活函数的确定也是一个超参数,需要训练模型之前事先给定。

图5 蓝色曲线的Relu表示

1.4 网络的训练过程

神经网络的训练过程(Train)和上一节中介绍的回归模型的训练步骤基本一致,包括确定包含未知参数的函数、定义损失函数、优化参数三个步骤。

根据公式(6)至公式(8),不难发现神经网络模型打的未知参数包括\boldsymbol{b}\boldsymbol{W}\boldsymbol{c}和b。由此,确定了包含未知参数的函数。

损失函数的定义与上一节一样,将样本估计值与实际值之间的均方误差作为损失函数,这里即为L(\theta)。因此,优化参数的过程即为寻找一组最优的参数使得损失函数最小,将神经网络模型中的所有参数按照顺序排成一个列向量,通过梯度下降算法,可得参数的一次更新(Update)过程见公式(10)。

                                                                                  \left[\begin{array}{c}

\theta_{1}^{1} \\

\theta_{2}^{1} \\

\vdots

\end{array}\right] \leftarrow\left[\begin{array}{c}

\theta_{1}^{0} \\

\theta_{2}^{0} \\

\vdots                                                                     

\end{array}\right]-\left[\begin{array}{c}

\left.\eta \frac{\partial L}{\partial \theta_{1}}\right|_{\boldsymbol{\theta}=\boldsymbol{\theta}^{0}} \\

\left.\eta \frac{\partial L}{\partial \theta_{2}}\right|_{\boldsymbol{\theta}=\boldsymbol{\theta}^{0}} \\

\vdots

\end{array}\right]                                                                       (10)

公式(10)也可通过矩阵向量表示,记为公式(11)。

                                                                                                \boldsymbol{\theta}^{1} \leftarrow \boldsymbol{\theta}^{0}-\eta \boldsymbol{g}                                                                                              (11)

图6 神经网络的训练

在实际的训练过程中,每次更新参数不会使用所有的训练数据,而是将训练数据划分多个批次(Batch)进行训练,如图6所示。在图6中,假设训练资料的样本总个数为N,每个批次包含样本个数为B,每个批次中的样本随机划分。第一个批次的损失记为L^{1},第一次参数更新即用\theta^{0}减去\eta倍的L^{1}\theta^{0}的梯度得到,见公式(12)。依此类推,可以对所有的批次进行参数的更新。当参数优化经历了所有批次之后,模型训练经历了一个完整的回合(Epoch)。每个批次的样本个数(Batch Size)以及训练的回合数(Epoch)也是超参数。

                                                                                             \boldsymbol{\theta}^{1} \leftarrow \boldsymbol{\theta}^{0}-\eta \boldsymbol{\nabla L^{1}\left(\boldsymbol{\theta}^{0}\right)}                                                                               (12)

1.5从神经网络到深度学习

图7 深度学习的符号表示

在上文中,建立了一个带有1个隐藏层的神经网络模型。随着隐藏层的不断增加(在图7的示例中,神经网络模型包含了两个隐藏层。),隐藏层的深度不断变深,便得到了深度学习(Deep Learning)模型。因此,从网络结构的角度来看,深度学习之所以称之为“深”的根本原因是隐藏层数变深。伴随着算力和数据量不断革新,深度学习模型也揭开了“山外有山比山高”的序幕。

图8 深度学习模型的演化

2012年,推出的AlexNet模型有8层隐藏层,把图像分类(基准资料)的错误率为16.4%;2014年,推出的VGG模型有19层隐藏层,图像分类的错误率降低至7.3%;2014年,推出的GoogleNet有22层隐藏层,图像分类的错误率降低至6.7%;到了2015年,推出的Residual Net将隐含层的个数迅速增加至152层,图像分类的错误率降低至3.57%。深度学习模型的演化过程真正揭示了“山外有山比山高”的含义。

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

推荐阅读更多精彩内容