目录
3/3 机器学习基本概念介绍快速了解機器學習基本原理生成式學習的兩種策略:要各個擊破,還是要一次到位能夠使用工具的AI:New Bing, WebGPT, ToolformerBrief Introduction of Deep LearningGradient DescentBackpropagation卷積神經網路 (CNN)自注意力機制 (Self-attention) (下)3/3 机器学习基本概念介绍
快速了解機器學習基本原理
机器学习 ≈ 机器自动寻找一个函数f
例如:
chatGPT:输入:“什么是机器学习”通过函数f,输出:“机”
Midjournery:输入:一只可爱的猫,通过函数f,输出:一张猫猫图片
根据函数的输出可以分为两类:Regression(回归)与Classification(分类)
Regression:函数的输出是一个数值
例如:输入输入今天的PM2.5值、温度、臭氧量等,输出明天的PM2.5值Classification:函数的输出是一个类别(选择题)
例如:判断一封邮件是否为垃圾邮件
机器学习不断发展不再局限于上述分类,而是变为了更加复杂的Structured Learning
Structured Learning:结构化学习,又称为Generative Learning生成式学习,生成有结构的物件(如影像、文句等)(联想:生成式学习就像是全职猎人里的暗黑大陆(乐)
chatGPT属于哪类?:把生成式学习拆解成多个分类问题
寻找函数的三步骤
【前置作业】决定要找什么样的函数?(无关技术,取决于要做的应用)
(先放总结)
展开来讲:
Step1:选定候选函数的集合Model
深度学习中类神经网络的结构(如:CNN、RNN、Transformer等等)指的就是不同的候选函数集合,函数集合表示为H
目的:缩小选择的范围;技巧性强
训练资料少时,L(f)小但测试差的函数就会多,这个时候画出集合范围要保守(小);反之测试数据多时,上述L(f)小但测试差的函数就会少
涉及的拓展知识:Convolutional Neural Network,CNN、Self-attention……
Step2:订出评价函数优劣的标准
使用函数Loss函数,将f做出输入,输入L函数:L(f),根据输出的大小,评价函数(越大越差)
L的计算过程取决于training data
常用方法:supervised Learning(全部都有标准答案),semi-supervised Learning(没有标准答案,要定义评量标准),RL(reinforcement Learning)等等
Step3:找出最好的函数,最佳化Optimization
将集合H中的所有函数带入L中,寻找Loss最小值
常用方法:Gradient Descent(Adam,AdamW…),Genetic Algorithm等等
超参数:手调参数
【注意】有时候每一步在选择方法时并不会选择所谓的“最优解”,原因是因为选择的方法的好是 能支援其他步骤
例如:在“设定范围“时,选择Residual Connection,虽然框选出的范围较大,但能在“达成目标”这步时选出真正最好的函数
生成式學習的兩種策略:要各個擊破,還是要一次到位
生成式学习:生成有结构的复杂物件
策略一:各个击破AR(Autoregressive Model)
策略二:一次到位NAR(Non-autoregressive Model)
怎么保证生成固定长度的文字?
法一:若100个字前没出现终止符,直接截断
法二:先决定输出100个字,再输出
两个方式比较
AR:速度慢,答案质量好,适合生成文字NAR:速度快,答案质量较差,适合生成图像
P.s.生成影像常用NAR的原因是:影像像素过多,AR太慢
结合两个方法(取长补短)
以语音合成为例:生成分为两个阶段,AR决定大方向,NAR生成最后产物
将“一次到位”改为“N此到位”(类似Diffusion Model)
能夠使用工具的AI:New Bing, WebGPT, Toolformer
New Bing是有搜寻网络的,但什么时候进行搜寻是由机器自己决定的
没有相关论文,但有类似的WebGPT,论文地址: /abs/2112.09332
WebGPT回答生成过程:输入”Which river is longer, the Nile or the Yangtze?”(翻译:拿一条河比较长,尼罗河还是扬子江?)WebGPT:提取关键字(如:”Nile vs Yangtze”、”nile length”、”Yangtze length”)对关键字经行网络搜索,根据算法对搜索网页资料的部分段落进行收藏(注意只收藏文字段落,而不是整个网页)整理生成答案(答案后会附上引用的网址)
Toolformer:學習使用工具的 AI,可以使用多種不同的工具(如搜索网络、计算机、翻译等)
如何在没有人类示范的情况下生成大量资料?
方法一:用另一个语言模型产生资料;方法二:验证语言模型生成的结果
使用Toolformer的结果
LAMA、Math Benchmarks、QA Benchmarks:data Set,问答资料集
橙线:测试时不允许呼唤API(使用工具)(保证实验的严谨性)
Brief Introduction of Deep Learning
先附上大致的时间线
简述,来自:/zyuPp/article/details/99288909
1958年:人们感觉人工智能要来了,因为linear model的出现,它可以做到一些稍微复杂的分类和预测问题,当时他们也叫这个技术为Perceptron,感知器
1969年:有人终于发现了linear model有缺点,研究了一下为什么“坦克与卡车”的图像分类为什么如此精确,原来是因为两组图片的拍照时间不一样,而机器是通过其亮度作为特征来分类的
1980年代:多层感知机MLP,尝试使用多层的感知机(与现在的deep learning基本没有差别)
1986年:出现了反向传播,但是发现超过3层就不太有用了
1989年:有人认为,一个隐藏层就足够成为任何的function,这段时间多层感知机被各种嫌弃,所以人们才给它换了个名字,就是深度学习
:RBM initialization被认为是大突破,这个非常复杂,用于梯度下降初始化值,最后发现复杂但是没啥用
:知道要用GPU来加速深度学习的模型训练
:被用在语音辨识中,发现很好用
:赢得了ILSVRC图像比赛,做图像的人也开始用Deep Learning(著名的AlexNet)
深度学习的三步骤:
Step1:define a set of function (function即Neural Network) Step2:goodness of function Step3:pick the best function
logistics regression将其连接,一个逻辑回归称为Neuron神经元,
不同的方法连接Neural Network就得到不同的结构structure,
每个logistics regression都有属于自己不同的weight权重,和bias偏移量,
weight和bias的集合称为network的函数θ
将neuron连接起来的方式有很多种(手动连接),其中
Fully Connect Feedforward Network(完全连接前馈神经网络)是最常见的
用一个最简单的示意图说明
两个输入:1,-1;6个neuron,两个一列
每个neuron都有一组weight和bias,例如蓝色(上)的weight是1与-2,bias是1
则1与-1输入后得输出为4,4通过sigmoid函数(为了将数值映射至0-1)得0.98
反复进行上述运算
上述就是一个function,如果用向量来表示输入输出,则可得
但如果是不知道参数(weight & bias),则称为一个function set
一般化一个network的示意图
大家关于”Deep”的定义各不相同(多少层算Deep呢)一些著名的Deep Network
Matrix operation矩阵运算神经网络
将上述例子用矩阵运算表示(能提高大型运算的效率和速度)
则整个neural network的运算可以等同于一连串的matrix操作
network通过hidden Layers(隐藏层)来提取特征,替代了原来的特征工程(即手动选择特征),在隐藏层最后一层输出的就是新的特征,而输出层就拿着这些新的特征作为输入,通过一个多分类器(softmax函数),得到最后输出y
【举个例子:识别手写数字2】
输入一张16×16(256)像素大小的图片:输入维数为256(x1 ~ x256)
输出手写数字的数值0~9:输出维数为10(y1 ~ y10,输出y1表示数值为1,以此类推)
Step1:Neural Network
设计示意图如下
红色框中表示一个function set,其中每一个function都能用于做手写数字识别,只是有优劣差异
接下来的工作就是使用gradient descent,寻找一个最合适的function
最关键的是设计neural network的结构structure
Q&A
Q:怎么决定network的层数和neuron的数量?
A:不断尝试+直觉的
p.s. DL让我们从手动提特征转化到设计网络结构
很难去定义一个好的,合适的特征,倒不如让机器自己去尝试,再让人去选择,例如对于语音识别和影像识别,深度学习是个好的方法,因为特征工程提取特征并不容易
Q:能否自动设计结构?
A:进化人工神经网络(Evolutionary Artificial Neural Networks)但是这些方法并不是很普及
Q:可以自己设计网络结构吗?
A:可以。CNN就是不错设计结构,卷积神经网络
Step2:定义Loss函数
例如输入手写数字“1”,得到一组十维限量输出yi(理想输出是y^ 1000000000)
计算y与y^的Cross Entropy(交叉熵),手动调整参数,以求得C的最小值
其余的training data同理,输入后计算Cost,
将每一个function的Cost求和,得Loss值,
去除function set 中Loss值最小的function即可
Step3:寻找最优function
(我们的老朋友)Gradient descent
当计算量很大,以及计算很复杂时,我们也不会自己去计算,而是通过一些toolkit去计算
有一个通用理论:对于任何一个连续的函数,都可以用足够多的隐藏层来表示。(若为真是否只需一层网络即可,deep只是噱头)
Gradient Descent
Backpropagation
卷積神經網路 (CNN)
自注意力機制 (Self-attention) (下)
如果觉得《李宏毅-春机器学习 ML SPRING-学习笔记:3/3 机器学习基本概念介绍》对你有帮助,请点赞、收藏,并留下你的观点哦!