外行人都能看得懂的机器学习,错过了血亏!

前言

只有光头才能变强

没错,这篇主要跟大家一起入门机器学习。作为一个开发者,”人工智能“肯定是听过的。作为一个开发面试者,肯定也会见过”机器学习“这个岗位(反正我校招的时候就遇到过)。

可能还会听过或者见过“深度学习”、“神经网络”等等这些非常火的名词,那你对这些术语了解多少呢?

相信大家这几天在朋友圈也可以看到这照片:

// 通过if else 以人工穷举的方式来假装实现智能机器人聊天

希望阅读完本文中后,大家可以对这些术语和机器学习有一定的了解。

一、术语介绍

首先我们来简单看看人工智能、深度学习、机器学习这些术语和它们之间的关系究竟是怎么样的。

1.1人工智能

不知道听到“人工智能”大家会联想到什么,可能大多数都会想到科幻电影的机器人。

我们看来看看维基百科的定义:

人工智能(英语:Artificial Intelligence,缩写为 AI)亦称机器智能,指由人制造出来的机器所表现出来的智能。通常人工智能是指通过普通计算机程序的手段实现的人类智能技术。

人工智能也可以分成两类:

  • 强人工智能:强人工智能观点认为“有可能”制造出“真正”能推理(Reasoning)和解决问题的智能机器,并且,这样的机器将被认为是具有知觉、有自我意识的

    • 像绝大多数科幻电影中的机器人就是在这范畴
  • 弱人工智能:弱人工智能观点认为“不可能”制造出能“真正”地推理和解决问题的智能机器,这些机器只不过“看起来”像是智能的,但是并不真正拥有智能,也不会有自主意识。
    • 我们目前阶段的人工智能,其实都是弱人工智能。

1.2机器学习

不知道听到“机器学习”大家会联想到什么。Emmm...反正我就是从字面的意思去理解:“机器可以自我学习”。

首先我们看一下维基百科是怎么说的:

机器学习是实现人工智能的一个途径,即以机器学习为手段解决人工智能中的问题。机器学习在近30多年已发展为一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科

简单来说:机器学习可以通过大量的数据或者以往的经验自动改进计算机程序/算法

生成完模型f(x)之后,我们将样例数据丢进模型里边,就可以输出结果:

我们说机器学习可以自我学习,是因为我们会将样例数据也会丢到“历史数据”中,这样生成模型就会有一定的改动,从而达到“自我学习”的效果。

1.3它们之间的关系

等等,我们好像还没讲深度学习呢。我们从上面机器学习的介绍也可以知道,机器学习已发展为一门多领域交叉学科,机器学习中就有好多个经典的算法,其中就包含了神经网络(深度学习可看成是神经网络的升级版)。由于近几年深度学习发展迅猛,一些特有的学习手段相继被提出,所以越来越多的人将其单独看作一种学习的方法。

《机器学习 周志华》:

所谓深度学习,狭义地说就是“很多层”的神经网络,在若干测试和竞赛下,尤其涉及语音、图像等复杂对象的引用中,深度学习取得优越的性能。

所以我们可以总结出人工智能、机器学习、深度学习之间的关系是这样的:

  • 机器学习,是实现人工智能的重要方法。
  • 深度学习,是实现机器学习的技术。

想要了解更多,可参考:

二、机器学习入门

通过上面我们可以简单认为机器学习就是:利用计算机从历史数据找出规律,把这些规律用到未来不确定场景的决策中。

下面我们再来学习一下机器学习的一些入门知识。

2.1机器学习的术语

特征、样本、数据集、标记这些术语的说明:

特征(属性)所张成的空间叫做特征空间

例如我们把“色泽”、"根蒂“、”敲声“作为三个坐标轴,则它们张成一个用于描述西瓜的三围空间,每个西瓜都可在这个空间中找到自己的坐标位置。由于空间中的每个点对应一个坐标向量,我们也把一个示例称为“特征向量”。

回到我们上面的图,再来讲讲“训练数据”、“训练”、“标记”:

2.2机器学习的分类

一般机器学习又可以分成以下几类:

  • 监督学习
  • 半监督学习
  • 非监督学习
  • 增强学习

2.2.1监督学习

监督学习:训练数据(Training Data)可以告诉我们要找的那个模型的输入(Input)与输出(Output,也就是我们说的label)之间有什么样的关系。

  • 给出的数据都有“答案”或“标记”

