机器学习算法

什么是程序(Program)

计算机程序,是指为了得到某种结果而可以由计算机(等具有信息处理能力的装置)执行的代码化指令序列(或者可以被自动转换成代码化指令序列的符号化指令序列或者符号化语句序列)。

通俗讲,计算机给人干活,但它不是人,甚至不如狗懂人的需要(《小羊肖恩》里的狗是多么聪明可爱又忠诚于主人)。那怎么让它干活呢,那就需要程序员用某种编程语言来写程序,编程语言就是计算机能理解的语言,计算机可以执行这些程序(指令),最终完成任务。
下边的C++程序是完成n的阶乘:

  int n = std::atoi(argv[1]);
  //求n的阶乘
  double result = 1.0;
  for (int i = 2; i <= n; i++) {
    result *= i;
  }
  std::cout << n << "的阶乘是:" << result << std::endl;

什么是算法(Algorithm)

算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或者多个操作。
举个简单的例子,并且大家生活中都能用得上的。现在做个小游戏,A在纸上随机写了一个1到100间的整数,B去猜,猜对的话游戏结束,猜错的话A会告诉B猜的小了还是大了。那么B会怎么做呢,第一次肯定去猜50,每次都猜中间数。为什么呢?因为这样最坏情况下(log2100log2100)六七次就能猜到。
这就是二分查找,生活中可能就会用得到,而在软件开发中也经常会用得到。
再来看一个稍微复杂一点点的算法,【快速排序】,面试中考的频率非常高非常高,甚至可以说是必考。

什么是机器学习算法(Machine Learning)

机器学习的定义

《机器学习》书中的定义:

关于某类任务 T 和性能度量P,如果一个计算机程序能在T上以P衡量的性能随着经验E而自我完善,那么我们称这个计算机程序在从经验E中学习。

比如AlphaGo:

  • 任务 T :下棋
  • 性能标准 P :击败对手的百分比
  • 训练经验:和自己对弈或者比赛经验。
    再比如自动驾驶:
  • 任务T : 通过视频传感器在高速公路上行驶
  • 性能标准P:平均无差错行驶里程
  • 训练经验E:注视人类驾驶时录制的一系列图像和驾驶指令。

百度百科的定义:

机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。
它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演绎。

机器学习的主要任务

监督学习:
(1)分类:将实例数据划分到合适的分类中。
KNN(k-近邻算法)、决策树、朴素贝叶斯、Logistic回归、SVM(支持向量积)。

(2)回归:预测数值型数据。

无监督学习:
(1)聚类:将数据集合分成由类似的对象组成的多个类的过程。
K-MEANS(K均值聚类)

神经网络(Neural Network)与深度学习(Deep Learning)

生物学启示

人工神经网络ANN的研究一定程度上受到了生物学的启发,生物的学习系统由相互连接的神经元(neuron)组成的异常复杂的网格。而人工神经网络由一系列简单的单元相互密集连接构成的,其中每一个单元有一定数量的实值输入,并产生单一的实数值输出。
据估计人类的大脑是由大约10111011次方个神经元相互连接组成的密集网络,平均每个神经元与其他104104个神经元相连。神经元的活性通常被通向其他神经元的连接激活或抑制。
生物的神经元:

人工神经元(感知机):

多层感知机:

神经网络表示

1993年的ALVINN系统是ANN学习的一个典型实例,这个系统使用一个学习到的ANN以正常的速度在高速公路上驾驶汽车。ANN的输入是一个30*32像素的网格,像素的亮度来自一个安装在车辆上的前向摄像机。ANN的输出是车辆行驶的方向。

浅层学习

20世纪80年代末期,用于人工神经网络的反向传播算法(也叫Back Propagation算法或者BP算法)的发明,给机器学习带来了希望,掀起了基于统计模型的机器学习热潮。这个热潮一直持续到今天。人们发现,利用BP算法可以让一个人工神经网络模型从大量训练样本中学习统计规律,从而对未知事件做预测。这种基于统计的机器学习方法比起过去基于人工规则的系统,在很多方面显出优越性。这个时候的人工神经网络,虽也被称作多层感知机(Multi-layer Perceptron),但实际是种只含有一层隐层节点的浅层模型。
20世纪90年代,各种各样的浅层机器学习模型相继被提出,例如支撑向量机(SVM,Support Vector Machines)、 Boosting、最大熵方法(如LR,Logistic Regression)等。这些模型的结构基本上可以看成带有一层隐层节点(如SVM、Boosting),或没有隐层节点(如LR)。这些模型无论是在理论分析还是应用中都获得了巨大的成功。相比之下,由于理论分析的难度大,训练方法又需要很多经验和技巧,这个时期浅层人工神经网络反而相对沉寂。

