机器学习:简介

机器学习到底在研究什么?

本教程用尽量直白的方式,把「机器学习是什么」从头到尾讲清楚,不需要任何前置资料。读完你就能用大白话给别人解释:为什么计算机能「凭经验」做判断。


目录

  • 一、先搞懂:我们凭什么能「预判」
  • 二、计算机能帮我们「利用经验」吗
  • 三、给机器学习一个正式说法
  • 四、机器学习到底研究什么:从数据到模型
  • 五、一句话总结
  • 六、一个小演示:让程序「凭经验」判断天气

一、先搞懂:我们凭什么能「预判」

先别急着背定义,我们来回忆一个生活场景:

傍晚小街的路面沁出微雨后的湿润,和煦的细风吹来,抬头看看天边的晚霞------你心里大概会想:明天又是一个好天气

走到水果摊旁,你挑了个根蒂蜷缩、敲起来声音浊响的青绿西瓜,一边满心期待着皮薄肉厚瓤甜的爽落感------因为你判断它是个好瓜

回头看这两件事,会发现一个共同点:它们都靠「经验」做出了预判

  • 为什么看到微湿路面、感到和风、看到晚霞,就认为明天是好天? 因为你的生活经验里已经遇见过很多类似情况:头一天观察到这些特征,第二天天气通常不错。
  • 为什么色泽青绿、根蒂蜷缩、敲声浊响,就能判断是正熟的好瓜? 因为你吃过、看过很多西瓜,基于「色泽、根蒂、敲声」这几个特征,就能做出相当好的判断。
  • 类似的,我们从以往的学习经验知道:下足了工夫、弄清了概念、做好了作业,自然会取得好成绩。

可以看出,我们之所以能做出有效的预判,是因为已经积累了许多经验;而通过对这些经验的利用,我们就能对没见过的新情况做出有效的决策。


二、计算机能帮我们「利用经验」吗

上面这些对经验的利用,靠的是我们人类自己的脑子。那计算机能不能帮忙?

答案是:能,而且这正是机器学习要解决的问题。

我们人类「凭经验预判」这件事,换成计算机的语言,其实就是:

把过去的经验(一条条「情况 → 结果」的记录)交给程序,让程序从中「学」出一条规律;以后遇到新情况,程序就能自动给出判断。

比如,把成千上万个「(西瓜特征)→ 好不好吃」的记录喂给程序,它就能学会判断新西瓜;把成千上万条「(路面状况、风向、云彩)→ 明天天气)」的记录喂给程序,它就能学会预报天气。

关键就在于:经验在计算机里,是用数据的形式存下来的。所以接下来的核心问题就变成了------怎么让程序自动从数据里「学」出规律?


三、给机器学习一个正式说法

前面都是大白话,现在给出一个更形式化的定义,方便你以后跟别人「专业地」讨论。

一个经典的定义是:

假设用 PP P 来评估 一个计算机程序在某类任务 TT T 上的性能 。如果该程序通过利用经验 EE E,在任务 TT T 上获得了性能的改善,那么我们就说:关于 EE E 和 TT T,该程序对 EE E 进行了学习

用公式化的记号写出来就是:

若 P(T) 通过利用 E 而改善,则说程序对 E 进行了学习\text{若 } P(T) \text{ 通过利用 } E \text{ 而改善,则说程序对 } E \text{ 进行了学习} 若 P(T) 通过利用 E 而改善,则说程序对 E 进行了学习

  • TT T(Task):程序要做的任务,比如「判断西瓜好不好吃」;
  • EE E(Experience):经验,也就是我们喂给它的数据(一堆已有的「特征 → 结果」记录);
  • PP P(Performance):用来衡量干得好不好的指标,比如「判断的准确率」。

直觉上很好懂:经验越多、数据越全,程序在该任务上的表现往往越好,这就像「学习了」一样。


四、机器学习到底研究什么:从数据到模型

把上面的思想再推进一步,就得到了机器学习这门学科的核心定位:

机器学习,是一门研究「如何通过计算的手段,利用经验来改善系统自身性能」的学问。

在计算机系统里,「经验」通常以「数据」的形式存在。因此,机器学习研究的主要内容,是关于在计算机上从数据中产生「模型」(model)的算法,这种算法叫做**「学习算法」(learning algorithm)**。

这三者的关系,用一张图就能说清:

scss 复制代码
   经验(数据)
      │
      ▼
 学习算法 ──────►  模型(model)
      ▲                  │
      │                  ▼
   训练过程          新情况 → 判断/预测
  • 你把经验数据 交给学习算法
  • 学习算法基于这些数据,产生一个模型
  • 以后遇到新情况(比如看到一个没剖开的西瓜),这个模型就会给你一个相应的判断(比如「好瓜」)。

这里有个特别妙的类比,帮你记住机器学习的学科定位:

如果说计算机科学 是研究「算法 」的学问,那么类似的,可以说机器学习 是研究「学习算法」的学问。

