大家好,今天想再谈一谈机器学习。这次我们期望在不涉及到任何复杂的数学理论的前提下,尽量把机器学习的基本原理讲清楚。使大家对机器学习能有一个更加直观的概念。我们将主要探讨两个问题,一个是机器学习能做什么;另一个是它到底是怎么做的。这两个问题看似简单,但是想用通俗、易懂的语言解释清楚还是有一定难度的。下面的内容是我在搜集、整理了大量的资料后进行的精炼和总结,希望对大家理解能够有所帮助。

那么我们闲话少说,开始进入正题。

1、能做什么?

简单来说我认为主要可以做两件事,一个是预测、一个是聚类

按照输入数据是有监督、还是无监督,可简单的将机器学习要解决的问题分成两类,有监督学习解决的是预测问题、无监督学习解决的是聚类问题。(当然其实并不仅仅局限于此,这样总结只是为了减少介绍和理解的复杂度,实际上机器学习还包括半监督学习、强化学习等等)

有监督是指输入的数据是有标签的(标签表示的是一种先验经验,比如在猫狗图像的识别中,我们需要先标注好什么样的图像是猫、什么样的图像是狗,才能够进一步让机器进行学习),而无监督是指输入的数据是无标签的。

对于有监督问题,如果预测结果是连续的值,则称为为回归问题;如果结果是离散的(比如0、1),则称之为分类问题。常见的算法主要有K-近邻算法、线性回归、逻辑回归、支持向量机、决策树、神经网络等等。

对于无监督问题,目的主要是对数据进行聚类,此时无监督学习的训练数据都是未经标记的,模型需要在没有老师的情况下进行学习。常见的算法有K均值算法、DBSCAN、异常检测、孤立森林、主成分分析(PCA)、关联规则学习等等。

2、怎么做的?

先说说无监督的聚类问题,它的目的就是根据数据内部存在的数据特征,将数据集合划分成不同的类别,使得同类别内的数据是比较相似的。进一步,当我们输入一个新的数据集时,可以判断出这个数据归属于哪一类。实现聚类的核心问题是如何判断数据之间的相似性,常用的方法主要有通过距离、密度、层次划分、网格划分等方法来实现,这些相对比较好理解。

再来说说相对复杂一些的有监督问题。在具体讨论前,我们需要先了解几个概念:

1、模型:模型的概念听起来很神秘,究其原因主要是它是一个抽象的概念,无法直观感受到。其实,我们可以把它暂且理解成某个的机器学习算法+一组设定好的参数所组成的一个结合体。这个结合体就像我们编程中的程序接口一样,当我们按照输入格式输入数据后,他就会给我们返回输出结果,但不同的是我们可以通过调整它参数来影响或是改变它输出的结果。

2、数据集:数据集就是一组输入数据的集合,每一条数据我们称之为一个样本,每个样本又包含多个特征,每个特征都可以表征这个样本的某个维度的特点,比如一个人的样本数据,其特征可能包括名字、性别、出生日期、籍贯等等。对于数据集,在不同的使用场景下有不同的作用,如果在训练模型阶段使用,我们称之为训练集;如果在测试模型阶段使用,又叫做测试集合。

3、假设函数:通常用H(x)表示。如果把机器学习的模型训练过程比作一台小汽车朝着目的地行驶的过程的话。那么假设函数就是这台小汽车的发动机,数据就是燃料。假设函数,顾名思义就是假设我们的数据和结果标签之间存在的某种关系或规则,当然对于不同的算法,它的表现形式也是不尽相同的。机器学习往往需要经历多轮的数据迭代、学习过程才能达到最终目标,那么在每一次迭代中,当每条数据样本输入给假设函数后,假设函数都会为我们返回一个计算后的预测结果。

4、损失函数(目标函数):通常用L(x)表示。同样延续刚才的比喻的话,损失函数就是我们驶向目的地所参照的导航仪,机器学习不是一个一次就能得到最终结果的计算过程,而是不断逼近学习目标的迭代过程。那么损失函数就给我提供了一个用于衡量的工具来判定当前的计算结果距离目标是逼近了还是远离了。比如我们有10个样本,在某轮迭代中,假设函数计算后产生了10个预测值,那么我们就需要逐一计算这10个预测值与真实值之间的总偏差,从而判断距离目标是远离了还是逼近了。当然我们的目标是要求这个总偏差越小越好,偏差越小说明我们的预测值相比真实值更加接近。

