机器学习初窥

机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论凸分析算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演绎。

学习是人类具有的一种重要智能行为,但究竟什么是学习,长期以来却众说纷纭。社会学家、逻辑学家和心理学家都各有其不同的看法。

比如,Langley(1996) 定义的机器学习是“机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能”。(Machine learning is a science of the artificial.
The field's main objects of study are artifacts, specifically algorithms that improve their performance with experience.')

Tom Mitchell的机器学习(1997)对信息论中的一些概念有详细的解释,其中定义机器学习时提到,“机器学习是对能通过经验自动改进的计算机算法的研究”。(Machine
Learning is the study of computer algorithms that improve automatically through experience.)

Alpaydin(2004)同时提出自己对机器学习的定义,“机器学习是用数据或以往的经验,以此优化计算机程序的性能标准。”(Machine learning is programming computers to optimize a performance
criterion using example data or past experience.)

尽管如此,为了便于进行讨论和估计学科的进展,有必要对机器学习给出定义,即使这种定义是不完全的和不充分的。顾名思义, 机器学习是研究如何使用机器来模拟人类学习活动的一门学科。稍为严格的提法是:机器学习是一门研究机器获取新知识和新技能,并识别现有知识的学问。这里所说的“机器”,指的就是计算机,电子计算机,中子计算机、光子计算机或神经计算机等等。

机器能否象人类一样能具有学习能力呢?1959年美国的塞缪尔(Samuel)设计了一个下棋程序,这个程序具有学习能力,它可以在不断的对弈中改善自己的棋艺。4年后,这个程序战胜了设计者本人。又过了3年,这个程序战胜了美国一个保持8年之久的常胜不败的冠军。这个程序向人们展示了机器学习的能力,提出了许多令人深思的社会问题与哲学问题。

机器的能力是否能超过人的,很多持否定意见的人的一个主要论据是:机器是人造的,其性能和动作完全是由设计者规定的,因此无论如何其能力也不会超过设计者本人。这种意见对不具备学习能力的机器来说的确是对的,可是对具备学习能力的机器就值得考虑了,因为这种机器的能力在应用中不断地提高,过一段时间之后,设计者本人也不知它的能力到了何种水平。

机器学习有下面几种定义: “机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能”。 “机器学习是对能通过经验自动改进的计算机算法的研究”。 “机器学习是用数据或以往的经验,以此优化计算机程序的性能标准。” 一种经常引用的英文定义是:A computer program is said to learn from experience E with respect to some class of tasks T and performance measure
P, if its performance at tasks in T, as measured by P, improves with experience E.

机器学习已经有了十分广泛的应用,例如:数据挖掘计算机视觉自然语言处理生物特征识别搜索引擎医学诊断、检测信用卡欺诈证券市场分析、DNA序列测序、语音手写识别、战略游戏机器人运用。

2发展史

机器学习是人工智能研究较为年轻的分支,它的发展过程大体上可分为4个时期。

第一阶段是在20世纪50年代中叶到60年代中叶,属于热烈时期。

第二阶段是在20世纪60年代中叶至70年代中叶,被称为机器学习的冷静时期。

第三阶段是从20世纪70年代中叶至80年代中叶,称为复兴时期。

机器学习的最新阶段始于1986年。

机器学习进入新阶段的重要表现在下列诸方面:

(1) 机器学习已成为新的边缘学科并在高校形成一门课程。它综合应用心理学、生物学和神经生理学以及数学、自动化和计算机科学形成机器学习理论基础。

(2) 结合各种学习方法,取长补短的多种形式的集成学习系统研究正在兴起。特别是连接学习符号学习的耦合可以更好地解决连续性信号处理中知识与技能的获取与求精问题而受到重视。

(3) 机器学习与人工智能各种基础问题的统一性观点正在形成。例如学习与问题求解结合进行、知识表达便于学习的观点产生了通用智能系统SOAR的组块学习。类比学习与问题求解结合的基于案例方法已成为经验学习的重要方向。

(4) 各种学习方法的应用范围不断扩大,一部分已形成商品。归纳学习的知识获取工具已在诊断分类型专家系统中广泛使用。连接学习在声图文识别中占优势。分析学习已用于设计综合型专家系统。遗传算法与强化学习在工程控制中有较好的应用前景。与符号系统耦合的神经网络连接学习将在企业的智能管理与智能机器人运动规划中发挥作用。

(5) 与机器学习有关的学术活动空前活跃。国际上除每年一次的机器学习研讨会外,还有计算机学习理论会议以及遗传算法会议。

3主要策略

学习是一项复杂的智能活动,学习过程与推理过程是紧密相连的,按照学习中使用推理的多少,机器学习所采用的策略大体上可分为4种——机械学习、通过传授学习、类比学习和通过事例学习。学习中所用的推理越多,系统的能力越强。

4基本结构

