前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小白入门机器学习的三个问题

小白入门机器学习的三个问题

作者头像
AI科技大本营
发布2021-12-04 17:03:35
3330
发布2021-12-04 17:03:35
举报
文章被收录于专栏:AI科技大本营的专栏

随着人工智能技术的发展,机器学习已成为软件 / 互联网行业的常用技能,并开始向更多行业渗透。对越来越多的 IT 技术人员及数据分析从业者而言,机器学习正在成为必备技能之一。

今天我们就来聊聊机器学习的“入门级”问题。

01

什么是机器学习?

按照字面意思理解,“机器学习”就是让机器自己学会某种东西。更准确一点就是:让计算机程序(机器)不是通过人类直接指定的规则,而是通过自身运行,习得(学习)事物的规律和事物间的关联。

02

机器是如何学习的?

对于人类而言,一个概念对应的是具体的事物,我们认知的事物都不是孤立的,互相之间有着各种各样的关联。比如我们对一个人说“苹果”的时候,他可能会想乔布斯创立的公司;也有可能想到圆圆的、香甜的、有皮有核的水果;也有可能想到香蕉、菠萝等其他水果。但是如果我继续说:“苹果一定要生吃,蒸熟了再吃就不脆了。”那么“苹果”一词确定无疑指的是水果,而不是公司。因为在我们的知识库里,都知道水果可以吃,但是公司不能吃。出现在同一句话中的“吃”对“苹果”起到了限定作用,这是人类的理解。

如果我们将“苹果”这两个字输入计算机,计算机并不会幻视出一个水果,也不会像人那样“意识到”这个单词的含义。计算机程序能够处理的只有数值和运算。

计算机程序不过是一段存储在硬盘上的 0、1 代码,运行时被读取进内存,CPU 根据代码转换成的指令来做一组特定的操作,让这些 0、1 数字通过逻辑电路进行若干运算后,生成计算结果。所以要让一段程序了解客观世界变化万千的事物,则必须将这些事物转化为数值,将事物的变化和不同事物之间的关联转化为运算。当若干现实世界的事物转换为数值后,计算机通过在这些数值之上的一系列运算来确定它们之间的关系,再根据一个全集之中个体之间的相互关系来确定某个个体在整体(全集)中的位置。

“苹果”被输入进去的时候,被转化为一个数值 Va。经过计算,这个数值和对应“吃”的数值 Ve 产生了某种直接的关联,而同时和 Ve 产生关联的还有若干数值,它们对应的概念可能是“香蕉”(Vb)、“菠萝”(Vp)、“猕猴桃”(Vc)等。据此,计算机就会发现 Va、Vb、Vp、Vc 之间的某些关联(怎么利用这些关联,就要看具体的处理需求了)。

说到数值,大家可能本能地想到 int、double、float……但实际上,如果将一个语言要素对应成一个标量的话,太容易出现两个原本相差甚远的概念经过简单运算后相等的情况了。假设“苹果”被转化为 2,而“香蕉”被转化为 4,难道说两个苹果等于一个香蕉吗?因此,一般在处理时会将自然语言转化成 n 维向量。只要转化方式合理,规避向量之间因为简单运算而引起歧义的情况还是比较容易的。

这种现实世界和计算机之间从概念到数值,从关系到运算的映射,造就了机器可以通过自主学习获得事物规律的可能。既然机器有可能自己学习事物的规律,那么如何才能让它学到规律呢?我们先来看一个故事。

猫妈妈让小猫去捉老鼠,小猫问:“老鼠是什么样子啊?”

猫妈妈说:“老鼠长着胡须。”结果小猫找来一头大蒜。

猫妈妈又说:“老鼠有 4 条腿。”结果小猫找来一个板凳。

猫妈妈再说:“老鼠有一条尾巴。”结果小猫找来一个萝卜。