深层学习

深度学习的实质,是通过构建具有很多隐层的机器学习模型和海量的训练数据,来学习更有用的特征,从而最终提升分类或预测的准确性。因此,“深度模型”是手段,“特征学习”是目的。区别于传统的浅层学习,深度学习的不同在于:1)强调了模型结构的深度,通常有5层、6层,甚至10多层的隐层节点;2)明确突出了特征学习的重要性,也就是说,通过逐层特征变换,将样本在原空间的特征表示变换到一个新特征空间,从而使分类或预测更加容易。与人工规则构造特征的方法相比,利用大数据来学习特征,更能够刻画数据的丰富内在信息。
Deep learning本身算是machine learning的一个分支,简单可以理解为neural network的发展。

一种典型的用来识别数字的卷积网络是LeNet-5。当年美国大多数银行就是用它来识别支票上面的手写数字的。能够达到这种商用的地步,它的准确性可想而知。
LeNet-5的网络结构如下:

与机器学习相关联的概念

数据挖掘(Data Mining)

数据挖掘=机器学习+数据库。数据挖掘是在大型数据存储库中,自动地发现有用信息的过程。

自然语言处理 (Natural Language Process)

自然语言处理=文本处理+机器学习。自然语言处理技术主要是让机器理解人类的语言的一门领域。在自然语言处理技术中,大量使用了编译原理相关的技术,例如词法分析,语法分析等等,除此之外,在理解这个层面,则使用了语义理解,机器学习等技术。作为唯一由人类自身创造的符号,自然语言处理一直是机器学习界不断研究的方向。按照百度机器学习专家余凯的说法“听与看,说白了就是阿猫和阿狗都会的,而只有语言才是人类独有的”。如何利用机器学习技术进行自然语言的的深度理解,一直是工业和学术界关注的焦点。

模式识别(Pattern Recognition)

模式识别=机器学习。两者的主要区别在于前者是从工业界发展起来的概念,后者则主要源自计算机学科。

统计学习(Statistical Learning)

统计学习近似等于机器学习。统计学习是个与机器学习高度重叠的学科。因为机器学习中的大多数方法来自统计学,甚至可以认为,统计学的发展促进机器学习的繁荣昌盛。例如著名的支持向量机算法,就是源自统计学科。但是在某种程度上两者是有分别的,这个分别在于:统计学习者重点关注的是统计模型的发展与优化,偏数学,而机器学习者更关注的是能够解决问题,偏实践,因此机器学习研究者会重点研究学习算法在计算机上执行的效率与准确性的提升。

计算机视觉(Computer Vision)

计算机视觉=图像处理+机器学习。图像处理技术用于将图像处理为适合进入机器学习模型中的输入,机器学习则负责从图像中识别出相关的模式。计算机视觉相关的应用非常的多,例如百度识图、手写字符识别、车牌识别等等应用。这个领域是应用前景非常火热的,同时也是研究的热门方向。随着机器学习的新领域深度学习的发展,大大促进了计算机图像识别的效果,因此未来计算机视觉界的发展前景不可估量。

语音识别(Speech Recognition)

语音识别=语音处理+机器学习。语音识别就是音频处理技术与机器学习的结合。语音识别技术一般不会单独使用,一般会结合自然语言处理的相关技术。目前的相关应用有苹果的语音助手siri等。

计算机图形学、数字图像处理、计算机视觉

  1. 计算机视觉( Computer Vision,简称 CV),是让计算机“看懂”人类看到的世界,输入是图像,输出是图像中的关键信息;
    图片 -> dog or cat?
    图片 -> [xyz xyz xyz ... xyz]
  2. 计算机图形学(Computer Graphics,简称 CG),是让计算机“描述”人类看到的世界,输入是三维模型和场景描述,输出是渲染图像;
    [xyz xyz xyz ... xyz] -> 图片
  3. 数字图像处理(Digital Image Processing,简称 DIP),输入的是图像,输出的也是图像。Photoshop 中对一副图像应用滤镜就是典型的一种图像处理。常见操作有模糊、灰度化、增强对比度等。
    图片 -> ps后的图片