也就是说,普通算法是你写死步骤让计算机照做;而「学习算法」的特别之处在于------它自己的步骤是从数据里「长」出来的。你只管给数据,它负责长出能用的模型。

最后补充一个术语习惯:我们平时说的「模型」,是一个很宽泛的词,泛指从数据中学到的任何结果。有的结果像一个「全局性的大规律」(比如一整棵决策树),有的结果像一个「局部性的小规则」(比如某一条具体规则)。本教程后续会统一用「模型」来指代学出来的东西。


五、一句话总结

机器学习,就是让计算机「吃」下大量经验数据、自动「长」出一个模型,以后遇到新情况就能像人凭经验预判那样给出判断------它研究的不是写死的算法,而是「从数据里学出算法」的本事。


六、一个小演示:让程序「凭经验」判断天气

下面这段极简 Python 代码,模拟了「凭经验预判」的核心思想:把过去的「天气特征 → 是否好天」记下来,遇到新的一天就数一数历史上特征完全相同的日子大多是什么结果,以此做判断。这正是机器学习里「基于经验做预测」最朴素的雏形。

python 复制代码
# -*- coding: utf-8 -*-
"""
极简演示:让程序「凭经验」判断明天是不是好天。
思路:统计历史中「特征完全相同」的日子,以多数结果做判断。
"""

# 历史经验:每一天用 (路面微湿?, 有晚霞?, 和风?) 描述,结果是 好天/坏天
# 1 表示「是」,0 表示「否」;最后一项 1=好天,0=坏天
history = [
    (1, 1, 1, 1),   # 微湿+晚霞+和风 -> 好天
    (1, 1, 0, 1),   # 微湿+晚霞+无风 -> 好天
    (1, 0, 1, 1),   # 微湿+无晚霞+和风 -> 好天
    (0, 0, 0, 0),   # 干+无晚霞+无风 -> 坏天
    (0, 1, 0, 0),   # 干+晚霞+无风 -> 坏天
]


def predict(history, today):
    """根据历史经验,预测 today 是否好天(统计特征完全匹配的日子)"""
    good, bad = 0, 0
    for rec in history:
        feat, label = rec[:3], rec[3]
        # 只统计「特征完全匹配」的历史日子
        if feat == today:
            if label == 1:
                good += 1
            else:
                bad += 1
    if good == 0 and bad == 0:
        return "经验不足,无法判断"
    return "好天" if good >= bad else "坏天"


if __name__ == "__main__":
    # 新的一天:路面微湿、有晚霞、有和风
    new_day = (1, 1, 1)
    print("新的一天特征(微湿,晚霞,和风):", new_day)
    print("程序判断明天是:", predict(history, new_day))

    # 再来一天:路面干、无晚霞、无风
    another = (0, 0, 0)
    print("另一天特征(干,无晚霞,无风):", another)
    print("程序判断明天是:", predict(history, another))

把这段代码保存为 intro_demo.py,用 python intro_demo.py 运行,输出大致是:

makefile 复制代码
新的一天特征(微湿,晚霞,和风): (1, 1, 1)
程序判断明天是: 好天
另一天特征(干,无晚霞,无风): (0, 0, 0)
程序判断明天是: 坏天

这说明:程序并没有被写死「微湿+晚霞=好天」的规则,而是从你给的历史数据里自己「学」出了判断。当然,这个雏形还很简单(只做精确匹配),真正的机器学习算法要聪明得多------但「利用数据产生判断」这条主线,从最简单的雏形到最复杂的深度学习,始终没变。

相关推荐
workflower1 小时前
人形机器人全身运动控制能力大幅提升
人工智能·深度学习·机器学习·设计模式·机器人·自动化
voidmort1 小时前
3. 理解 RoPE
人工智能·深度学习·机器学习·transformer
2zcode2 小时前
基于MATLAB语音信号分析与机器学习的帕金森病智能检测系统
人工智能·机器学习·matlab
我没胡说八道2 小时前
论文排版自动改格式,一键智能排版,减去百分之九十排版问题,实测工具大比拼
人工智能·深度学习·机器学习·aigc·论文
KaMeidebaby2 小时前
卡梅德生物技术快报|噬菌体筛选:噬菌体筛选工程化优化方案:基于侵染全链条参数调控与水环境应用验证
java·开发语言·人工智能·机器学习·spark
Turbo正则3 小时前
机器学习入门笔记 | 基础算法及其应用场景
笔记·算法·机器学习
C137的本贾尼3 小时前
第17章:多层感知机——把神经元叠起来
机器学习
KaMeidebaby13 小时前
卡梅德生物技术快报|抗体亲和力成熟工业化调控新机制:差异性浆细胞增殖工艺优化思路
java·开发语言·人工智能·算法·机器学习·架构·spark
tmlx3I08114 小时前
高光谱拼接算法(六)RANSAC 误匹配剔除
人工智能·算法·机器学习