[转载]怎么简单理解贝叶斯公式

作者:李现民
链接:https://www.zhihu.com/question/51448623/answer/147298455
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

贝叶斯公式与两个概率有关系,一个是先验概率(基础概率),一个是现象概率(观察到的条件)

例子:某城市发生了一起汽车撞人逃跑事件,该城市只有两种颜色的车,蓝色15%,绿色85%,事发时有一个人在现场看见了,他指证是蓝车。但是根据专家在现场分析,当时那种条件能看正确的可能性是80%。那么,肇事的车是蓝车的概率到底是多少?

令B是城市里车为蓝色的事件,G为车子是绿色的事件,E为观察到车子为蓝色的事件。则由已知条件可以得出P(B)=0.15,P(G)=P(~B)=0.85,至于P(E)我们一会儿再说。

好了,现在,如果没有证人看到肇事者车的话,那么我们只能盲猜,因此肇事者的车子为蓝色的概率只能是整个城市里面车为蓝色的概率,也就是先验概率P(B)=0.15,因为这时我们还没有其他证据介入,只能做个粗略的估算。

接下来,当当当当,有证人了。证人说他看到了车子,并且说是蓝色的,注意,这分两种情况,…………重要的事情说两遍:贝叶斯里面现象(新的证据)部分总是分两种情况出现的:一是车子的确是蓝色的,并且证人也正确的分辨出车是蓝色的来了,概率为 P(E,B)=P(B)xP(E|B)=0.15×0.8=0.12,二是车子根本就是绿色的,只是证人看成蓝色的了,概率为P(E,~B)=P(~B)xP(E|~B)=P(~B)x(1 – P(~E|~B))=0.85x(1-0.8)=0.17,所以P(E)=P(E,B)+P(E,~B)=0.12+0.17=0.29

 

然后,我们要求解的其实是在有证人的条件下车子为蓝色的概率,也就是P(B|E)=P(E,B)/P(E)=0.12/0.29=0.41

你看,P(B|E)根本就是P(B)的加强版本,条件概率跟先验概率描述的根本就是同一件事。那么当当当当,又一个结论来了:当有新的证据出现时,P(B|E)会替代原来P(B)的角色。换句话说,现在警察找到了一个新的证人,他也觉得这辆肇事车是蓝色的,这时在新一轮的贝叶斯概率计算中,基础概率P(B)=0.41,而不是原先的0.15,大家可以算一下,新的P(B|E)=0.73,换句话说,当有两个人看见肇事车辆为蓝色的时候,对比只有一个人看到肇事车辆为蓝色的时候,该车实际为蓝色的概率大大增加

关于贝叶斯,写过一篇文章专门详述了相关的内容,可以参考链接:

lixianmin/cloud

常用的激活函数

参考自: http://blog.csdn.net/zahuopuboss/article/details/70056231

1. 激活函数

  • Rectified Linear Unit(ReLU) – 用于隐层神经元输出
  • Sigmoid – 用于隐层神经元输出
  • Softmax – 用于多分类神经网络输出
  • Linear – 用于回归神经网络输出(或二分类问题)
    ReLU函数计算如下:
                           
    Sigmoid函数计算如下:
                           
    Softmax函数计算如下:
                           
    Softmax激活函数只用于多于一个输出的神经元,它保证所以的输出神经元之和为1.0,所以一般输出的是小于1的概率值,可以很直观地比较各输出值。

2.为什么选择ReLU?

    深度学习中,我们一般使用ReLU作为中间隐层神经元的激活函数,AlexNet中提出用ReLU来替代传统的激活函数是深度学习的一大进步。我们知道,sigmoid函数的图像如下:
    而一般我们优化参数时会用到误差反向传播算法,即要对激活函数求导,得到sigmoid函数的瞬时变化率,其导数表达式为:
    对应的图形如下:
    由图可知,导数从0开始很快就又趋近于0了,易造成“梯度消失”现象,而ReLU的导数就不存在这样的问题,它的导数表达式如下:
    Relu函数的形状如下(蓝色):
    对比sigmoid类函数主要变化是:1)单侧抑制 2)相对宽阔的兴奋边界 3)稀疏激活性。这与人的神经皮层的工作原理接近。