5、优化器:损失函数告诉了我们行驶方向是否正确,当我们走错了,如何调整方向呢?此时优化器就发挥作用了,它就行汽车的方向盘一样。当损失函数把损失值告诉优化器后,优化器再反过来告诉假设函数如何进行参数调整(通常假设函数在初始阶段都会随机分配一组参数值),这样就使得下次假设函数计算出来的结果能够朝着总损失偏差更小的方向前进一小步。到这里大家可能觉得优化器很神奇,它是如何实现参数的调整的呢?其实最简单的一种调整方法就是新参数值=旧参数值-损失值。当然在实际应用中并不会这样简单,幸运的是数学家们已经帮我们研究好了这些方法(比如拟牛顿法、梯度下降等等),我们只需要大致了解其实现原理即可,并不需要完全了解其中的数学运算细节。

最后,了解了上述概念后,我们再把几个关键环节串联起来,看看机器学习的一个基本流程原理:

假设函数对于不同的机器学习算法而言千差万别,为了更加形象,我们就以最简单的线性函数作为举例,即假设我们的数据和标签之间存在的是一个线性的关系(虽然在实际应用中很少有这样简单的线性关系),那么我们需要学习的参数就是线性方程y=kx+b中的k和b,在初始化时我们一般会给k和b随机分配一个值。当训练开始后,我们将数据输入假设函数,生成预测值后再将其输入给损失函数,此时损失函数计算出总体误差,然后由优化器选择一个参数调整的方向,使得下一轮迭代,误差向着减少的方向逼近,这样进行多轮的训练、迭代后,当总体的误差值小于某一阈值或达到迭代次数后,训练停止。此时我们学习得到的参数值,也就是k,b的值所生成的线性函数就是我们最终训练好的模型。当我们向模型输入新的数据时,它就能够实现为我们进行结果预测的目标了。

最后我们再做一个简单的总结,机器学习如果简单从数学的角度来看,就是对输入的数据点进行拟合的过程,最终找到一条总体误差最小的拟合曲线。当然机器学习的种类有很多,比如基于概率的朴素贝叶斯算法、基于树模型的决策树算法乃至更加复杂的神经网络算法等等,并不是都是简单的曲线拟合。但是这种通过误差反馈,迭代更新参数的训练过程来找到最优匹配解释模型的算法原理却是相同的。

以上就是我今天给大家分享的内容,如果觉得对你有所帮助,欢迎点赞、评论和转发,谢谢。

AI自研社是一个专注人工智能、机器学习技术的公众平台,目前已发表多篇连载文章,对机器学习领域知识由浅入深进行详细的讲解,其中包含了大量实例及代码参考,对学习交流有很大帮助,欢迎大家关注。

