status
type
date
slug
summary
tags
category
password
icon
Total Videos
Link
Video Duration

机器学习是什么

机器学习就是机器自动找一个函数,人类的数据是输入,符合人类的需要是输出。

函数的分类

  • 回归(Regression):函数的输出是一个数值(标量)。 例如,PM2.5,输入是天气相关的数据,输出是一个关于PM2.5的数值。
  • 分类(Classification):函数的输出是一个类别(选择题) 例如,邮件过滤系统,就是一个分类问题。
  • 结构化学习(Structure Learning):又叫做生成式学习(Generative Learning),生成带有结构的东西,如视频,图片,语音,句子。
那么Chatgpt属于哪一类呢?
  • 从工作原理上看,GPT只是在做一个选择文字的游戏,所以可以看成是分类。
  • 从用户角度看,GPT虽然是一个字一个字的挑选回答,但最终的生成了一个完整的句子,所以可以看成是生成式学习。或者所GPT是把生成式学习拆解成多个分类问题。

机器学习找出函数的三步

找出函数的前置任务与技术无关,取决于自己想做的应用。输入是什么,输出是什么。

1.设定范围

具体而言,我们需要找出一个函数,以Linear Models为例:
其中:
  • 是我们需要预测的东西
  • 是我们已知的信息
  • w和b是两个未知参数,它们分别代表“weight(权重矩阵)”和“bias(偏差)”,是需要机器从数据中找出的参数。而这些数据从哪来呢?这就需要我们根据任务领域的知识和个人的经验去划定范围,也就是Domain knowledge。
这个候选函数的集合,也就是机器学习中的模型(Model)
深度学习(Deep Learning)中类神经网络的结构(CNN,RNN,Transformer)指的就是不同的候选函数的集合。

2.设定标准

训练数据中设定评估函数好坏的标准,也就是Loss函数(Loss function)其中的就是上文提到的两个未知参数。
Loss值的计算前提是必须有标准答案,也就是人工标注(Label)。机器通过学习这些训练数据生成一个Loss函数,用以评估机器自己的输出与标准答案的差距,所以标准数据的好坏是非常重要的。
Loss值通常由以下公式计算:
式中代表一定的算法,常用的有:
  • 平均绝对误差(MAE):当
  • 均方误差(MSE):当e=
  • 交叉熵(Cross-entropy):当都是概率时
Error Surface图可以反映出Loss值的分布情况
Error Surface图可以反映出Loss值的分布情况
但是大量的数据不可能都经过人工标注,即使是强化学习(Reinforce Learning)也要耗费巨大的人力,所以要让机器通过学习已有的标准数据来评估未标注的数据准确性,让两种相似的数据打上同一种标签,这就是半监督学习(Semi-Supervised Learning)。半监督学习的Loss函数,是机器自己的数据与标准输出加上相似答案差距的差距。
💡
训练过一些小模型的人都知道,很多项目后端都会显示一个loss或reference loss,且文档都会提醒此数值越小越好,此loss即为彼loss。

3.找出函数

找出一个,代入Loss函数:,找出能使Loss值最小的那个,代入Model:中,那么这个Model就是最好的Model,用公式表示为:
但由于Model中的函数通常非常的庞大,如果用穷举法计算Loss值会变得异常的耗性能,所以通常会采用其他的算法来进行Loss计算。几种常用的算法是:
  • Gradient Descent
  • Backpropagation
  • Genetic Algorithm
以Gradient Descent为例:
notion image
以单参数为例:
  1. 第一步是随机选取一个初始的
  1. 计算时的微分(蓝色虚线),如果计算出的斜率是负的(左高右低),机器就会把的值增大,这样就可以让Loss值减小,反之亦然。
  1. 具体的值取多大取决于两个因素:
    1. 前面计算出的斜率如果越大,则这个步长取值越大;斜率越小,则取值越小。
    2. 还取决于学习率(Learning rate)需要人工设定,设定的大,步长就大,Loss函数改变的数值也大,反之亦然。这种需要人工设定的参数称为超参数(hyperparameters)。
  1. 现在我们就可以将移动到了,通过这种方法不断的更新,用公式表示就是:
  1. 什么时候结束整个机器寻找函数的这个过程呢?我们可以通过超参数指定训练的轮数,也有另一种理想的情况是Loss值算出来是0,训练过程自动停止。
从上图看出,Gradient Descent算法似乎只能找出Local minima,而找不出Loss值更低的global minima,这个问题是后话了。
对于双参数而言,Gradient Descent只需要再多算一个b的偏导就能得出两个参数就能构成一个矢量,在Error Surface图中就可以很直观的看出整个函数的计算过程。
notion image
💡
要注意不同的学习方法通常都是属于上述三个范畴之一,且不可混淆,比如深度学习和强化学习,一个属于设定范围,一个属于设定标准,它们之间没有好坏,属于不同的范畴,所以不可比较,只是视情况采取的学习方法之一。
 
1.3深度学习基本概念(下)1.1机器学习(李宏毅)
Loading...