码仔 M 是一家公司的程序员,他和大佬 Z 两人亦师亦友。最近他们都在搞深度学习。大佬 Z 经常默默修炼,而码仔 M 就不同了,他热衷于在朋友圈集赞换取各种免费课程,就好像集得越多学得越好一样。这不他又开始了……
码仔 M 内心 OS:“嘿嘿嘿!一时集赞一时爽,一直集赞一直爽。”
码仔 M 心想:“啥时候能摆脱这种蚂蚁的命运呢?愁!”
大佬 Z 终于忍不住了,准备亲自出手教教这位小朋友。
比如,我们可以利用神经网络来做一些数据的预测。那么首先,我们希望神经网络模型可以学习到目标数据随输入数据的变化规律。比如,对于以下目标数据:
当我们要求神经网络模型拟合这些数据时,我们希望模型可以根据输入得到一条曲线,在一定程度上,它与原数据的变化规律是相同的:
这样如果我们不考虑过拟合的问题,理论上模型就能根据给予的输入,得出符合数据规律的结果。
那么神经网络模型是如何产生像上面那样的拟合曲线的?首先看一下最简单的单神经元模型:
它只有一个输入层单元,其中 x 表示输入的数据;一个隐含层单元,其中 w 是输入单元到隐含单元的权重;b 是隐含层单元的偏置;一个输出层单元,其中 w' 是隐含层到输出层的权重。
这个最简单的神经网络就是一个从 x 映射到 y 的函数,即 y = w’ σ(wx+b)。w、b 和 w' 是这个函数的参数,其中 σ 表示 sigmoid 函数。当 w=1,w'=1,b=0 的时候,这个函数的图像如下:
这就是 sigmoid 函数即 σ(x) 的形状和数学表达式。当我们改变 w、b 和 w' 这些参数的值的时候,函数的图形也会发生相应的改变。
可以尝试在保持其它参数不变的情况下,改变其中的一个参数,观察这个参数对函数图像的影响。
首先保持 w'=1, b=0 不变,改变 w 的大小,其函数图形的变化如下图所示。
从上图中可以看到,当 w>0 的时候,w 的大小控制着函数的弯曲程度。w 越大,函数曲线在 0 点附近的弯曲程度就会越大(曲线越陡)。而当 w<0 的时候,曲线发生了左右翻转。
再来看看参数 b 对曲线的影响,即保持 w=w'=1,改变 b 的大小。
可以清晰地看到,b 控制着 sigmoid 函数曲线的水平位置。b>0,函数图形往左平移;反之往右平移。
最后,来看看 w' 是如何影响函数曲线的。
不难看出,当 w' > 0 的时候,w' 控制着曲线的陡峭程度;当 w' < 0 的时候,曲线的方向发生上下颠倒。
可见,通过控制 w、w' 和 b 这 3 个参数,可以任意调节从输入 x 到输出 y 的函数形状。
但是,无论如何调节,这条曲线永远都是 S 形(包括倒 S 形)的。要想得到更加复杂的函数图像,则需要引入更多的神经元。
下面把模型做得更复杂一些,看看两个隐含层神经元会对曲线有什么影响,如下图所示。
输入信号进入网络之后就会兵分两路,一路从左侧进入第一个神经元,另一路从右侧进入第二个神经元。这两个神经元分别完成计算,并通过 w'1 和 w'2 进行加权求和得到 y。所以,输出 y 实际上就是两个神经元的叠加。这个网络仍然是一个将 x 映射到 y 的函数,函数方程为:
在这个公式中,有 w1, w2, w'1, w'2, b1, b2 这样 6 个不同的参数。它们的组合也会对曲线的形状有影响。
例如,可以取 w1=w2=w'1=w'2=1,b1=-1,b2=0,则该函数的曲线形状如下图所示。
从上图可以看到,合成的函数图形变为了一个具有两个阶梯的曲线。让我们再来看一个参数组合,w1=w2=1,b1=0,b2=-1,w'1=1,w'2=-1,则函数图形如下图所示。
通过以上的参数组合,我们合成了一个具有单一波峰的曲线。一般地,只要变换参数组合,就可以用两个隐含层神经元拟合出任意具有单峰的曲线。
那么,如果有 4 个或者 6 个甚至更多的隐含层神经元,不难想象,就可以得到具有双峰、三峰和任意多个峰的曲线,我们可以粗略地认为两个神经元可以用来逼近一个波峰(波谷)。
所以,回到最初提出的目标数据,像这样的数据或许只需要具有 10 个左右神经元的模型就可以拟合。
当然,仅仅能做到拟合还不够,在实际使用中我们要考虑泛化,要考虑过拟合情况,而这就需要更进一步的解释了。
听说从这之后,码仔 M 朋友圈里的好友们已经有好一段时间没有看到过他了......
告别集赞获取免费课程,实现 PyTorch 自给自足。
☟☟☟
实现 PyTorch 自由,任性玩转
作者:集智俱乐部
本书是一本系统介绍深度学习及开源框架 PyTorch 的入门书。全书注重实战,每章围绕一个有意思的实战案例展开,不仅循序渐进地讲解了 PyTorch 的基本使用、神经网络的搭建、卷积神经网络和循环神经网络的实现,而且全面深入地介绍了计算机视觉、自然语言处理、迁移学习,以及最新的对抗学习和深度强化学习等前沿技术。读者通过阅读本书,可以轻松入门深度学习,学会构造一个图像识别器,生成逼真的图画,让机器理解单词与文本,让机器作曲,教会机器玩游戏,还可以实现一个简单的机器翻译系统。
作者简介
集智俱乐部(Swarma Club),成立于2003年,是一个从事学术研究、享受科学乐趣的探索者团体,也是国内最早研究人工智能、复杂系统的科学社区。倡导以平等开放的态度、科学实证的精神,进行跨学科的研究与交流,力图搭建一个中国的“没有围墙的研究所”。
目前已出版著作有《科学的极致:漫谈人工智能》和《走近 2050:注意力、互联网与人工智能》,译作有《深度思考:人工智能的终点与人类创造力的起点》。
本书配套资源
免费配套导学视频
《PyTorch入门课程:火炬上的深度学习》https://www.bilibili.com/video/av50239976
付费配套视频课程
《深度学习原理与PyTorch实战》https://campus.swarma.org/gcou=421
文末畅聊
留言说说你有没有参加过免费集赞换课程的活动,集赞得来的课程你都看完了吗?或者说说你对 Pytorch 以及其他任何你了解的深度学习框架,你觉得它们怎么样?对你帮助大吗?精选留言选出 5 位获得赠书一本。活动截至 2019.8.21。
题图来源:freepik.com
推荐阅读:
7岁自学微积分,31岁获得菲尔兹奖,智商230,也曾因为玩游戏耽误学业!
☟☟☟ 更多深度学习好书