3. 为什么需要偏移常量?

    通常,要将输入的参数通过神经元后映射到一个新的空间中,我们需要对其进行加权和偏移处理后再激活,而不仅仅是上面讨论激活函数那样,仅对输入本身进行激活操作。比如sigmoid激活神经网络的表达式如下:
    x是输入量,w是权重,b是偏移量(bias)。这里,之所以会讨论sigmoid函数是因为它能够很好地说明偏移量的作用。
    权重w使得sigmoid函数可以调整其倾斜程度,下面这幅图是当权重变化时,sigmoid函数图形的变化情况:
    上面的曲线是由下面这几组参数产生的:
    我们没有使用偏移量b(b=0),从图中可以看出,无论权重如何变化,曲线都要经过(0,0.5)点,但实际情况下,我们可能需要在x接近0时,函数结果为其他值。下面我们改变偏移量b,它不会改变曲线大体形状,但是改变了数值结果:
    上面几个sigmoid曲线对应的参数组为:
    这里,我们规定权重为1,而偏移量是变化的,可以看出它们向左或者向右移动了,但又在左下和右上部位趋于一致。
    当我们改变权重w和偏移量b时,可以为神经元构造多种输出可能性,这还仅仅是一个神经元,在神经网络中,千千万万个神经元结合就能产生复杂的输出模式。

常用的激活函数:

  1. Logistic回归:
    Logistic回归是解决二分类问题的分类算法。
  2. Softmax回归:
    Softmax是Logistic回归在多分类上的推广。
也可以理解为Logistic回归算法是Softmax回归的特征情况,即分类数为2时的情况。

在tensorflow经典的mnist例子中,隐藏层中使用 relu()替代sigmoid()就能加速收敛,并有效提高收敛得到的准确度。但在输出层中, 要使用softmax()来应对多分类的情况, 如果还用relu()的话,会导致准确度收到于0.1014,效果相当于没有训练。

 

 

一文读懂卷积神经网络

该篇文章, 转载自: http://blog.csdn.net/stdcoutzyx/article/details/41596663

卷积神经网络

自今年七月份以来,一直在实验室负责卷积神经网络(Convolutional Neural Network,CNN),期间配置和使用过theano和cuda-convnet、cuda-convnet2。为了增进CNN的理解和使用,特写此博文,以其与人交流,互有增益。正文之前,先说几点自己对于CNN的感触。先明确一点就是,Deep Learning是全部深度学习算法的总称,CNN是深度学习算法在图像处理领域的一个应用。

  • 第一点,在学习Deep learning和CNN之前,总以为它们是很了不得的知识,总以为它们能解决很多问题,学习了之后,才知道它们不过与其他机器学习算法如svm等相似,仍然可以把它当做一个分类器,仍然可以像使用一个黑盒子那样使用它。
  • 第二点,Deep Learning强大的地方就是可以利用网络中间某一层的输出当做是数据的另一种表达,从而可以将其认为是经过网络学习到的特征。基于该特征,可以进行进一步的相似度比较等。
  • 第三点,Deep Learning算法能够有效的关键其实是大规模的数据,这一点原因在于每个DL都有众多的参数,少量数据无法将参数训练充分。

接下来话不多说,直接奔入主题开始CNN之旅。

1. 神经网络

首先介绍神经网络,这一步的详细可以参考资源1。简要介绍下。神经网络的每个单元如下:

logistic

其对应的公式如下:

equal

其中,该单元也可以被称作是Logistic回归模型。当将多个单元组合起来并具有分层结构时,就形成了神经网络模型。下图展示了一个具有一个隐含层的神经网络。

equal

其对应的公式如下:

equal

比较类似的,可以拓展到有2,3,4,5,…个隐含层。

神经网络的训练方法也同Logistic类似,不过由于其多层性,还需要利用链式求导法则对隐含层的节点进行求导,即梯度下降+链式求导法则,专业名称为反向传播。关于训练算法,本文暂不涉及。

2 卷积神经网络