在这个故事里,小猫就是一个基于规则的(rule-based)“计算机程序”,它完全按照“开发者”猫妈妈的指令行事。但是因为 3 次指令都不够全面,结果 3 次都得出了错误的结果。如果要把小猫变成一个基于机器学习模型的(model-based)计算机程序,猫妈妈该怎么做呢?

猫妈妈应该这样做,给小猫看一些照片,并告诉它有些是老鼠,有些不是。

猫妈妈可以先告诉小猫:要注意老鼠的耳朵、鼻子和尾巴。小猫通过对比发现:老鼠的耳朵是圆的,别的动物耳朵不是圆形的;老鼠都有长而细的尾巴,别的动物有的尾巴短,有的尾巴粗;老鼠的鼻子是尖的,别的动物不一定是这样的。这时小猫就学习到一个规律——老鼠是圆耳朵、细长尾巴、尖鼻子的动物,通过这个规律来抓老鼠,那么小猫就成了一个“老鼠分类器”。

小猫(此处将其类比为一个计算机程序)是机器(machine),让它成为“老鼠分类器”的过程叫作学习(learning)。猫妈妈给小猫看的那些照片是用于学习的数据(data)。猫妈妈告知小猫要注意的几点,是这个分类器的特征(feature)。学习的结果“老鼠分类器”是一个模型(model)。小猫思考的过程就是算法(algorithm)。

03

我们应该如何学习机器学习

1. 扎实数学知识

很多同学想学机器学习,但是一上来就看模型,看到一大堆炫酷的公式,难免感觉很吓人。有些人因此萌生退意,要么放弃,要么只用现成工具把模型当作黑盒使用。其实,学习经典模型,并不需要多么深厚的数学功底,只要掌握本科阶段所教授的数学知识就基本够用了。在学习的最初阶段,只要满足以下几个条件,就可以对经典机器学习模型有一定深度的感性认识了。

  • 学过坐标系
  • 了解函数、向量和矩阵的概念
  • 能从直观角度对求导、求微与函数的关系有所理解
  • 掌握基础矩阵运算

如果想要灵活运用机器学习,还需要进一步学习数学知识。建议大家在学习模型的过程中,一旦遇到了数学上的阻碍,就去查找相应知识,制作一本自己的数学知识速查手册,把常用的细小知识点都记录下来,按主题整理成速查手册(小字典),需要用的时候快速查找对应的知识点,这样我们学习机器学习的过程会顺畅不少。

2. 重视经典模型

初次学习模型知识,不必贪多。比如线性回归、逻辑回归、决策树、SVM、SVR、K-means 等,这些选定的模型,一定要搞清楚其问题域、模型函数、目标函数、训练算法……深入数学公式推导的层面,理解每一步的公式变换和对应的物理意义,然后去实践。

3. 不断反复学习

达到掌握机器学习精髓的程度并非一蹴而就,总要从最简单的模型开始。即使是掌握最简单的模型,也需要反复学习。有可能第一遍看完有点似懂非懂,或者感觉自己明白了,但要从头推导又卡壳了。就像刚学完又忘掉的生字,或是背了一半,后半部分怎么也想不起来的九九乘法口诀。这都是非常正常的现象。究其原因,就是还没有真正掌握。多学几遍,从头到尾掌握整件事情的逻辑,知道一个模型是怎么从最初设定目标,一步步实现目标的。当真正掌握了这个过程之后,再回头看一个个具体的模型,每一步都是顺理成章的。

4. 多写程序,动手实践

虽然我们学习的是机器学习原理,但是这并不等于我们就可以停留在原理层面。为了学好原理,我们需要具备基本的编程能力,至于编程语言的选择,如果你在开始学习的时候已经有了编程基础,那么继续使用自己擅长的语言就可以。如果你还不会编程,或者觉得自己之前学的、用的语言不好,想换一种更适合机器学习的编程语言,那么我的建议是 Python。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI科技大本营 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档