训练数据:"Java3y公众号"->好的公众号 , "Java4y公众号"->不好的公众号。

输出结果:好的公众号或者不好的公众号

在监听学习下又分为两种算法:

  • 回归(Regression):结果是一个连续的数值(scalar),而非类别
  • 分类(Classification):为训练数据进行分类别(多分类)
    • 二分类:类别只有两种结果(YES OR NO)

回归例子:知道前几天的PM2.5数值,预测一下明天的PM2.5数值。

二分类例子:判断一封邮件是垃圾邮件还是正常邮件。

多分类例子:将新闻帖子分类成不同的类别。

2.2.2非监督学习

非监督学习:训练数据(Training Data)没有对应“答案”或“标记”

训练数据:"Java3y公众号" "Java4y公众号" "Java5y公众号" "Java6y公众号" "yyy公众号" "xxx公众号" "zzz公众号"

输出结果:("Java3y公众号" "Java4y公众号" "Java5y公众号" "Java6y公众号") ("yyy公众号" "xxx公众号" "zzz公众号") 分门类别

对没有“标记”的数据进行分类-聚类分析

聚类分析例子:在以前,中国移动有三个品牌:神州行、动感地带、全球通。我们给一堆的SIM卡交由学习算法训练,不告诉它每张SIM卡具体是什么卡,最后我们是可以将这些SIM卡分类别出来的

2.2.3半监督学习

理解了监督学习和非监督学习,对于半监督学习就很容易理解了。

一部分数据有“标记”或者“答案”,另一部分数据没有

  • 因为各种原因产生的标记缺失。

通常都会使用非监督学习手段对数据进行处理(特征提取、降维),之后再只用监督学习手段做模型的训练和预测。

2.2.4增强学习

根据周围环境的情况,采取行动,根据采取行动的结果,学习行动方式

每次行动,就给这次的行动评分,算法会根据评分来评估下一次的行动是好还是坏,最终不断改进。

例子:Alpha Go下每步棋的时候都会评估自己这次下得怎么样,通过最终的结果不断改进下的每步棋。

2.3机器学习的其他分类

除了我们上面所说的监督学习、非监督学习、半监督学习、增强学习之外,机器学习也可以分成:

  • 在线学习:及时将样例数据作为训练数据对模型进行训练。

    • 需要加强对数据进行监控(有可能样本数据是脏数据,这样就破坏我们的模型)
  • 离线(批量)学习:定时将样例数据作为训练数据对模型进行训练。
    • 不能很快的适应环境的变化

还有:

  • 参数学习:一旦学到了参数,就不再需要原有的数据集。通过调参数就好了。
  • 非参数学习:不对模型进行过多的假设,非参数不代表没参数。

最后

机器学习的核心在于算法上,这篇只是对机器学习的一个简单的入门,希望能对大家有所帮助。

机器学习资源,可关注我的公众号,回复“机器学习”即可领取。

  • 有周志华《机器学习》电子版。吴恩达、李宏毅视频及笔记

乐于分享和输出干货的Java技术公众号:Java3y。

文章的目录导航

原文地址:https://www.cnblogs.com/Java3y/p/10141635.html

时间: 2024-08-29 21:18:42

外行人都能看得懂的机器学习,错过了血亏!的相关文章

hdu 1024 Max Sum Plus Plus 小白都可以看得懂的解析

这道题弄了很久,网上的很多都看不懂,所以想要写一个像我这种菜鸟都可以看得懂的解析. 题意是将一个长度为n的序列,分成m段不相交叉的子段,使得他们的和最大. 于是可以用dp[i][j]来表示在前j个数中,以num[j]结尾并分为i段的最大和.此时我们可以得出一个式子,dp[i][j]=max(dp[i-1][k]+a[j],dp[i][j-1]+a[j])  (i-1< k< j-1).分别表示num[j]单独成段和num[j]加入以num[j-1]结尾的一段. 现在举一个例子,序列为-1,4,

文科生都能看得懂的贝叶斯定理,从白袜到飞机失事再到人工智能

