机器学习:新手启程

人工智能从1950年图灵测试 提出到现在也经历了几十年的发展了,直到最近大语言模型 展现出的惊艳效果才再次将人工智能推到了风口。网上的资料铺天盖地,但是要想对一项技术有自己的判断,还是需要学习一下技术本身的基础知识。本文正是基于这个目的而来。

2017年的时候由于对机器学习的兴趣,我也曾经学习过一段时间,那个时候深度学习还不是很火热,那时候学习的主要还是支持向量机,推荐算法这些。最近一年的时间我重拾机器学习,发现技术真的是发生了很大的变化,现在讲的已经不是算法的巧妙,模型的数学原理 ,而是算力

0x0. 区分几个概念

人工智能这个领域的水很深,毕竟也发展了几十年了。这期间提出了很多数学模型,算法。上面这个图针对各个领域方法间的包含关系做了个划分。我们现在常说的机器学习其实只是人工智能里面的一个流派而已。

机器学习:通过学习的手段,让机器获得智能。

人工智能的发展经历了推理知识学习 。推理方法论最著名的就是专家系统 ,通过知识来实现最著名的就是知识图谱。不管是推理还是知识都存在一个问题,就是这里面注入了太多的人类智慧。简单来说就是就是将人类智慧转换为规则。

机器学习则是设计一个模型,让机器自主的根据数据去学习。具体做法我们后面再讲。深度神经网络是机器学习方法里面的翘楚,通过简单的模型实现无穷大的力量。现在的大语言模型可以说真的是大力出奇迹🐶

0x1. 机器学习如何学习

机器学习根据数据是否有标签 (也就是上图中的Ground Truth),可以分为

  1. 监督学习:数据是有标签的,也就是输入是有对应的预期输出的
  2. 无监督学习:只有输出,没有预期的输出。最常见的就是聚类算法,一开始并不知道要聚成哪几类。
  3. 变种:半监督学习, 自监督学习等等,顺便一提现在的大语言模型在预训练的时候用的是自监督学习,其实也可以理解为监督学习。

目前大部分任务还是监督学习比较多,如无特殊说明本文说的机器学习指的是监督学习。

让我们把视角回到上图中,上图展示的是机器学习一个通用处理过程:

  1. 收集输入输出数据
  2. 定义模型:简单理解就是一个函数,给定一个输入,给出一个输出。这个函数是有未知参数的,这些参数是需要机器去学习的。
  3. 定义模型的学习目标 :目标显然就是让模型的输出和我们期望的输出是一样的,转换为数学含义就是我们需要定义一个函数,这个函数的输入为模型输出和期望输出,函数的输出为模型输出和期望输出的差异。这个函数称之为损失函数
  4. 模型参数学习 :一般用的就是大名鼎鼎的梯度下降法

问题阐述

下面我们一个简单的例子来说明这个过程。假设我们有这样一个问题,我希望预测掘金文章的阅读数,直觉上来说这个阅读数和展现数应该有很大的一个关系。

收集数据

收集历史数据,假设收集了最近一年数据: <math xmlns="http://www.w3.org/1998/Math/MathML"> ( x 1 , y 1 ) , ( x 2 , y 2 ) . . . . ( x 365 , y 365 ) (x_1,y_1),(x_2,y_2)....(x_{365},y_{365}) </math>(x1,y1),(x2,y2)....(x365,y365), <math xmlns="http://www.w3.org/1998/Math/MathML"> x i x_i </math>xi为展现数, <math xmlns="http://www.w3.org/1998/Math/MathML"> y i y_i </math>yi为对应的阅读数

定义模型

假设阅读数和展现数是一个线性的关系,那么我们可以定义一个模型函数如下:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> y = a x + b ; y 为阅读数, x 为展现数, a , b 为未知参数 y = ax+b;y为阅读数,x为展现数,a,b为未知参数 </math>y=ax+b;y为阅读数,x为展现数,a,b为未知参数

定义损失函数

我们肯定是希望模型的预测结果和预期结果一模一样的。
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> L ( a , b ) = ∑ i = 1 365 ∣ y i − ( a x i + b ) ∣ L(a,b) = \sum_{i=1}^{365}|y_i-(ax_i+b)| </math>L(a,b)=i=1∑365∣yi−(axi+b)∣

模型参数学习

找到一个参数对(a,b)使得损失函数最小,或者足够小。这个怎么找有一套数学方法,可以先不用管。

0x2. 神经网络

每个神经元会获取前一层神经元的输出作为输入,然后生成一个输出。

<math xmlns="http://www.w3.org/1998/Math/MathML"> o u t p u t = a c t i v e F ( ∑ i = 1 n w i x i + b ) output = activeF(\sum_{i=1}^nw_ix_i +b) </math>output=activeF(∑i=1nwixi+b) activeF称为激活函数。

神经网络为什么有用

神经网络这个模型是有数学原理支撑的,理论上只要神经元足够多,该模型能够拟合所有的曲线。称之为万能近视定理。可以看下图获得一个直观的理解。

假设我们要拟合的是 <math xmlns="http://www.w3.org/1998/Math/MathML"> f ( x ) f(x) </math>f(x)这条曲线,按照微分的思想,曲线我们是可以用无数多的分段直线去拟合的 ,而这些分段的直线都可以用 <math xmlns="http://www.w3.org/1998/Math/MathML"> g ( x ) g(x) </math>g(x)这种形式来表示。 <math xmlns="http://www.w3.org/1998/Math/MathML"> g ( x ) g(x) </math>g(x)即对应激活函数。可以看到这个形式和上面的神经网络模型是一个东西。下图描述的是虽然是二维平面的,但是只要把自变量 <math xmlns="http://www.w3.org/1998/Math/MathML"> x x </math>x变成一个向量,就可以扩展到高维上面。

相关推荐
IT_陈寒1 天前
React Hooks闭包陷阱:你以为的state可能早就过期了
前端·人工智能·后端
Thomas.Sir1 天前
第一章:Agent智能体开发实战之【初步认识 LlamaIndex:从入门到实操】
人工智能·python·ai·检索增强·llama·llamaindex
笨笨饿1 天前
29_Z变换在工程中的实际意义
c语言·开发语言·人工智能·单片机·mcu·算法·机器人
boy快快长大1 天前
【大模型应用开发】记忆
人工智能
LaughingZhu1 天前
Product Hunt 每日热榜 | 2026-04-05
前端·数据库·人工智能·经验分享·神经网络
OPHKVPS1 天前
GoBruteforcer(GoBrut)僵尸网络新攻势:AI 生成弱配置成“帮凶”,瞄准加密货币及区块链数据库
网络·人工智能·区块链
打乒乓球只会抽1 天前
AI Agent:大模型+工具的智能革命
人工智能
Pelb1 天前
求导 y = f(x) = x^2
人工智能·深度学习·神经网络·数学建模
workflower1 天前
注塑机行业目前自动化现状分析
运维·人工智能·语言模型·自动化·集成测试·软件工程·软件需求
CeshirenTester1 天前
华泰证券2027届校招启动|提前批+国际管培+金融科技,三个专场一次说清
人工智能·科技·金融