再说联系

  1. CG 中也会用到 DIP,现今的三维游戏为了增加表现力都会叠加全屏的后期特效,原理就是 DIP,只是将计算量放在了显卡端。通常的做法是绘制一个全屏的矩形,在 Pixel Shader 中进行图像处理。
  2. CV 大量依赖 DIP 来打杂活,比如对需要识别的照片进行预处理,增强对比度、去除噪点。
  3. 最后还要提到今年的热点——增强现实(AR),它既需要 CG,又需要 CV,当然也不会漏掉 DIP。它用 DIP 进行预处理,用 CV 进行跟踪物体的识别与姿态获取,用 CG 进行虚拟三维物体的叠加。

面试——把自己嫁出去

面试官面的是什么

我个人的经验一次正规的面试包括几个部分:

  • 基础能力:数据结构与算法通过做一些智商题、ACM,一般笔试题会从leetcode找。基础能力除了基本的数据结构与算法外,经常还会考察求职者对一门编程语言的掌握程度。
  • 工作经历:在哪些公司工作过,做过哪些项目,能不能把做过的东西很清晰的很系统的讲出来。(注:哪怕不是自己做过的东西,求职者能很好的讲出来,面试官也会给加分)
  • 沟通能力:性格是否比较好,是否能愉快的沟通,是不是能融入团队。其实有时就是看颜值,通俗说能否看对眼。哪怕能力不怎么好,但是面试官司觉得人不错,工作能干得了,值得培养也没问题。

求职者要的是什么

  • 成长
  • 开心

面试要注意什么

  • 技术能力是核心
  • 谦虚谨慎诚实是打动面试官的重要因素
  • 沟通也很重要
  • 适当美化自己的经历,但不吹牛,也不要过分谦虚

参考资料:
Deep Learning(深度学习)学习笔记整理系列之(三)
《机器学习》Tom M.Mitchell
《机器学习实践》Peter Harrington
《数学之美》吴军
《统计学习方法》李航
《计算机视觉、图形学和图像处理,三者有什么联系?》张静
《从机器学习谈起》 计算机的潜意识
《计算机视觉与计算机图形学的对立统一》卜居

本文转自博客园知识天地的博客,原文链接:机器学习算法,如需转载请自行联系原博主。

时间: 2024-10-07 09:16:52

机器学习算法的相关文章

机器学习算法基础(Python和R语言实现)

简介 谷歌的无人驾驶汽车已经受到了世人很大的关注,但公司的未来却是在机器学习领域,因为这项技术将使电脑更智能,更人性化.--埃里克·施密特(谷歌主席) 我们可能正经历着人类最明确定义的阶段,这个阶段计算机计算从大型主机,到个人电脑,到云计算.但这些并不是根本原因,而是接下来几年中将会发生的. 这个时期使那些像我一样的人们兴奋的是工具和技术的开放,这得以于计算机领域的蓬勃发展.今天,作为一名数据科学家,我能以很低的成本搭建一个拥有复杂算法的数据处理系统.但是达到这样的结果,我也经历了在黑夜中艰苦的