在图像处理中,往往把图像表示为像素的向量,比如一个1000×1000的图像,可以表示为一个1000000的向量。在上一节中提到的神经网络中,如果隐含层数目与输入层一样,即也是1000000时,那么输入层到隐含层的参数数据为1000000×1000000=10^12,这样就太多了,基本没法训练。所以图像处理要想练成神经网络大法,必先减少参数加快速度。就跟辟邪剑谱似的,普通人练得很挫,一旦自宫后内力变强剑法变快,就变的很牛了。

2.1 局部感知

卷积神经网络有两种神器可以降低参数数目,第一种神器叫做局部感知野。一般认为人对外界的认知是从局部到全局的,而图像的空间联系也是局部的像素联系较为紧密,而距离较远的像素相关性则较弱。因而,每个神经元其实没有必要对全局图像进行感知,只需要对局部进行感知,然后在更高层将局部的信息综合起来就得到了全局的信息。网络部分连通的思想,也是受启发于生物学里面的视觉系统结构。视觉皮层的神经元就是局部接受信息的(即这些神经元只响应某些特定区域的刺激)。如下图所示:左图为全连接,右图为局部连接。

equal

在上右图中,假如每个神经元只和10×10个像素值相连,那么权值数据为1000000×100个参数,减少为原来的万分之一。而那10×10个像素值对应的10×10个参数,其实就相当于卷积操作。

2.2 参数共享

但其实这样的话参数仍然过多,那么就启动第二级神器,即权值共享。在上面的局部连接中,每个神经元都对应100个参数,一共1000000个神经元,如果这1000000个神经元的100个参数都是相等的,那么参数数目就变为100了。

怎么理解权值共享呢?我们可以这100个参数(也就是卷积操作)看成是提取特征的方式,该方式与位置无关。这其中隐含的原理则是:图像的一部分的统计特性与其他部分是一样的。这也意味着我们在这一部分学习的特征也能用在另一部分上,所以对于这个图像上的所有位置,我们都能使用同样的学习特征。

更直观一些,当从一个大尺寸图像中随机选取一小块,比如说 8×8 作为样本,并且从这个小块样本中学习到了一些特征,这时我们可以把从这个 8×8 样本中学习到的特征作为探测器,应用到这个图像的任意地方中去。特别是,我们可以用从 8×8 样本中所学习到的特征跟原本的大尺寸图像作卷积,从而对这个大尺寸图像上的任一位置获得一个不同特征的激活值。

如下图所示,展示了一个3×3的卷积核在5×5的图像上做卷积的过程。每个卷积都是一种特征提取方式,就像一个筛子,将图像中符合条件(激活值越大越符合条件)的部分筛选出来。

equal

2.3 多卷积核

上面所述只有100个参数时,表明只有1个10*10的卷积核,显然,特征提取是不充分的,我们可以添加多个卷积核,比如32个卷积核,可以学习32种特征。在有多个卷积核时,如下图所示:

equal

上图右,不同颜色表明不同的卷积核。每个卷积核都会将图像生成为另一幅图像。比如两个卷积核就可以将生成两幅图像,这两幅图像可以看做是一张图像的不同的通道。如下图所示,下图有个小错误,即将w1改为w0,w2改为w1即可。下文中仍以w1和w2称呼它们。

下图展示了在四个通道上的卷积操作,有两个卷积核,生成两个通道。其中需要注意的是,四个通道上每个通道对应一个卷积核,先将w2忽略,只看w1,那么在w1的某位置(i,j)处的值,是由四个通道上(i,j)处的卷积结果相加然后再取激活函数值得到的。

equal

equal

所以,在上图由4个通道卷积得到2个通道的过程中,参数的数目为4×2×2×2个,其中4表示4个通道,第一个2表示生成2个通道,最后的2×2表示卷积核大小。

2.4 Down-pooling

在通过卷积获得了特征 (features) 之后,下一步我们希望利用这些特征去做分类。理论上讲,人们可以用所有提取得到的特征去训练分类器,例如 softmax 分类器,但这样做面临计算量的挑战。例如:对于一个 96X96 像素的图像,假设我们已经学习得到了400个定义在8X8输入上的特征,每一个特征和图像卷积都会得到一个 (96 − 8 + 1) × (96 − 8 + 1) = 7921 维的卷积特征,由于有 400 个特征,所以每个样例 (example) 都会得到一个 7921 × 400 = 3,168,400 维的卷积特征向量。学习一个拥有超过 3 百万特征输入的分类器十分不便,并且容易出现过拟合 (over-fitting)。

