机器学习入门介绍

1. 机器学习介绍

随着GPT、stable diffusion等生成式AI模型受到大众的广泛关注,机器学习也开始走向我们的视野。 那么什么是机器学习呢? 机器学习约等于让机器自动去找到一个函数 y = f ( x ) y= f(x) y=f(x) ,然后通过这个函数来解决我们任务中的问题。 例如:

  • Midjourney:我们期望函数输入是一段文字,输出是一段图片
  • GPT: 输入是一段文字,输出是另外一段文字
  • 一个预测房价的模型:我们期望函数输入的是房子的属性(房子的地段、建筑年龄、周围的交通)。而函数的输出是房子的价格
  • 一个图像辨识的模型:我们期望函数输入的是一张图片,输出是一只猫或 一只狗
    ​​
    在这里插入图片描述

2. 处理任务的分类

在机器学习处理的任务中,如果我们根据函数的输出来分类,可以分成两种类型的任务。

Regression(回归)

当我们训练一个模型做以下任务时:预测明天PM 2.5的数据、房价、股价时,函数 y = f ( x ) y = f(x) y=f(x)的输出结果是一个数值,这个时候机器在一个Regression(回归)任务来找到函数 y = f ( x ) y = f(x) y=f(x),再通过函数来预测我们要的数值。

在这里插入图片描述

Classification(分类)

当我们训练一个模型做以下任务时:识别垃圾邮件、图像内容分类,函数输出的是一个类型,实现我们是让函数去做一个选择题,这个时候机器可以通过逻辑回归(Logistic Regression)来找到函数模型。
在这里插入图片描述

AlphaGo是一个什么类型的任务?

3. 机器是怎么找到函数的

我们都知道在机器学习领域中,模型是通过训练数据(training data)训练出来的。这也就是我们前面说,机器学习约等于让机器自己去找到一个有效的函数模型。那么怎么让机器通过训练,找到有效的函数模型的呢?
机器找到有效的函数模型的过程,我们大概可以看成以下三个步骤:

  • 设定函数范围
  • 设定评估标准
  • 达成目标

3.1 设定函数范围

在机器学习的任务中,我们通常说机器有一个neural network,机器通过这个neural network来计算具体的任务。这里的neural network其实是一堆函数的集合。
我们说机器学习约等于让机器自己去找到一个有效的函数,来完成具体的任务。这里是约等于而不是等于,因为函数的范围,是根据机器要完成的具体任务、可训练的数据量、能获取的运算资源 来设计的。

不同类型的neural network

根据机器要完成的任务不同,人们设计了不同的neural network,如例:

  1. 当我们训练一个房价预测的模型时,我们可以采用fully connected network
    在这里插入图片描述
  2. 为了处理图像识别任务,人们设计了CNN(Convolutional Neural Networks):
    在这里插入图片描述
  3. 为了让机器能做语音识别,能处理nlp(Natural Language Processing)任务,人们设计了RNN,self-attention
    在这里插入图片描述

函数集的大小

neural network是 y = f ( x ) y = f(x) y=f(x)集合
如果 f ( x ) f(x) f(x)可以是X一阶函数: y = w x + b y = wx +b y=wx+b
也可以是X的多阶函数: y = w n x n + w n − 1 x n − 1 + . . . + w x + b y = w_nx_n+w_{n-1}x_{n-1} + ... +wx + b y=wnxn+wn1xn1+...+wx+b
高阶函数的包含低阶函数,那么是不是阶数越多越好呢?函数集的范围是不是越大越好?这个问题,要根据我们能获取的数据集来看,如果数据集太小,函数集合太大,很可能我们的模型在训练数据中,可以获取很好的结果。但是在测试数据中,则不是很有效。
为什么会这样?因为neural network把训练数据的所有特征都背下来了,包括所有随机因素导致的结果变化,这种问题叫overfitting(过拟合)。所以函数集并不是越大越好。

3.2 设定评估标准

要让机器能够自动找到函数 y = f ( x ) y= f(x) y=f(x),我们需要给机器设定一个评估函数好坏的标准。
那么什么样的函数,才能称之为好呢?答案是:目标导向
当我们设定一个模型来预测房价时,我们希望房价的真实成交值 y y y,跟我们模型的预测值 y ∼ \overset{\sim}{y} y之差距越小越好,这两者之间的差距,我们称之为Loss。所以我们可以定义一个Loss function: L ( f x ) L(f_x) L(fx)我们的目标是让 L ( f x ) L(f_x) L(fx)越小越好,所以我们可以用这个Loss function来做为评估标准。在Regression中,我的可以定义 L ( f x ) = ∑ i = 1 n y ∼ i − y n L(f_x) = \sum{_{i=1}^{n}}\sqrt{\frac{\overset{\sim}{y}_i- y}{n}} L(fx)=i=1nnyiy
在这里插入图片描述

3.3 达成目标

我们已经设定好了函数集合,也有了评估函数好坏的标准,接下来就是给机器一种优化算法(Optimization),让机器能够自动的找到最佳的函数,使得Loss最小化: f ∗ = arg ⁡ min ⁡ f ∈ H L ( f ) f^{*} = \mathop{\arg\min}\limits_{f\in\mathcal{H}}L(f) f=fHargminL(f)
目前,机器寻找最佳函数的思路和方法,基本都是Gradient Descent(梯度下降)算法,使得Loss不断的趋近于局部最小值(local minima)。
对于函数 y = w n x n + w n − 1 x n − 1 + . . . + w 1 x 1 + b y = w_nx_n+w_{n-1}x_{n-1}+ ... +w_1x_1+b y=wnxn+wn1xn1+...+w1x1+b
Gradient Descent是怎么找到最小的Loss的呢?
首先,我们假设 y = w x + b y = wx +b y=wx+b,那么Loss function是一个参数为w的函数 L ( w ) L(w) L(w),它是一个二维平面上的曲线,如下图拟示。Gradient Descent是通过以下步骤找到 L ( w ) L(w) L(w)的最小值:

  • [1] 首先,随机给函数参数一个初始值 w 0 w^0 w0
  • [2] 计算 L ( w ) L(w) L(w) w 0 w_0 w0位置的微分,通过微分的正负,可以确定Loss下降的方向,如下图,当微分为负时,需要增加 w w w,当微分为正是,需要减小 w w w
  • [3] 将 w w w w 0 w_0 w0移动到 w 1 w_1 w1。这里的移动幅度应该多长呢?一般我们在训练模型时,需设定一个learning rate( η \eta η),移动的幅度就是 η d L d w \eta \frac{dL}{dw} ηdwdL,所以 w 1 ← w 0 − η d L d w ∣ w = w 0 w_1 \gets w_0 - \eta\frac{dL}{dw}|_{w=w^0} w1w0ηdwdLw=w0
  • [4]重复[2]、[3]直到Loss不再下降。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值