为什么机器学习需要一个激励函数

那首先第一个问题,什么是激励函数呢?首先用简单的语句进行概括,就好比我们的现实总是残酷的,而我们周围的生活也是时刻发生这变化的,那其实所谓的激励函数就是来去解决我们在机器学习中无法用线性方程去解决的问题,那么这个时候你可能会想,什么是线性方程呢?

图0:为什么机器学习需要一个激励函数

作者:云时之间

各位小伙伴们大家好,好久不见,今天让我们来一起聊一聊现代神经网络中必不可少的一个组成部分激励函数以及我们在机器学习中为什么少不了激励函数.

那首先第一个问题,什么是激励函数呢?首先用简单的语句进行概括,就好比我们的现实总是残酷的,而我们周围的生活也是时刻发生这变化的,那其实所谓的激励函数就是来去解决我们在机器学习中无法用线性方程去解决的问题,那么这个时候你可能会想,什么是线性方程呢?

当我们提到线性方程的时候,我们会不得不想到非线性方程,在这个时候我们可以假设,女生长得越漂亮,越多的男生越喜欢,其实这个问题就可以当做一个线性问题,但是如果我们假设这个问题发生在校园里,现在校园里的男生是有限的,现在就算女生再漂亮,女生再漂亮,也不会有无穷多的男生去喜欢他,所以,在这个时候,这个问题就变成了一个非线性问题.再说,女生也不可能是无穷漂亮的吧,(对于我们男生来说,这个问题有时间我们好好的讨论下)

那这个时候,我们其实就可以讨论如何在神经网络中描述线性和非线性任务了,在这个时候,其实我们可以把整个神经网络写成一个式子Y=Wx W是我们需要的参数,x是输入值, Y是我们预测得到的结果.用这个式子,我们就可以很好地来去描述刚才我们提出的那个线性问题,因为W提出来的是一个固定的数,但是这样似乎并不能符合我们想让这个直线扭动起来成为非线性方程的一个结果,这个时候,就需要我们这个文章的主人公激励函数了,这个时候激励函数就拔刀相助,出来说,让我来掰弯他吧(y=AF(Wx)),这里的AF就是所说的激励函数.激励函数这时候掏出了自己的掰弯利器,用力套在了原函数上,这样原函数就被掰弯了.

其实这个激励函数AF()并不是什么高深的东西,本质上他也是一个非线性的方程,大概有relu,sigmoid,tanh这样的非线性方程,将这些掰弯利器强行把原有的数据结果给掰弯了,这样线性结果Y也就有了非线性的特征.

现在举个例子:假设现在我使用了relu这个掰弯利器,如果此时wx的结果是1,y还将是1,wx的结果是-1的时候,y的结果这个时候就可能是0,你甚至可以创造自己的激励函数来去处理自己的数据问题.不过要确保的是这些激励函数是必须要可以微分的.因为在误差反向传递的时候,只有这些可微分的激励函数才可以把这些误差反射回去.

想要恰当的使用这些激励函数还是有窍门的,比如当你的神经层不是很多的时候,比如只有两三次四五层的时候.这个时候使用任意的激励函数去掰弯这个时候都是可行的,都不会有很大的影响,但是当你的神经网络层数很多的时候,就不要随便使用激励函数了,就必须要谨慎的思考和考虑.因为这个时候就会涉及到梯度爆炸,梯度消失的情况.等将来有机会我们可以好好聊聊梯度爆炸,梯度消失的问题.

那么这个时候你就会想问,在很多的例子中,我们使用的最多的激励函数是那些?最好用的激励函数是那些?在我自身总结和结合前人的教训中可以得出经验.在少层的神经网络中,我们可以尝试使用很多种不同组合的激励函数.在卷积神经网络的卷积层中,推荐的激励函数是relu.在循环神经网络中,推荐的是relu或者是tanh.这个以后具体怎么选,在我认真学习总结后会写出来分享给大家.

好了,这就是最近的我的一些收获和总结,如果大家想获得更多的关于机器学习方面的知识和有想和我交流的问题,私信我.我也很高兴能够和大家可以一起进步.谢谢阅读.

阅读余下内容

发表评论

电子邮件地址不会被公开。 必填项已用*标注


京ICP备12002735号