为了解决这个问题,首先回忆一下,我们之所以决定使用卷积后的特征是因为图像具有一种“静态性”的属性,这也就意味着在一个图像区域有用的特征极有可能在另一个区域同样适用。因此,为了描述大的图像,一个很自然的想法就是对不同位置的特征进行聚合统计,例如,人们可以计算图像一个区域上的某个特定特征的平均值 (或最大值)。这些概要统计特征不仅具有低得多的维度 (相比使用所有提取得到的特征),同时还会改善结果(不容易过拟合)。这种聚合的操作就叫做池化 (pooling),有时也称为平均池化或者最大池化 (取决于计算池化的方法)。

equal

至此,卷积神经网络的基本结构和原理已经阐述完毕。

2.5 多层卷积

在实际应用中,往往使用多层卷积,然后再使用全连接层进行训练,多层卷积的目的是一层卷积学到的特征往往是局部的,层数越高,学到的特征就越全局化。

3 ImageNet-2010网络结构

ImageNet LSVRC是一个图片分类的比赛,其训练集包括127W+张图片,验证集有5W张图片,测试集有15W张图片。本文截取2010年Alex Krizhevsky的CNN结构进行说明,该结构在2010年取得冠军,top-5错误率为15.3%。值得一提的是,在今年的ImageNet LSVRC比赛中,取得冠军的GoogNet已经达到了top-5错误率6.67%。可见,深度学习的提升空间还很巨大。

下图即为Alex的CNN结构图。需要注意的是,该模型采用了2-GPU并行结构,即第1、2、4、5卷积层都是将模型参数分为2部分进行训练的。在这里,更进一步,并行结构分为数据并行与模型并行。数据并行是指在不同的GPU上,模型结构相同,但将训练数据进行切分,分别训练得到不同的模型,然后再将模型进行融合。而模型并行则是,将若干层的模型参数进行切分,不同的GPU上使用相同的数据进行训练,得到的结果直接连接作为下一层的输入。

equal

上图模型的基本参数为:
  • 输入:224×224大小的图片,3通道
  • 第一层卷积:11×11大小的卷积核96个,每个GPU上48个。
  • 第一层max-pooling:2×2的核。
  • 第二层卷积:5×5卷积核256个,每个GPU上128个。
  • 第二层max-pooling:2×2的核。
  • 第三层卷积:与上一层是全连接,3*3的卷积核384个。分到两个GPU上个192个。
  • 第四层卷积:3×3的卷积核384个,两个GPU各192个。该层与上一层连接没有经过pooling层。
  • 第五层卷积:3×3的卷积核256个,两个GPU上个128个。
  • 第五层max-pooling:2×2的核。
  • 第一层全连接:4096维,将第五层max-pooling的输出连接成为一个一维向量,作为该层的输入。
  • 第二层全连接:4096维
  • Softmax层:输出为1000,输出的每一维都是图片属于该类别的概率。

4 DeepID网络结构

DeepID网络结构是香港中文大学的Sun Yi开发出来用来学习人脸特征的卷积神经网络。每张输入的人脸被表示为160维的向量,学习到的向量经过其他模型进行分类,在人脸验证试验上得到了97.45%的正确率,更进一步的,原作者改进了CNN,又得到了99.15%的正确率。

如下图所示,该结构与ImageNet的具体参数类似,所以只解释一下不同的部分吧。

equal

上图中的结构,在最后只有一层全连接层,然后就是softmax层了。论文中就是以该全连接层作为图像的表示。在全连接层,以第四层卷积和第三层max-pooling的输出作为全连接层的输入,这样可以学习到局部的和全局的特征。

5 参考资源

  • [1] http://deeplearning.stanford.edu/wiki/index.php/UFLDL%E6%95%99%E7%A8%8B 栀子花对Stanford深度学习研究团队的深度学习教程的翻译
  • [2] http://blog.csdn.net/zouxy09/article/details/14222605 csdn博主zouxy09深度学习教程系列
  • [3] http://deeplearning.net/tutorial/ theano实现deep learning
  • [4] Krizhevsky A, Sutskever I, Hinton G E. Imagenet classification with deep convolutional neural networks[C]//Advances in neural information processing systems. 2012: 1097-1105.
  • [5] Sun Y, Wang X, Tang X. Deep learning face representation from predicting 10,000 classes[C]//Computer Vision and Pattern Recognition (CVPR), 2014 IEEE Conference on. IEEE, 2014: 1891-1898.

