机器学习 之 算法介绍

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

求职者要的是什么

  • 成长
  • 开心

面试要注意什么

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

机器学习 之 算法介绍的相关文章

机器学习算法介绍

什么是程序 计算机程序,是指为了得到某种结果而可以由计算机(等具有信息处理能力的装置)执行的代码化指令序列(或者可以被自动转换成代码化指令序列的符号化指令序列或者符号化语句序列). 通俗讲,计算机给人干活,但它不是人,甚至不如狗更懂人的需要,那怎么让它干活呢,那就需要程序员来写程序,程序就是计算机能懂的语言(指令),然后计算机可以执行这些程序(指令),最终完成任务. int n = std::atoi(argv[1]); //求n的阶乘 double result = 1.0; for (int

机器学习几种常见优化算法介绍

机器学习几种常见优化算法介绍 https://blog.csdn.net/class_brick/article/details/78949145 1. 梯度下降法(Gradient Descent) 2. 牛顿法和拟牛顿法(Newton's method & Quasi-Newton Methods) 3. 共轭梯度法(Conjugate Gradient) 4. 启发式优化方法 5. 解决约束优化问题--拉格朗日乘数法 我们每个人都会在我们的生活或者工作中遇到各种各样的最优化问题,比如每个企

机器学习常见算法分类汇总

机器学习常见算法分类汇总 机器学习无疑是当前数据分析领域的一个热点内容.很多人在平时的工作中都或多或少会用到机器学习的算法.这里 IT 经理网为您总结一下常见的机器学习算法,以供您在工作和学习中参考. 机器学习的算法很多.很多时候困惑人们都是,很多算法是一类算法,而有些算法又是从其他算法中延伸出来的.这里,我们从两个方面来给大家介绍,第一个方面是学习的方式,第二个方面是算法的类似性. 学习方式 根据数据类型的不同,对一个问题的建模有不同的方式.在机器学习或者人工智能领域,人们首先会考虑算法的学习

机器学习经典算法详解及Python实现---朴素贝叶斯分类及其在文本分类、垃圾邮件检测中的应用

摘要: 朴素贝叶斯分类是贝叶斯分类器的一种,贝叶斯分类算法是统计学的一种分类方法,利用概率统计知识进行分类,其分类原理就是利用贝叶斯公式根据某对象的先验概率计算出其后验概率(即该对象属于某一类的概率),然后选择具有最大后验概率的类作为该对象所属的类.总的来说:当样本特征个数较多或者特征之间相关性较大时,朴素贝叶斯分类效率比不上决策树模型:当各特征相关性较小时,朴素贝叶斯分类性能最为良好.另外朴素贝叶斯的计算过程类条件概率等计算彼此是独立的,因此特别适于分布式计算.本文详述了朴素贝叶斯分类的统计学

[Machine Learning] 机器学习常见算法分类汇总

声明:本篇博文根据http://www.ctocio.com/hotnews/15919.html整理,原作者张萌,尊重原创. 机器学习无疑是当前数据分析领域的一个热点内容.很多人在平时的工作中都或多或少会用到机器学习的算法.本文为您总结一下常见的机器学习算法,以供您在工作和学习中参考. 机器学习的算法很多.很多时候困惑人们都是,很多算法是一类算法,而有些算法又是从其他算法中延伸出来的.这里,我们从两个方面来给大家介绍,第一个方面是学习的方式,第二个方面是算法的分类. 博主根据原创基础上加入了遗

四大机器学习降维算法:PCA、LDA、LLE、Laplacian Eigenmaps

四大机器学习降维算法:PCA.LDA.LLE.Laplacian Eigenmaps 机器学习领域中所谓的降维就是指采用某种映射方法,将原高维空间中的数据点映射到低维度的空间中.降维的本质是学习一个映射函数 f : x->y,其中x是原始数据点的表达,目前最多使用向量表达形式. y是数据点映射后的低维向量表达,通常y的维度小于x的维度(当然提高维度也是可以的).f可能是显式的或隐式的.线性的或非线性的. 目前大部分降维算法处理向量表达的数据,也有一些降维算法处理高阶张量表达的数据.之所以使用降维

机器学习常见算法优缺点总结

机器学习常见算法优缺点总结 K近邻:算法采用测量不同特征值之间的距离的方法进行分类. 优点: 1.简单好用,容易理解,精度高,理论成熟,既可以用来做分类也可以用来做回归: 2.可用于数值型数据和离散型数据: 3.训练时间复杂度为O(n):无数据输入假定: 4.对异常值不敏感 缺点: 1.计算复杂性高:空间复杂性高: 2.样本不平衡问题(即有些类别的样本数量很多,而其它样本的数量很少): 3.一般数值很大的时候不用这个,计算量太大.但是单个样本又不能太少 否则容易发生误分. 4.最大的缺点是无法给

机器学习经典算法详解及Python实现--基于SMO的SVM分类器

原文:http://blog.csdn.net/suipingsp/article/details/41645779 支持向量机基本上是最好的有监督学习算法,因其英文名为support vector machine,简称SVM.通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解. (一)理解SVM基本原理 1,SVM的本质--分类 给定一些数据点,它们分别属于两个不同的类,现在要找到一个线性分类器把这些

机器学习入门 - 1. 介绍与决策树(decision tree)

机器学习(Machine Learning) 介绍与决策树(Decision Tree) 机器学习入门系列 是 个人学习过程中的一些记录与心得.其主要以要点形式呈现,简洁明了. 1.什么是机器学习? 一个比较概括的理解是: 根据现有的数据,预测未来 2.核心思想 : Generalization 可以理解为,归纳.概括.就像是人的学习一样,找出一件事物与与一件事物的联系 3.归纳性的机器学习(Inductive machine learning) 其核心思想是使用训练数据,并从其中摸索出一套适用