二十来分钟后,大家锻炼完毕,回寝室稍作整顿,盥洗一番之后,就去了食堂。
由于早起运动的关系,每个人都多吃了一个馒头,精神头也好了不少。
饭后溜达了一会儿,几个人就结伴回班,上早读。
江寒端正地坐在座位上,拿出一个崭新的笔记本,开始写论文的第一稿。
先写下标题:《感知机:大脑信息存储和组织的概率模型》。
然后是摘要:“本文探讨了生物神经元的工作机制,并建立了一个简单的数学模型,以及探索了如何在机器学习中运用这个模型……通过对生物神经元的模拟,来解决线性可分的二分类问题。”
写完摘要后,又设了几个关键字,接下来就进入了正文。
第一部分是背景介绍,主要讨论生物神经元。
“要了解智能对知觉识别,泛化,回忆和思考的能力,首先我们要回答三个问题:生物系统如何感知或检测物理世界的信息?以什么形式存储或记住信息?存储或记忆中的信息如何影响识别和行为?
第一个问题属于感官生理学领域,而且人们对它已经有了可观的认识。第二和第三个问题,目前仍然只有大量的猜测,而且神经生理学提供的一些相关事实,还没有被整合成为一个可以被人们接受的理论……”
开宗明义之后,接下来,就可以详细讨论生物神经元的工作机制了。
足足用了两千来字,才写完这些罗里吧嗦的东西,最后下了结论。
“综上所述,不管什么信息被保留,都必须以某种方式,存储为特定响应的偏好,即信息包含在连接或关联中!”
接下来,进入下一环节,建立数学模型。
对于很多人来说,这是论文写作之中,最为困难的地方。
就算拿出“感知机”这种大杀器,江寒也并不担心,会被人怀疑是重生者。
除非屡见不鲜,否则谁会一碰到厉害的人,就怀疑是穿越、重生来的?
网上关于刘秀和王莽的段子,只是调侃和玩笑罢了。
但江寒仍然决定,将数学部分精简一下,尽量不涉及太高深的东西。
很多高等数学的东西,大学生学起来都挺费劲,自己一个普通高中生,凭啥能熟练运用?
除非能证明自己,的确是个不世出的天才,不然很难解释。
如果得到足够的学术点,将七维属性都加到10以上,那自己不想当天才都不可能。
可现在是起步阶段,还是稳一点的好。
“感知机”的工作逻辑很简单,本来也不是什么复杂的东西,只是表述上要稍微严谨一点。
前世刷过的那篇同名论文,大部分内容都是枯燥的论述,数学推导并不多,关于如何在计算机上实现,则基本没怎么讲。
这也不怪原作者,那个年代的计算机科学,本来就不怎么发达。
而且那篇论文的精华,也就是一个模型,一个原理。
至于编程实现,有了模型之后,那还不是So easy吗?
但现在是2012年,计算机技术已经取得了长足进步,足够将机器学习技术,运用于生产生活实践了。
所以,江寒将这篇论文的重点,放在了原理解析,以及如何实现上。
除了开头第一段,江寒并没有照抄原文,事实上,他也没那个本事。
那么长的论文,能记住大概思路,就相当不错了。
一个字不差背下来?江寒做不到啊!
根据自己对该技术的理解,江寒开始自由发挥。
先从最简单的情况,也就是单变量开始讨论。
“对于只含有1个输入信号xi的样本集T,我们期望找到一个线性函数y=wx+b,通过输入的数据xi和标签yi,确定其中的权重w和偏置b,其中权重w控制输入信号的重要性,而偏置b可调整神经元被激活的难易程度……”
江寒越写越顺,下笔如飞。
“……
我们定义损失函数如下:L(w,b)=?(1/||w||)∑y i (w?x i +b),根据预设的学习率η,不断调整权重w和偏置b,直到损失函数到达极小点,即可得到可用的函数模型。
综上所述,学习算法如下:
首先选定训练数据集T=(x1,y1),(x2,y2),...,(xN,yN),yi∈{?1,+1}并指定一个学习率η(0<η<1);
1、任意选定权重w和偏置b;
2、读入数据点(xi,yi);
3、判断该数据点是否为误分类点,如果yi(w?xi+b)≤0 则更新w=w+ηyixi;b=b+ηy i;
4、重复进行2、3步,直到没有误分类点。
此时,我们就获得了最佳的w和b,把它们代入y=wx+b,就得到了一个数学模型。”
感知机的学习过程,有个非常形象的比喻。
假设在一个棋盘上,有一堆黑子,和一堆白子,它们不相混合。
下面,拿一根细棍放上去。
我们希望这根棍子,能恰好将黑子和白子分开,棍子的一边全是黑子,另一边全是白子。
先把棍子随机扔到棋盘上,如果恰好将黑子和白子分开了,那就皆大欢喜,否则的话,就平移和调整棍子的角度,直到所有白子和黑子恰好分开……
那根棍子就是感知机,而挪动棍子的过程,就是感知机在学习。
棍子的角度和平移量,就是要寻找的参数w和b,也就是直线(棍子)在平面直角坐标系(棋盘)里的函数解析式。
瞧,够通俗易懂吧?
可惜写论文就不能这么写了。
感知机是人工神经网络的雏形,其中有个关键概念,叫激活函数,它决定了一个神经元是否有输出。
江寒在这里,用一个阶跃函数sign(x)作为激活函数,其定义为: x<0时函数取值-1; x≥0时函数值为1。
只要将sign换成sigmoid或者其他非线性函数,就是真正的单层前馈神经网络了。
但江寒并没有着急将sign之外的函数抛出去。
在第一篇论文里,最重要的是提出概念,其他东西完全可以在下一篇论文中再讨论。
能多水几篇,岂不更加美滋滋?
搞定了输入空间是1维的情况,接下来,就可以扩展到N维。
“对于一般情况,当有n个输入信号时,假设输入空间是x∈Rn,输出空间是y∈{+1,-1}。输入x∈X 表示实例的特征向量,对应于输入空间的点;输出y属于Y 表示实例的类别。
由输入空间到输出空间的如下函数:Ψ(x)=rsign(w1x1+w2x2+……+wnxn+b)=rsign(wTx+b),就可以称之为感知机,其中w∈Rn,b∈R为感知机算法的参数……”
在讨论完n个输入信号的情况后,江寒指出:
“模型建立之后,经过训练,就可以得到一组权重和偏置,这些参数确定了一个分离超平面(定义为n维空间上的一个n-1维子空间),此超平面可以将训练集中的数据,完全正确地分成两份,一份为正,一份为负(或者0,可以自己定义)。”
取得了模型的参数后,就可以把测试数据放进去,根据模型函数运算的结果,就能对数据进行分类。
感知器用处很广泛,几乎所有二分类问题,都可以用它来试一试。
当然,必须是线性可分的问题,线性不可分的问题,是不能用单层感知器解决的。
例如年龄和有没有生活经验,就不存在线性关系;长得帅不帅和学习好不好,也没有线性关系……
关于如何高效地判断数据是否线性可分,江寒还真研究过,只是这个题目比较大,三言两语说不清楚。
嗯……好像又能多水一篇或几篇SCI?