首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

关于神经网络容易被忽视的基础知识(三)

该系列主要讲解的内容是神经网络容易被忽视的基础知识,这次讲第三部分:

基本神经元

作为线性分类器的单个神经元

为什么要是深度神经网而不是”肥胖“神经网络?

为什么在人工神经网络中的神经元需要激活函数?

一些主要的激活函数

神经网络中的偏置有什么意义?

初始化神经网络的参数可以全为0吗,其他普通线性分类器呢?

交叉熵损失存在的意义和与平方差损失相比有什么好处?

初始化神经网络的参数可以全为0吗,其他普通线性分类器呢?

在讲初始化前,先简单复习下反向传播算法可表示为以下几个步骤:

我们前面说过:线性分类器逻辑回归模型可以算作为一个简单的单层神经网络。为了更好的说明问题,假设一个场景,在十类分类的数字手写识别中,我们将本来二分类的逻辑回归推到多分类的softmax,也就是说,神经元的激活函数是softmax。也就是下图,然后分析:

输入层(不算是一层):28×28=784个输入单元。也就是n=784

输出层:10个输出单元, 激活函数为softmax,也就是m=10

它由两组参数组成:W和b, 前者是一个10×784维的权值矩阵, 后者是长度为10的bias 列向量.现在我们假设把它们全部初始化为0:

第一次正向计算过程中, 简单算出,输出层的所有输出为0.5.

由于w值已经变得不相同了,这个时候前向传播和后向传播也就会正常的进行, 后面的训练显然也可以顺利进行.

得出结论,没有隐层时, 可以将所有的参数初始化为0.

如果有隐层呢?假如还是用sigmoid激活函数呢。来个更简单MLP,

第一次正向计算过程中, 简单算出,输出层的所有输出为神经元4,5,6输出的值(初始化w,b为0,激活函数是sigmoid)都是一样的,都是0.5

对于隐层使用了其他函数比如ReLU:f(net)=max(0,net)其结果也是一样的: 除了输入层的输出值为x本身, 不为0, 其余的所有层的输出都为0. BP时所有梯度也都为0, 包括输出层. 这意味着所有的非输入神经元都是无意义的. 学习失败.对于卷积神经网络,循环神经网络也是一样的,故一般会用其他初始化方式。

最后最后的结论是,一般只在训练SLP/逻辑回归模型时才使用0初始化所有参数., 更实用的结论是, 深度模型都不会使用0初始化所有参数.

交叉熵存在的意义和与平方差相比有什么好处?

一个非常常见的,非常漂亮的成本函数是“交叉熵”(cross-entropy)。交叉熵产生于信息论里面的信息压缩编码技术,但是它后来演变成为从博弈论到机器学习等其他领域里的重要技术手段。它的定义如下:

其中,y 是我们预测的概率分布, y’ 是实际的分布

1.交叉熵是正的,2.当所有输入x的输出都能接近期望输出y的话,交叉熵的值将会接近 0。这两个特征在直觉上我们都会觉得它适合做代价函数。事实上,我们的均方代价函数也同时满足这两个特征。然而....

为什么在神经网络中用交叉熵代替二次代价函数?

还是从反向传播,参数更新的角度理解更新参数的公式如下:

a 是 神经元的输出,其中 a = σ(z), z = wx + b,可知,偏导数受激活函数的导数影响,假设这里是传统的sigmoid激活函数(在之前很多时候都是)。那么sigmoid 的导数在输出接近 0 和 1 的时候 是非常小的,这会导致一些实例在刚开始训练时学习得非常慢!

但是如果换成是交叉熵loss,其更新权重公式最后推导得出如下:

由以上公式可知,权重学习的速度受到 σ(z) − y 影响,更大的误差,就有更快的学习速度,还避免了二次代价函数方程中因 σ′(z) 导致的学习缓慢。

但是现在也有很多其他的激活函数并不会产生饱和状态,那么均方差也有其存在价值。

AI遇见机器学习

mltoai

一个有态度的知识分享号,长按识别左侧二维码,关注我们吧!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180302G1KYNT00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券