表示学习系统的基本结构。环境向系统的学习部分提供某些信息,学习部分利用这些信息修改知识库,以增进系统执行部分完成任务的效能,执行部分根据知识库完成任务,同时把获得的信息反馈给学习部分。在具体的应用中,环境,知识库和执行部分决定了具体的工作内容,学习部分所需要解决的问题完全由上述3部分确定。下面我们分别叙述这3部分对设计学习系统的影响。

影响学习系统设计的最重要的因素是环境向系统提供的信息。或者更具体地说是信息的质量。知识库里存放的是指导执行部分动作的一般原则,但环境向学习系统提供的信息却是各种各样的。如果信息的质量比较高,与一般原则的差别比较小,则学习部分比较容易处理。如果向学习系统提供的是杂乱无章的指导执行具体动作的具体信息,则学习系统需要在获得足够数据之后,删除不必要的细节,进行总结推广,形成指导动作的一般原则,放入知识库,这样学习部分的任务就比较繁重,设计起来也较为困难。

因为学习系统获得的信息往往是不完全的,所以学习系统所进行的推理并不完全是可靠的,它总结出来的规则可能正确,也可能不正确。这要通过执行效果加以检验。正确的规则能使系统的效能提高,应予保留;不正确的规则应予修改或从数据库中删除。

知识库是影响学习系统设计的第二个因素。知识的表示有多种形式,比如特征向量、一阶逻辑语句、产生式规则、语义网络和框架等等。这些表示方式各有其特点,在选择表示方式时要兼顾以下4个方面:

(1)表达能力强。

(2)易于推理。

(3)容易修改知识库。

(4)知识表示易于扩展。

对于知识库最后需要说明的一个问题是学习系统不能在全然没有任何知识的情况下凭空获取知识,每一个学习系统都要求具有某些知识理解环境提供的信息,分析比较,做出假设,检验并修改这些假设。因此,更确切地说,学习系统是对现有知识的扩展和改进。

执行部分是整个学习系统的核心,因为执行部分的动作就是学习部分力求改进的动作。同执行部分有关的问题有3个:复杂性、反馈和透明性。

5代码示例


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

//在gcc-4.7.2下编译通过。

//命令行:g++-Wall-ansi-O2test.cpp-otest

#include<iostream>

usingnamespacestd;

voidinput(int&oper,constboolmeth)

{

//meth为true则只判断1,为false则判断1或0

while(true)

{

cin>>oper;

if(meth&&oper==1)

break;

elseif(oper==0||oper==1)

break;

cout<<"输入错误,请重新输入。"<<endl;//判断参数

cin.sync();//避免极端输入导致死循环

cin.clear();

}

}

intmain(void)

{

cout<<"1+1=2吗?那要看您怎么教我了,不要惊讶我会学习的"<<endl;

intladd,radd,aprs,rcnt(0),wcnt(0);//定义输入与结果,正确次数与错误次数

cout<<"开始学习……"<<endl;

for(inti(0);i!=10;++i)

{

cout<<"参数1(必须是1):"<<flush;//提示输入参数

input(ladd,true);

cout<<"参数2(必须是1):"<<flush;

input(radd,true);

cout<<"结果:"<<(ladd+radd)<<endl;//输出结果

cout<<"您对这满意吗(满意输入1,不满意输入0):"<<flush;//评价等级

input(aprs,false);

if(aprs)//判断用户评价

++rcnt;

else

++wcnt;

cout<<"正确次数:"<<rcnt<<"错误次数:"<<wcnt<<endl;//错误次数

}

if(rcnt>wcnt)//判断学习结果

cout<<"主人告诉我1+1=2。"<<endl;

else

if(rcnt<wcnt)

cout<<"主人告诉我1+1!=2。"<<endl;

else

cout<<"我不明白主人是什么意思。"<<endl;

intterm;//退出部分

cout<<"您对我的表现满意吗?满意请输入1不满意请输入0:"<<flush;

input(term,false);

if(term)

cout<<"谢谢我会继续努力学习"<<endl;

else

cout<<"谢谢我会继续努力学习D"<<endl;

//cin>>term;//在Windows上测试时启用

return0;

}

本程序将根据您的评价判断执行结果 "1+1=2"
  实际上仅用了最简单的 if else for 语句
  这就是一个机器学习的例子,通过环境影响来进行学习。
  通过本例我们不难看出,在人工错误的引导下,机器会给出错误的答案 1+1不等于2。
  所以此类学习方法,一定要在正确引导下实践,否则会得到最坏的结果。
  学习完毕后,计算机会记录本次学习结果,存入数据库,下次执行相应任务时,再将结果调出执行。

时间: 2024-09-20 08:46:33

机器学习初窥的相关文章

初窥Spark

​ 11月26日,IBM资深软件工程师朱志辉老师,在DBA+社群DB2用户群进行了一次主题为"初窥Spark"的线上分享.小编特别整理出其中精华内容,供大家学习交流.同时,也非常感谢朱志辉老师对DBA+社群给予的大力支持.  嘉宾简介   IBM中国开发中心高级软件工程师 具有多年的数据库软件开发设计经验,擅长解决复杂的数据库应用系统问题及性能优化,拥有DB2多项认证和Oracle OCP证书 合作出版了<DB2设计,管理与性能优化艺术><DB2性能管理与实战>

