深度学习入门之神经网络
Posted MNTMDEV
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度学习入门之神经网络相关的知识,希望对你有一定的参考价值。
导入
上一次我们主要介绍了神经网络中层与层之间的信号传递,书接上回,我们来继续介绍神经网络输出层的相关知识。
输出层的激活函数
神经网络可以用在分类问题和回归问题上,需要根据情况改变输出层的激活函数。
一般而言,回归问题(例如根据图像预测体重)用恒等函数,分类问题用softmax(例如分辨图像中人的性别)函数。
恒等函数会将输入按原样输出,在输出层使用恒等函数,输入信号会原封不动的输出。
softmax函数
分类问题中使用的softmax函数可以用下面的式(4.1)表示:
exp(x)是表示e^x的指数函数。softmax函数的分子是输入信号ak的指数函数,分母是所有输入信号的指数函数的和。
显而易见的,softmax函数的输出是0.0到1.0之间的实数。并且,softmax函数的输出值的总和是1。这是softmax函数的一个重要性质。正因为有了这个性质,我们才可以把softmax函数的输出解释为“概率”。
这里需要注意的是,即便使用了softmax函数,各个元素之间的大小关系也不会改变。这是因为指数函数(y = exp(x))是单调递增函数。
一般而言,神经网络只把输出值最大的神经元所对应的类别作为识别结果。并且,即便使用softmax函数,输出值最大的神经元的位置也不会变。因此,神经网络在进行分类时,输出层的softmax函数可以省略。在实际的问题中,由于指数函数的运算需要一定的计算机运算量,因此输出层的softmax函数一般会被省略。
输出层的神经元数量
输出层的神经元数量需要根据待解决的问题来决定。对于分类问题,输出层的神经元数量一般设定为类别的数量。比如,对于某个输入图像,预测是图中的数字0到9中的哪一个的问题(10类别分类问题),可以将输出层的神经元设定为10个。
知识补充
神经网络的激活函数必须使用非线性函数。换句话说,激活函数不能使用线性函数。为什么不能使用线性函数呢?
因为使用线性函数的话,加深神经网络的层数就没有意义了。
线性函数的问题在于,不管如何加深层数,总是存在与之等效的“无隐藏层的神经网络”。
为了稍微直观地理解这一点,我们来思考下面这个简单的例子。
这里我们考虑把线性函数 h(x) = cx 作为激活函数,把y(x) = h(h(h(x)))的运算对应3层神经网络。这个运算会进行y(x)=c*c*c*x的乘法运算,但是同样的处理可以由y(x)=ax(注意,a=c^3)这一次乘法运算(即没有隐藏层的神经网络)来表示。如本例所示,使用线性函数时,无法发挥多层网络带来的优势。
因此,为了发挥叠加层所带来的优势,激活函数必须使用非线性函数。
总结
我们这一次主要介绍的是神经网络中输出层的设计,另外补充了以下小知识。期待下周的再次相遇~此次到这里就结束了,秋咪~。
mntmdev
github
MNTMDEV@github.com
以上是关于深度学习入门之神经网络的主要内容,如果未能解决你的问题,请参考以下文章