谈一谈机器学习的基本原理相关推荐

  1. 怎么学python-结合学习经历,谈一谈如何学习Python

    结合自己的学习经历,谈一谈如何学习Python吧. 入门阶段 Python其实语言本身已经很接近自然语言了,所以入门其实并不麻烦.如果你是从未接触过编程的萌新,给你推荐一门Udacity CS101, ...

  2. 怎么自学python-结合学习经历,谈一谈如何学习Python

    结合自己的学习经历,谈一谈如何学习Python吧. 入门阶段 Python其实语言本身已经很接近自然语言了,所以入门其实并不麻烦.如果你是从未接触过编程的萌新,给你推荐一门Udacity CS101, ...

  3. 谈一谈游戏AI - 综述

    成功者总是善于发现 "可学之处",执着精进:失败者总是善于发现 "不可学之处",怨天尤人. 郑重说明:本文适合对游戏开发感兴趣的小白初学者,本人力图将事物用简单 ...

  4. 谈一谈浏览器解析CSS选择器的过程【前端每日一题-6】

    谈一谈浏览器解析CSS选择器的过程? 这是一道发散题,可以根据自己的理解自行解答. 在开始前,我们必须了解一个真相:为什么排版引擎解析 CSS 选择器时一定要从右往左解析? 简单的来说:浏览器从右到左 ...

  5. 有一群200w年薪的朋友是什么感觉?谈一谈入学中国科学院大学的几点感受吧

    我叫阿广,偶尔正经,偶尔逗比,97年生人,在求学期间当过鸡头鸡尾,当过凤尾没当过凤头.大家如果想深入了解我,可以查看本公众号的原创文章. 技术人光有技术走不长久,所以今天不更新技术文章了,也给大家谈一 ...

  6. 【建站系列教程】5、谈一谈网站的静态化

    [建站系列教程]5.谈一谈网站的静态化[进阶] 动态页面?静态页面?伪静态页面? 三个页面有何优缺点? 为什么要让网页静态化 如何网页伪静态化? 写在前面:大家好,我是热爱编程的小泽. [建站系列教程 ...

  7. 谈一谈周公所理解的面试

    因为公司最近招聘的力度很大,所以最近公司的面试很多,加之很多同事项目紧,所以让我参加了一些技术面试.不论是作为面试官还是应聘者,参加工作以来我参与的面试的次数我自己也记不清了,所以在此想从面试官和应聘 ...

  8. 我从阿里面试回来,想和Java程序猿谈一谈

    最近小编看了一篇关于面试的文章,题目是"我从阿里面试回来,想和Java程序员谈一谈",内容不是讲面试前刷题,而是更加聚焦在面试前如何准备,以及工作当中如何学习.感觉总结的很不错,今 ...

  9. 先查询再插入的存储过程怎么写_谈一谈 InnoDB(1) - 底层存储文件结构

    看技术文章是不是很累呢, 这次来个轻松点的~来谈一谈MySQL最主流的数据库引擎 InnoDB 吧~ 序 老王走进一号会议室, 随手打开了灯, 小张紧随其后 "王哥, 找我来干啥啊" ...

  10. Java程序员谈一谈-----java程序员成长之路

    转载:http://www.banzg.com/archives/679.html?ref=myread 阿里面试回来,想和Java程序员谈一谈 引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力 ...

最新文章

  1. 谷歌浏览器正式版90_谷歌浏览器 Google Chrome v79.0.3945.88 正式版
  2. php nsdata,在iPhone中加密nsdata并在php中解密
  3. 推荐一个好用的Chrome扩展,专门处理xml的,名叫XML Tree
  4. 统计信息自动收集任务失效原因排查
  5. Android之Fatal Exception: org.greenrobot.greendao.DaoException: Could not init DAOConfig
  6. maven中scope属性
  7. launchMode的几种模式
  8. matplotlib 柱状图、饼图;直方图、盒图
  9. 24模块-push【管理推送消息功能】
  10. 数据结构之顺序表(C语言版)
  11. YUV、RGB、RAW DATA 3种Sensor输出格式 详解
  12. 基于FPGA的电子计算器设计(中)
  13. ZT 80-90年代港台300部电视剧 你看过多少?
  14. 博主力推!!NRF52832 BLE 抓包sniffer来了!附带安装使用说明
  15. 高数篇:02费马定理
  16. 吴恩达深度学习笔记(40)-指数加权平均数优化算法
  17. 带农历日历的DatePicker控件!Xamarin控件开发小记
  18. 苹果三代耳机_关于苹果蓝牙耳机的一些事情
  19. Unity3D学习记录——NGUI Sprit
  20. void __declspec(naked)解释

热门文章

  1. 同花顺显示正在切换服务器,同花顺服务器架构
  2. 韩立刚《计算机网络》| 第7章 网络安全
  3. qtdesigner页面布局
  4. 网站在线协作工具 onlyoffice在线协作
  5. Linux 创建.sh脚本文件
  6. pyltp python具体使用
  7. js将阿拉伯数字转化成大写
  8. 高斯混合模型(GMM)和高斯过程回归(GPR)的学习
  9. Java中IO和NIO的区别
  10. 浦发银行 信息科技岗 大数据方向 面经