深度学习相关概念解读

1.过拟合(overfitting):

指一个假设能够很好的拟合训练数据, 却无法在训练数据以外的情况下达到相同的拟合效果. 一般是训练数据太少, 或者是训练数据中存在噪音.

2. 单调函数:

函数在指定的定义域内单调递增或递减.

3.Softmax回归函数:

将神经网络的输出映射到[0,1]这个区间上, 所有输出的累和是1, 满足概率的性质. 我们可以将每个输出映射后得到的值都理解成概率, 在最后对比所有输出节点数据的时候, 就可以选取概率最大的节点作为我们的预测目标.

(图片引用自李宏毅ppt)

4. 学习速度(learning rate):

有的地方翻译为学习率,但还是觉得翻译为学习速度更为直接, 它表示参数到达最优值过程的速度快慢。在神经网络的训练阶段,调整梯度下降算法的学习率可以改变网络权重参数的更新幅度。

形象的例子: 假如你从山峰的最高点根据梯度下降法寻找最优值,当你学习率过大,即下降的快,步子大,那么你很可能会在某一步跨过最优值; 当你学习率过小时,每次下降一厘米,这将走到何年何月呀,用术语来说就是,长时间无法收敛。因此,学习率直接决定着学习算法的性能表现。

一般常用的学习率有0.00001,0.0001,0.001,0.003,0.01,0.03,0.1,0.3,1,3,10.

5.交叉熵(cross entropy)

定义及原理:

(主要参考了知乎: https://www.zhihu.com/question/41252833 )

交叉熵的公式为: \sum_{k=1}^N p_k \log_2 \frac{1}{q_k} ,其中 p_k 表示真实分布, q_k 表示非真实分布

交叉熵,其用来衡量在给定的真实分布下,使用非真实分布所指定的策略消除系统的不确定性所需要付出的努力的大小. 

什么叫真实分布, 什么叫非真实分布?

举例说明如下:

假设一个盒子里面放了800个球, 球的颜色有4种, 颜色种类及数量占比分别为: 橙(1/2),紫(1/4),蓝(1/8), 青(1/8). 表示为 p=(1/2, 1/4, 1/8, 1/8).

这里, 橙(1/2),紫(1/4),蓝(1/8), 青(1/8)就是真实的概率分布.

我们随机从例子4拿出一个球, 让不知道真实概率分布的人来猜球的颜色.

如果这个人用 1/4, 1/4, 1/4, 1/4的概率分布来猜测颜色, 那他猜颜色时所使用的就是非真实分布.表示为 q=(1/4, 1/4, 1/4, 1/4).

交叉熵就是用来衡量在给定真实分布的条件下, 使用非真实分布作为策略消除系统不确定性所需成本的大小.

在交叉熵越小, 策略就越好, 最低的交叉熵也就是使用了真实分布的计算出来的信息熵, 此时 q = p, 交叉熵=信息熵.

在机器学习中的分类算法中, 我们总是最小化交叉熵,因为交叉熵越低, 就证明算法所产生的策略最接近最优策略, 也间接证明我们算法所算出的非真实分布越接近真实分布.

可参考: 吴军 数学之美.
为什么要使用交叉熵?
如下图所示, 一个是通过平方差来描述损失函数, 另一个是通过交叉熵来描述损失函数. 在距离min(Total Loss)比较远的地方, 通过观察斜率, 可以看到平方差的模型在微分后斜率接近于0, 而交叉熵在微分后斜率是比较大的.

因为在min(Total Loss)这个点附近的斜率也是接近于0, 当模型的数据训练到该点附近时, learning rate的值都会设为比较小, 以保证学习的精度, 但这也意味着学习的速度比较慢. 使用平方差来描述损失函数的话, 在距离min(Total Loss)这个点比较远就会出现斜率接近于0的情况, 这将导致整个学习速度变得很慢. 

相反, 交叉熵来描述的损失函数就允许学习速度在离min(Total Loss)这个点比较远的时候, 斜率比较大, 此时learning rate可以取比较大的值. 当斜率比较小时, 意味着离min(Total Loss)这个点比较近, 此时learning rate可以取比较小的值.Learning rate的取值是一个由大至小的变化过程, 可以有效的保证学习的速度及精度.


6. 对数 (取自百度百科)

对数的定义
如果   ,即ax次方等于Na>0,且a≠1),那么数x叫做以a为底N的对数(logarithm),记作  。其中,a叫做对数的