【机器学习】机器学习算法总结

       找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是机器学习/数据挖掘之类,且又对其非常感兴趣的话,可以考虑考虑该岗位,毕竟在机器智能没达到人类水平之前,机器学习可以作为一种重要手段,而随着科技的不断发展,相信这方面的人才需求也会越来越大. 纵观IT行业的招聘岗位,机器学习之类的岗位还是挺少的,国内大点的公司里百度,阿里,腾讯,网易,搜狐,华为(华为的岗位基本都是随机分配,机器学习等岗位基本面向的是博

机器学习算法的python实现之决策树-Decision tree(1)信息熵划分数据集

1.背景 决策书算法是一种逼近离散数值的分类算法,思路比较简单,而且准确率较高.国际权威的学术组织,数据挖掘国际会议ICDM (the IEEE International Conference on Data Mining)在2006年12月评选出了数据挖掘领域的十大经典算法中,C4.5算法排名第一.C4.5算法是机器学习算法中的一种分类决策树算法,其核心算法是ID3算法. 算法的主要思想就是将数据集按照特征对目标指数的影响由高到低排列.行成一个二叉树序列,进行分类,如下图所示. 现在的问题关

机器学习算法的python实现之KNN-k近邻算法的实现

1.背景 今后博主会每周定时更新机器学习算法及其python的简单实现.今天学习的算法是KNN近邻算法.KNN算法是一个监督学习分类器类别的算法. 什么是监督学习,什么又是无监督学习呢.监督学习就是我们知道目标向量的情况下所使用的算法,无监督学习就是当我们不知道具体的目标变量的情况下所使用的.而监督学习又根据目标变量的类别(离散或连续)分为分类器算法和回归算法. k-Nearest Neighbor.k是算法中的一个约束变量,整个算法的总体思想是比较简单的,就是将数据集的特征值看作是一个个向量.

机器学习算法选用指南

在从事数据科学工作的时候,经常会遇到为具体问题选择最合适算法的问题.虽然有很多有关机器学习算法的文章详细介绍了相关的算法,但要做出最合适的选择依然非常困难. 在这篇文章中,我将对一些基本概念给出简要的介绍,对不同任务中使用不同类型的机器学习算法给出一点建议.在文章的最后,我将对这些算法进行总结. 首先,你应该能区分以下四种机器学习任务: 监督学习 无监督学习 半监督学习 强化学习 监督学习 监督学习是从标记的训练数据中推断出某个功能.通过拟合标注的训练集,找到最优的模型参数来预测其他对象(测试集

【玩转数据系列十三】机器学习算法基于信用卡消费记录做信用评分

机器学习算法基于信用卡消费记录做信用评分 背景 如果你是做互联网金融的,那么一定听说过评分卡.评分卡是信用风险评估领域常用的建模方法,评分卡并不简单对应于某一种机器学习算法,而是一种通用的建模框架,将原始数据通过分箱后进行特征工程变换,继而应用于线性模型进行建模的一种方法. 评分卡建模理论常被用于各种信用评估领域,比如信用卡风险评估.贷款发放等业务.另外,在其它领域评分卡常被用来作为分数评估,比如常见的客服质量打分.芝麻信用分打分等等.在本文中,我们将通过一个案例为大家讲解如何通过PAI平台的金

机器学习算法集锦

机器学习 机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论.统计学.逼近论.凸分析.算法复杂度理论等多门学科.专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能.严格的定义:机器学习是一门研究机器获取新知识和新技能,并识别现有知识的学问.这里所说的"机器",指的就是计算机,电子计算机,中子计算机.光子计算机或神经计算机等等. 机器学习概论 由上图所示:机器学习分为四大块: classific

8种常见机器学习算法比较

简介 机器学习算法太多了,分类.回归.聚类.推荐.图像识别领域等等,要想找到一个合适算法真的不容易,所以在实际应用中,我们一般都是采用启发式学习方式来实验.通常最开始我们都会选择大家普遍认同的算法,诸如SVM,GBDT,Adaboost,现在深度学习很火热,神经网络也是一个不错的选择.假如你在乎精度(accuracy)的话,最好的方法就是通过交叉验证(cross-validation)对各个算法一个个地进行测试,进行比较,然后调整参数确保每个算法达到最优解,最后选择最好的一个.但是如果你只是在寻

常见面试之机器学习算法思想简单梳理

前言: 找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是机器学习/数据挖掘之类,且又对其非常感兴趣的话,可以考虑考虑该岗位,毕竟在机器智能没达到人类水平之前,机器学习可以作为一种重要手段,而随着科技的不断发展,相信这方面的人才需求也会越来越大. 纵观IT行业的招聘岗位,机器学习之类的岗位还是挺少的,国内大点的公司里百度,阿里,腾讯,网易,搜狐,华为(华为的岗位基本都是随机分配,机器学习等岗位基本面向的是博士)等

机器学习算法与Python实践之(五)k均值聚类(k-means)

       机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己想学习Python,然后也想对一些机器学习算法加深下了解,所以就想通过Python来实现几个比较常用的机器学习算法.恰好遇见这本同样定位的书籍,所以就参考这本书的过程来学习了.        机器学习中有两类的大问题,一个是分类,一个是聚类.分类是根据一些给定的已知类别标号的样本,训练某种学习机器,使它能够对未知类别的样本进行分类.这属于supervised learning(监督学习).而聚类指事先