学习感知机后的想法

通过鸢尾花数据集来学习感知机算法,我就思考感知机算法在生活中可以用来干什么,首先想到的是,通过身高和体重来区分一个人是南/北方人,但是直觉告诉我这肯定区分不了,事实上也肯定区分不了,不论你界定怎样的身高和体重,总会有反例出现。

又回想到《统计学习方法》中将数据集分为线性不可分数据集和线性可分数据集,而感知机算法是建立在数据集是线性可分的假设之上的,也就是说,感知机问题只能解决线性可分数据集。

那么,感知机算法实际上不是一个很“智能”的算法, 因为我们提供的数据集已经是可分的了,感知机算法不过是将其精确化产生一个判别式后判断新的数据,而并不能从“混沌”的数据集中产生新的知识。

不过,看了一下感知机算法是1958年提出的算法,而且经过一些人的努力后(和我一样)发现它没有前途。
https://www.jiqizhixin.com/graph/technologies/f9849d6c-6262-4c1f-8f42-6d976be17161 机器学习的文章。

在人工神经网络领域中,感知机也被指为单层的人工神经网络,以区别于较复杂的多层感知机(Multilayer Perceptron)。作为一种线性分类器,(单层)感知机可说是最简单的前向人工神经网络形式。尽管结构简单,感知机能够学习并解决相当复杂的问题。感知机主要的本质缺陷是它不能处理线性不可分问题。

感知器——机器之心

虽然感知器最初看起来很有希望,但很快就证明了感知器不能被训练来识别许多类型的模式。这使得神经网络研究领域的研究陷入了许多年的低迷时期,直到人们认识到一个有两个或多个层的前馈神经网络(也称为多层感知器)的处理能力远比感知器(也称为单层感知器)的处理能力要强得多。

感知器——机器之心

那么,又产生一个问题,那么如何判别是否线性可分呢?我的思考的思路就是,尽可能多的提供X的维度和数据,然后从X里面抽取子集,判断是否能得到线性可分的结果,这样就可以从“混沌”的知识里面让机器产生新的知识,例如,判断南北方人我们X的维度可以是{身高,体重,体脂率,眼睛度数,手指长度,。。。}(这里面变量名我瞎诌的),等等尽可能多的提供因为南北方差异产生的身体上数据的差异,然后让机器慢慢跑,让看哪种X的子集会产生线性可分的结果。

而比较专业的做法是:机器学习入门教程:Python测试线性可分性的方法

所以现在才能深刻的理解到数据的重要性,你只有感知机,没有鸢尾花数据集(已确定的线性可分数据集),也没有多大用处。那么,我认为数据又分为两种,一个是规范化的数据,比如说各个软件公司的设计的数据库(MySQL,nomysql),这种是现成的数据集,但是,这种数据从根本上已经受到人类自身先验知识的约束(表单的结构),另一种是非规范化的数据,就比如搜索引擎的搜索结果,这种是基于人类知识的非规范化数据,那么这种数据的提取就必须依赖于NLP,而NLP最初的发展思路应该就是给定某一限定的不规范数据,然后尝试从中提取数据,然后再应用到不限定的不规范数据。

比如说我们史老师在大一C语言测试后给我们展示她的一部分工作,就是将手写病历转化为电子病历,就是从“病历”这一限定条件下的“手写病历”(不规范数据)(每个人的语法习惯不一样)提取(电子病历)规范化数据。

有意思。

瞎想的。


欢迎在评论区中进行批评指正,转载请注明来源,如涉及侵权,请联系作者删除。

×

喜欢就点赞,疼爱就打赏