底数

N叫做

真数

x叫做“以a为底N对数”。

1.特别地,我们称以10为底的对数叫做

常用对数

(common logarithm),并记为lg。

称以无理数e(e=2.71828...)为底的对数称为

自然对数

(natural logarithm),并记为ln。

2.零没有对数。

3.在

实数

范围内,负数无对数。在

复数

范围内,负数是有对数的。
对数函数
定义

函数   叫做

对数函数

(logarithmic function),其中x

自变量

。对数函数的定义域是  。

函数基本性质

1、过定点  ,即x=1时,y=0。

2、当  时,在  上是

减函数

;

当  时,在  上是

增函数

 

对数函数

CNN RNN DNN

CNN: 一文读懂卷积神经网络 http://www.36dsj.com/archives/24006
TO BE UPDATE...

. 卷积:

参考自知乎: https://www.zhihu.com/question/22298352

卷积, 与其理解成翻转, 不如理解成延迟后叠加。

假设小明以每年追回定期存款100元, 利息0.05每年
我们将以计算5年后本息总共有多少为例来理解卷积.

第一笔本金, 在每年的累积得到的利息如下所示:

 
每年都存100元, 5年下来, 获利明细如下:

在第5年, 总共可以取得本金加利息的金额如下:

用求和符号来简化这个公式,可以得到:
\sum_{i=0}^{5}{f(i)g(5-i)}, \mathrm{where} \ f(i)=100, g(5-i) = (1.05)^{5-i}
在上式中,f(i)为小明的存钱函数,而g(i)为存入银行的每一笔钱的复利计算函数。在这里,小明最终得到的钱就是他的存钱函数和复利计算函数的卷积。