百度竞价初窥端倪篇

  前情提要:要想花低于竞争对手的钱,取得比竞争对手好的排名,并要最大化得提升转化率,必须做到比对手更细心.更耐心.更勤快,每天不求多,只求质,每天要养成分析数据的习惯! 百度竞价--初窥端倪篇 1,百度竞价--关键词选择漫谈 指数高不一定转化率高,指数低未必转化率低;流量与成交量并不是正比关系,必须要一分为二的去分析;防止恶意点击和无效点击取决于你对关键词的筛选,选词之前要搞清楚你打算把用这个词引进来的人怎么处置!是让他看一眼就走,还是让他哭着淘一些钱给你,这是一个技巧! 比如:我现在需要做竞

iOS Animation初窥

引言 一款App是否足够吸引人一方面是需要丰富的内容,另一方面就是要足够人性化的交互,还有一些锦上添花的动画效果,在这里我们讨论一下关于Animation的基本实现,推荐大家试用FaceBook Paper,里面包含了大量的非原生动画效果,Paper团队甚至封装了相应的开源库Pop,让开发者接入自定义动画动画也十分简便.动画的接入要适当,否则用户面对眼花缭乱的动画效果,都会无从下手.这里有个基于Pop的Demo 当然导入一个复杂的第三方库可能有些小题大做,所以我们开始从最基本的创作Animati

【初窥javascript奥秘之事件冒泡】那些年我们一起冒的泡

原文http://www.cnblogs.com/yexiaochai/archive/2013/04/23/3037064.html [初窥javascript奥秘之事件冒泡]那些年我们一起冒的泡 前言 若是我说会有此文又是因为一次面试的话,我自己都不知道该怎么形容我的心情了,好似我的所有动力皆来自于面试似的. 其实不是这样的,我原来一个项目经理对我说,隔一两个月出去面试下,一来你会知道自己的不足知道怎么提高,二来你就知道自己涨价没. 现在回想起来他说的是很对的,面对这次的团队解散,我反而不那

【初窥javascript奥秘之Ajax】简述下你所知道的Ajax?

原文 http://www.cnblogs.com/yexiaochai/archive/2013/04/24/3037069.html [初窥javascript奥秘之Ajax]简述下你所知道的Ajax? 前言 ajax已经流行很多年了,现在来说它是否已经晚了呢???特别是有这样框架那样框架后,还有几个人认识原生ajax呢?我们每天都会用到的东西你到底对他了解吗? 在最近一次面试上不幸被问到了,原以为很熟悉的东西你会发现你对他根本不熟悉!要说熟悉AJAX的话你需要毫不犹豫回答以下问题: 1 不

[转]Silverlight 2 快报 和 Silverlight 3 初窥

[原文地址]Update on Silverlight 2 - and a glimpse of Silverlight 3 [原文发表日期] Sunday, November 16, 2008 11:01 PM 我们上个月发布了Silverlight 2. 在过去的4个星期里,Silverlight 2的最终版被下载和安装到了超过1亿台用户机器之上.最近还通过微软SMS和微软更新程序发布到了企业管理员手中,允许他们在企业内做自动部署. Internet上超过四分之一的计算机现在安装了某个版本的

交互设计师:初窥交互设计

加入CDC的这段日子里,工作中积累的小心得都密密麻麻的收在册子里.恰逢近期的校园招聘正如火如荼的展开着,借此机会,我把这一些不太成熟的小想法和大家分享一下.下图是CDC招聘交互设计师的工作描述,我将选择其中三点分析.   1.参与产品规划构思 刚开始的时候,我认为交互设计师的任务就是按照产品同事提交的需求绘制原型稿件,其间,我们去和产品同事讨论布局的合理性,操作的易用性,流程的通畅性. 其实不然.一个成功的产品需要团队里的产品经理,设计师,以及开发同事对产品的潜在特性和市场能力有统一的认识并一起

WPF入门之XAML初窥

Overview: 很早就想写些文章来总结一下自己学习一些新知识的经历,一来可以在日后查找,其到一个索引的作用:二来可以和爱好技术的朋友们共同交流,鉴于工作缘故始终无法抽身写.最近源于对WPF和Silverlight的浓厚兴趣和项目中要用的缘故,特此和大家分享一些学习WPF/Silverlight的过程.这个系列会简单回顾一些WPF中基本的概念和入门知识,以此来构成创建WPF程序(甚至于Silverlight程序,其在很大程度上有些依赖于WPF)的基础.本人不曾写过很多blog,再者WPF本身对

NetBeans 6 Web Services设计器初窥

请大家事先安装 NetBeans 6 M9 和 GlassFish V2 b49 或使用NetBeans 6 M9 自带的 SUN Java System Application Server 9 新建一个 Web 项目: File > New Project > Web Category > Web Application > WebApplication1 在新建的 WebApplication1 上点右键, 选择 New > Web Services - 建立 Hell