导语: 干货来了,Udacity Machine Learning 课程导师 Walker 亲自出马,教你简单形象有趣地掌握神经网络!
神经网络是什么?神经网络就是一系列简单的节点,在简单的组合下,表达一个复杂的函数。下面我们来一个个解释。
线性节点
节点是一个简单的函数模型,有输入,有输出。
1、最简单的线性节点:x+y
我能想到的最简单的线性节点当然就是x+y。
2、参数化线形节点:ax+by
x+y是一个特殊的线形组合,我们可以一般化所有x,y的线性组合,即ax+by。这a,b就是这个节点的参数。不同的参数可以让节点表示不同的函数,但节点的结构是一样的。
3、多输入线性节点:a1x1+a2x2+a3x3+...+anxn
我们进一步把2个输入一般化成任意多个输入。这里a1,a2,a3,...an是这个节点的参数。同样,不同的参数可以让节点表示不同的函数,但节点的结构是一样的。注意n并非是这个节点的参数,输入个数不同的节点结构是不一样的。
4、线性节点的向量表达:aTx
上面的式子太过冗长,我们用向量x表示输入向量(x1,x2, . . . ,xn), 用向量a表示参数向量(a1,a2,...,an),不难证明aTx=a1x1+a2x2+a3x3+...+anxn。这里向量a就是这个节点的参数,这个参数的维度与输入向量的维度相同。
5、带常量的线性节点:aTx+b
有时,我们希望即使输入全部为的时候,线形节点依然可以有输出,因此引入一个新的参数b作为偏差项,以此来增加模型的表达性。有时,为了简化,我们会把表达式写作aTx。此时,x= (x1,x2,...,xn,1),a= (a1,a2,...,an,b)
6、带激活函数的线性节点:1(aTx+b> 0)
对于二项分类问题,函数的输出只是真或假,即或1。函数1:R→将真命题映射到1, 将假命题映射到。
线性节点实例
1、线性节点表达x∨y(或函数) ,或函数的真值表如下:
定义节点1(x+y− 0.5 > 0), 不难验证,它与x∨y是等价的。
2、线性节点表达 x ∧ y (与函数) ,与函数的真值表如下:
定义节点1(x+y− 1.5 > 0), 不难验证,它与x∧y是等价的。
线性节点的表达力
单个线性节点可以表达所有线性函数(函数值域为实数集)、以及所有线性可分的分类 (函数值域为)。概念定义和命题的证明我们这里不再阐述。虽然单个线性节点已经很强 ,但依然有图的局限性。对于线性不可分的函数,它无能为力, 例如异或函数x⊕y
线性节点的组合
1、多个线性节点同层组合:WTx
上述的线性节点输入是多维的,但输出只是一维,即一个实数。如果我们想要多维的输出,那么就可以并列放置多个节点。设a1,a2,...,am分别是m个节点的参数,那么输出则分别为a1Tx,a2Tx,...,amTx.最终的输出结果为
其中W= [a1,a2,...,am]是一个n 行m 列的参数矩阵。
2、多层线性节点:
多层线性节点中,某一层带激活函数的线性节点,输出作为下一层的输入 。通常中间层(或者隐藏层,图中的蓝色节点)会带有一个激活函数,来增加模型的表达力 。(思考:如果隐藏层没有激活函数,为什么两层线性节点和一层等价?)
多层线性节点实例
1.多层表达异或函数x⊕y,异或函数的真值表为:
这是一个不可线性分隔的函数,不可以一个线性节点表达。但我们可以使用多层的线性节点来完成这个任务。
多层线性节点的表达力
可以证明,多层神经元可以表达所有连续函数。证明比较复杂,有兴趣的粉丝可以去看下:A visual proof that neural nets can compute any function
总结
其实在本篇文章中,我们还有很多常见的节点没有讲到, 如 ReLu, sigmoid, dropout 等。神经网络不仅有正向计算,还有反向传导,这些节点的出现和反向传导息息相关……
如果你想更加系统学习人工智能知识与技能,在职场中挖掘新的机会,让来自硅谷的前沿科技教育平台Udacity 来帮你。
Udacity 联手无人车之父Sebastian Thrun、GANs 之父Ian Goodfellow 和谷歌 Deepmind 科学家Andrew Trask 等顶级专家,推出「深度学习基石纳米学位项目」!在学习过程中,你不仅可以获得硅谷顶级讲师的指导,还将挑战超酷实战项目,并享受Udacity导师一对一指导、逐行代码审核、同步学习小组等学习服务。每周投入10个小时,零基础也能成为硅谷认证的深度学习高手!
毕业时,你还将享受 Udacity 的就业推荐服务,获得更多加入IBM、腾讯、滴滴出行等领先科技企业的机会!
Udacity 顶尖合作名企
如何加入这么酷的课程?
领取专属 10元无门槛券
私享最新 技术干货