懂一点机器学习(一)

写在前面: 这是一系列的科普文字,主要讲解机器学习相关的概念和实际工作中的作用.

小华华同学的媳妇想吃西瓜, 于是小华华来到了益民市场

懂一点机器学习(一)_第1张图片

在程序员的眼里,买西瓜只是一个排序问题,找出来最好吃的瓜,把这个瓜带回家


懂一点机器学习(一)_第2张图片

我们都知道  数据结构+算法=程序设计

现在的买瓜的程序设计转化为: 

1.  什么样的瓜才是最优瓜 (算法)?

 2. 如何为西瓜进行排序 (数据结构)?


懂一点机器学习(一)_第3张图片


其实小华华在买瓜之前已经做过了功课


懂一点机器学习(一)_第4张图片

经过敲敲打打,最终小华华挑选了一个他认为纹路清晰的好瓜

买回家切开一看


懂一点机器学习(一)_第5张图片

天呀,怎么可以这样?


懂一点机器学习(一)_第6张图片

重要提醒:使用百度搜索一定要擦亮眼睛,自行甄别真伪

吸收了经验教训后,小华华决定自己研发一套挑瓜系统,选出来最好的西瓜带回家

设计一套挑瓜系统,最通常的作法是先设定模型


懂一点机器学习(一)_第7张图片

但是开发这一套合理算法模型有个前提就是小华华需要对西瓜非常的了解.

屁股大的西瓜好吃还是屁股小的好吃, 声音脆的西瓜好还是声音闷的西瓜好?

这些数据如何获取呢?

最简单粗暴的方法就是打开所有的瓜,尝遍所有的瓜总结规律


懂一点机器学习(一)_第8张图片

人类学习的过程和机器学习的过程是类似的


懂一点机器学习(一)_第9张图片

Machine learning is the subfield of computer science that gives computers the ability to learn without being explicitly programmed

上面一段话来自维基百科,以前我们编写程序if和else是满足什么条件就执行什么代码,程序员非常清楚计算机要执行的逻辑,而机器学习是给与机器,一种可以自我学习的能力,当机器具备了这种能力后,我们无须清楚里面的某个细节,机器就可以工作.

机器学习类似一个黑盒子,盒子有输入有输出.


懂一点机器学习(一)_第10张图片

以前我们程序员需要对黑盒子里面的内容逻辑了如指掌,通过精确的代码处理输入,产生输出

现在我们有了机器学习后,只需要训练机器就可以了.黑盒子里面的逻辑由程序自动产生

举个简单的例子,我们可以这样训练计算机:


懂一点机器学习(一)_第11张图片

1+1是多少?10!打屁股,是2

1+2是多少?37!打屁股,是3

1+3是多少?-5!打屁股,是4

……

1+1是多少?5!打屁股,是2

1+2是多少?14!打屁股,是3

1+3是多少?25!打屁股,是4

……

1+1是多少?2!嗯,智商有进步

1+2是多少?5!打屁股,是3

1+3是多少?8!打屁股,是4

……

1+1是多少?2!嗯,智商有进步

1+2是多少?3!嗯,智商有进步

1+3是多少?4!嗯,智商有进步

……

========若干年后========

108+205是多少?313!

上面的每一组对话都是训练的数据集,

每次训练后的反馈,实际上是属于我们的监督学习的过程

机器学习可以理解为一个黑箱子,有输入有输出,里面的逻辑无须考虑,往入口扔进去个1+1,出口会扔出来个250.去打黑箱子的屁屁,说不对,应该是2.不断的往入口扔东西,打屁屁,给正确答案

在大量的数据训练和递归分析后, 突然黑箱子就学会加法了.

同理,可以教会黑箱子加减乘除、摊鸡蛋饼、游泳、打架,唠嗑和吹牛逼

黑箱子和黑箱子之间也可以互相交流学习, 母箱子还可以教会公箱子怎么泡妞等等.

相关视频:



机器学习抓取物体





机器学习预测未来