人类很多时候的决策,也都是基于对于事物的预测.比如,“出门要不要带雨伞?”解答这个问题需要查天气预报.人类为了预测天气,古时用的是夜观星象,月亮长毛必有雨.而今天用的是统计预测和经验预测方法.但气象局天气预报也经常会发生不准的情况.佛系的说,世界上本没有绝对的东西,我们算的只是个概率. 在概率领域有一个很重要的学派——贝叶斯学派.其核心是贝叶斯定理,由英国数学家贝叶斯 ( Thomas Bayes 1702-1761 ) 发明的.贝叶斯当时的论文只是对“逆概率”这个问题的一个直接的求解尝试,这哥

任何人都能看懂的TensorFlow介绍

本文经机器之心(微信公众号:almosthuman2014)授权转载,禁止二次转载 原文链接:任何人都能看懂的TensorFlow介绍 深度 | 机器学习敲门砖:任何人都能看懂的TensorFlow介绍 2016-08-21 机器之心 选自 kdnuggets 作者:Soon Hin Khor 机器之心编译 参与:Rick.吴攀.李亚洲 本文是日本东京 TensorFlow 聚会联合组织者 Hin Khor 所写的 TensorFlow 系列介绍文章的前两部分,自称给出了关于 TensorFlo

约瑟夫问题 算法很简单保证每隔人都能看懂用数组实现 利用循环删除数组中的元素

#include<iostream> using namespace std; const int size = 1000; void ArrDel() { int arr[size]; //循环结束标志,一直循环到数组中只剩下最后一个元素结束 int currentNum = size; int count = 0; for (int k = 0; k < size; k++) { arr[k] = k; } //currentNum==1表示数组中只剩下最后一个元素 是循环结束的标志

人人都看得懂的正则表达式

正则表达式可以帮助我们更好的描述复杂的文本格式.一旦你描述清楚了这些格式,那你就可以利用它们对文本数据进行检索.替换.提取和修改操作. 下面有一个正则表达式的简单例子.第一步先要引入有关正则式的命名空间: using System.Text.RegularExpressions; 第二步就是用指定的正则式构建一个正则表达式对象,下面的正则式是用来搜索长度为10的a-z的英文字母: Regex obj = new Regex("[a-z]{10}"); 最后,根据正则式在指定数据中检索匹

看得懂的 Node.js(三)—— Express 启航

如果看过上一篇<看得懂的 Node.js>,就会发现手动搭建一个 web 服务器还是比较繁琐 而 express 就是一个可以极大地提高开发效率的 web 开发框架 一.创建项目 在 express 4.0 之前,我们使用 npm install -g express 来全局安装 express 但是 4.0 之后,express 的命令行工具被单独分离出来,叫做 express-generator npm install -g express-generator 如果了解过 vue,expr

一看就懂的Android APP开发入门教程

一看就懂的Android APP开发入门教程 作者: 字体:[增加 减小] 类型:转载 这篇文章主要介绍了Android APP开发入门教程,从SDK下载.开发环境搭建.代码编写.APP打包等步骤一一讲解,非常简明的一个Android APP开发入门教程,需要的朋友可以参考下 工作中有做过手机App项目,前端和android或ios程序员配合完成整个项目的开发,开发过程中与ios程序配合基本没什么问题,而android各种机子和rom的问题很多,这也让我产生了学习android和ios程序开发的

只有重庆人才看得懂的笑话!

一外省男,进重庆的饭店,点了个鱼香茄子,于是发生下面一段话 "老板,老板!!" "啥子事哦?" "你这鱼香茄子咋没得鱼呢?" "鱼香茄子本来就没得鱼嘛!" "没得鱼干嘛叫鱼香茄子呢?" "日你个先人板板-照你娃这么说,如果你要点个"虎皮青椒",老子还得给你弄张老虎皮不成?:点个"老婆饼",老子还给你发老婆不?:你P人点个"夫妻肺片",我不

为什么学习C语言这么久,看的懂代码,做不出题没项目

我看得懂别人的程序,可是我自己却写不出来,我应该怎么办啊?你了解这些嘛? 你只是能从别人书写的代码知道每一步都做些什么吧? 你明白别人的解题思路吗? 你知道别人为什么要用那样的算法吗? 如果你看着题目,你能写出实现同一功能的代码吗? 你能知道别人在写这个程序的过程中会遇到什么样的问题吗? 你能在看了别人的程序之后写出比他好的代码吗? 你能用另一种算法写出实现同一程序的代码吗? 你真的能看懂别人的程序吗?创一个小群,供大家学习交流聊天如果有对学C++方面有什么疑惑问题的,或者有什么想说的想聊的大家