如果把这个公式从离散推广到连续的情况, 小明从在[0,t]这段时间内持续的存钱, 他的存钱函数就为:f(\tau)\ (0\leq \tau\leq t), 那么在t这个时间点, 单笔存款按复利公式计算得到的收益为:g(t-\tau)=(1+5\%)^{t-\tau}, 则小明到时间t将得到的总钱数为:
\int_{0}^{t} f(\tau)g(t-\tau)d\tau=\int_{0}^{t} f(\tau)(1+5\%)^{t-\tau}d\tau
这也就是卷积的表达式了,上式可以记为(f\ast g)(t)
如果我们将小明的存款函数视为一个信号发生(也就是激励)的过程,而将复利函数g(t-\tau)视为一个系统对信号的响应函数(也就是响应,那么二者的卷积(f\ast g)(t)就可以看做是在t时刻对系统进行观察,得到的观察结果(也就是输出)将是过去产生的所有信号经过系统的「处理/响应」后得到的结果的叠加,这也就是卷积的物理意义了。


.梯度消失

7. 回归

简单理解:
举例来讲,假设我们知道二维平面一系列离散的点 (xi, yi)(i=1,2,...,n)
并且这些点有一个准确的函数:y=f(x)来表示, 我们还不知道这个函数。但我们可以通过统计学上的方法,不断地寻找一个函数,来无限接近于f(x)所表示的关系。这个过程,可以理解为回归。

比较学术的解释:
回归分析是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。所谓回归分析就是分析两个变量在平均意义下的函数关系表达式,回归函数。

它的实际意义就是对于两个具有相关关系但不能给出二者确切函数关系的变量,可以在平均意义下给出两者的近似关系。而分析这两个具有相关关系的变量在平均意义下的函数关系表达式,就是回归函数。

确定两种或者两种以上变量间相互依赖的定量关系的统计分析方法就是回归分析,回归分析主要分为一元回归,多元回归以及线性回归和非线性回归。
也就是说,两个具有相关关系(非确定性关系)的变量,我们通过实际数据绘制散点图,模拟它的趋势,选择合适的回归函数确定这两个变量的可能性关系。

 

 

 

 

 

关于激活函数的理解

本篇内容主要都是参考知乎: https://www.zhihu.com/question/22334626 加上个人理解整理而成, 很多图片直接引用自该帖.

深度学习要处理的数据, 其实基本上是无法通过类似: y = w1*x2+w2*x2+b 这样的线性表达式直接表达出来, 所以需要通过通过激活函数, 间接地达到线性表达式的结果, 直观的表示计算结果为”true” or “false”.

一万个线性函数的复合函数还是线性函数,那还要“深度”学习做什么? 激活函数就是为了增加神经网络对“非线性”数据的表达能力.

Part 1:

某些数据是线性可分的,意思是,可以用一条直线将数据分开。比如下图:

但是有些数据不是线性可分的。比如如下数据:

第二组数据你就没有办法画出一条直线来将数据区分开。

这时候有两个办法,第一个办法,是做线性变换(linear transformation),比如将x,y变成x^2,y^2,这样可以画出圆形。如图所示:

如果将坐标轴从x,y变为以x^2,y^2为标准,你会发现数据经过变换后是线性可分的了。大致示意图如下:

总的来说, 就是将非线性的数据, 拟合成线性的方式来表达.

(原作者描述的: 引入非线性函数, 异或问题的那一段尚未理解, 在此处不引用)

Part 2:

另外一种通俗的理解如下.

首先我们有这个需求,就是二分类问题,如我要将下面的三角形和圆形点进行正确的分类,如下图:

利用我们单层的感知机, 用它可以划出一条线, 把平面分割开:

上图右侧直线可以写成线性表达式: w_{1}x_{1} + w_{2}x_{2}+b=0 . 在直线右侧的为正类, 在直线左侧的为负类.

但是如果出现如下图的情况, 要通过线性函数直接区分开圆形跟三角形的集合, 就无法实现:

很容易能够看出,我给出的样本点根本不是线性可分的,一个感知器无论得到的直线怎么动,都不可能完全正确的将三角形与圆形区分出来.

那如果用多个感知器呢? 比如3个:

我们能够得到

y=w_{2-1}(w_{1-11}x_{1}+ w_{1-21}x_{2}+b_{1-1} )+ w_{2-2}(w_{1-12}x_{1}+ w_{1-22}x_{2}+b_{1-2} )+w_{2-3}(w_{1-13}x_{1}+ w_{1-23}x_{2}+b_{1-3} )

将多项式变换下组合, 我们可以得到:

y=x_{1}(w_{2-1}w_{1-11}+w_{2-2}w_{1-12} +w_{2-3}w_{1-13} )+x_{2} (w_{2-1}w_{1-21}+w_{2-2}w_{1-22} +w_{2-3}w_{1-23} )+w_{2-1} b_{1-1} +w_{2-2} b_{1-2}+w_{2-3} b_{1-3}

其实这本质上还是一个线性表达式, 无法表达非线性问题.

深度学习肯定不只是能处理线性问题, 更重要的是能处理非线性问题.

在上面线性方程的组合过程中,我们其实类似在做三条直线的组合,如下图:

这个时候可以开始引入激活函数了, 这里就给出sigmoid例子,如下图:

通过这个激活函数映射之后,输出很明显就是一个非线性函数!能不能解决一开始的非线性分类问题不清楚,但是至少说明有可能啊,上面不加入激活函数神经网络压根就不可能解决这个问题~

当扩展到多个神经元组合的情况时候,表达能力就会更强~对应的组合图如下:(现在已经升级为三个非线性感知器在组合了)

跟上面线性组合相对应的非线性组合如下:

这看起来厉害多了,是不是~最后再通过最优化损失函数的做法,我们能够学习到不断学习靠近能够正确分类三角形和圆形点的曲线,到底会学到什么曲线,不知道到底具体的样子,也许是下面这个~

那么随着不断训练优化,我们也就能够解决非线性的问题了

所以到这里为止,我们就解释了这个观点: 加入激活函数是用来加入非线性因素的,解决线性模型所不能解决的问题。