机器学习类似一个刚开始学习东西的小孩子,开始认东西,作为一个大人(监督者),第一天,他看见一只京巴狗,你告诉他这是狗;第二天他看见一只波斯猫,他开心地说,这是狗,纠正他,这是猫;第三天,他看见一只蝴蝶犬,他又迷惑了,你告诉他这是狗……直到有一天,他可以分清任何一只猫或者狗.

图片识别imagenet就是采用这种方式. 带有监督学习的卷积神经网络.

相关视频:


机器学习图片识别



机器学习的好处:

在没有机器学习之前,以开发围棋程序为例,开发出来的程序的棋力很大程度上与开发者的下棋水平有关,开发者下棋水平越高,设计抽象出来的算法可能就越好. 但是使用机器学习后,无须考虑过多算法,电脑可以自己跟自己下棋,自行提高.

下面讲解下机器学习中的一些概念 以及在教学工作中的应用

神经元

第一次听到这个概念的时候感觉好高大上,其实神经元模型就是一棵决策树.

决策树就是一个分类器,而分类器就是咔嚓砍一刀

看下面的图,我们来预测黑马程序员学员毕业后的就业情况:


懂一点机器学习(一)_第12张图片

大家想想,最简单地把这两组特征向量分开的方法是啥?当然是在两组数据中间画一条线,线下方的就业速度较快 线上方的就业速度较慢.

一条直线把平面一分为二,一个平面把三维空间一分为二,一个n-1维超平面把n维空间一分为二,两边分属不同的两类,这种分类器就叫做神经元.

二维的平面分割线为 ax+by+c = 0;

三纬的屏幕分割面为 ax+by+cz= d;

推而广之,三维以上的空间不能用几何图形去描述了,只能靠我们的想象,

n维空间中, 满足n元一次方程a1x1+a2x2+...+anxn=b的点(x1,x2,...,xn)的函数就叫空间的一张超平面

关于n维空间:


n维空间你能理解到几维?



神经网络

刚才的模型是一个较为简单的模型, 实际生活中的事情要比刚才的模型复杂很多

大家看图


懂一点机器学习(一)_第13张图片

这种模型采用一个神经元 y=kx+b 就不能解决问题了,解决办法是多层神经网络,底层神经元的输出是高层神经元的输入.

我们可以在中间砍一刀,按照年龄划分为30岁之前的和30岁之后的,第一个神经元的结果,作为第二个神经元的一个输入,第二个神经元根据第一个神经元的输入加上学历进行或操作或者与操作.产生最终的结果.

这种处理方式跟我们大脑处理信号的方式类似,a神经元的突触处理信号,把电信号传给b神经元


神经信号从a传递到e



神经网络算法

计算机神经网络的训练依靠反向传播算法:最开始输入层输入特征向量,网络层层计算获得输出,输出层发现输出和正确的类号不一样,这时它就让最后一层神经元进行参数调整,最后一层神经元不仅自己调整参数,还会勒令连接它的倒数第二层神经元调整,层层往回退着调整.经过调整的网络会在样本上继续测试,如果输出的结果仍然不合理,继续来一轮回退调整,直到网络输出满意为止.

机器学习就是计算机利用已有的结果数据和原因数据推测出某种模型,并利用这种模型去预测未来的一种方法.

影响一个学生就业的因素有:

学习情况,沟通能力,背景资料,性格特征等四大类:

从这四大类里面又派生出来学习方法得当,勤奋程度,主动寻求他人帮助,模仿能力,求知欲强,学习专注力,有成就感,自信心,思维灵活,独立性,经常反思,性格外向,亲和力,热情,能换位思考,语言组织能力,学历,证书,工作经验,乐观向上,吃苦耐劳,忠实诚信,勇于迎接挑战,自制力,善于控制情绪,家庭关系等等等160项小类

这些因素究竟在就业速度和薪资里面起到多大作用,占据多大的比例,我们人类无法评估,

最简单的做法就是分析我们已经毕业的几万名学生,把数据交给机器,让机器分析出来究竟这些内容占据多大的比例,在哪种程度上影响学生的就业

下一篇文字我们先来分析模型,研究如何建立模型, 最后利用java语言编写一个 神经网络+感知机 来实现一个简易的学生就业薪资预测.

你可能感兴趣的:(懂一点机器学习(一))