以下内容仅为自己对深度学习模型的白话理解,若有误请理解并指出,感谢!
一、如何理解模型实现特征的"抽象"
Think!
请你把下面的三张图 <math xmlns="http://www.w3.org/1998/Math/MathML"> { x 1 , x 2 , x 3 } \{x_1,x_2,x_3\} </math>{x1,x2,x3},划分到类别 <math xmlns="http://www.w3.org/1998/Math/MathML"> { y 1 , y 2 } \{y_1,y_2\} </math>{y1,y2}里。
我想你应该是黑人问号脸:???, <math xmlns="http://www.w3.org/1998/Math/MathML"> { y 1 , y 2 } \{y_1,y_2\} </math>{y1,y2}是个啥都不和我说,连个图的划分标准都不告诉我,我tm咋给你分类?
别急,那我现在给你几个"训练"用例:
我想你通过经验已经猜到了,图的划分标准是"图形的颜色", <math xmlns="http://www.w3.org/1998/Math/MathML"> { y 1 = 绿色 , y 2 = 黄色 } \{y_1=绿色,y_2=黄色\} </math>{y1=绿色,y2=黄色},所以你猜测结果应该是:
那如果"训练"用例是这样的呢:
我想你又猜到了,图的划分标准是"图形和线是否连接", <math xmlns="http://www.w3.org/1998/Math/MathML"> { y 1 = 是 , y 2 = 否 } \{y_1=是,y_2=否\} </math>{y1=是,y2=否},所以你猜测结果应该是:
最后再来一次,给你的"训练"用例如果是这样呢:
这次思考下,图的划分标准和 <math xmlns="http://www.w3.org/1998/Math/MathML"> { y 1 , y 2 } \{y_1,y_2\} </math>{y1,y2}是啥?
答案来了:图的划分标准是"图形的形状", <math xmlns="http://www.w3.org/1998/Math/MathML"> { y 1 = 圆形 , y 2 = 方形 } \{y_1=圆形,y_2=方形\} </math>{y1=圆形,y2=方形},如果你猜对了,那么恭喜你,你现在是一个"可靠的模型"了。
Why?
现在让我们思考下:我们为什么会划分了?很简单,因为我们看到了"训练"样本。
这到底发生了什么,为什么看到了"训练"样本就会划分了?因为我们通过大量的"训练"样本,"猜到了"划分的标准,即规则。
深度学习的模型也是如此的,未训练的模型和一开始的我们一样,一脸懵逼,只能乱给答案。但是,当我们给了足够的训练样本,并告诉它每个样本对应的标签后,它逐渐学习到了"规则",于是可以做出判断了。
However!
不知道你有没有发现,从不同的维度,即 <math xmlns="http://www.w3.org/1998/Math/MathML"> { 图形的颜色 , 图形的形状 , 图形和线是否连接 } \{图形的颜色,图形的形状,图形和线是否连接\} </math>{图形的颜色,图形的形状,图形和线是否连接},你可以进行不同的判断。等等,你竟然从一张图里区分出了三个不同的维度,并且你还会进行各自维度的比较!!
So
所以本质上来说,你可以通过训练样本,根据不同 维度 "抽象"出不同的"特征",并且根据这些特征进行"规则"的学习。我想你已经理解深度学习模型的工作原理了。
二、从Embedding视角回归主线问题
什么是Embedding
先来看看谷歌的解释:
Embedding是一个相对低维的空间,可以将高维向量转换到其中。Embedding使得机器学习更容易在大规模的输入上进行,比如表示单词的稀疏向量。理想情况下,Embedding通过将语义相似的输入紧密地放置在Embedding空间中来捕获输入的一些语义。
啥啥啥,啥叫"将高维向量转换到其中"?其实就是维度的扩张啊!只不过我们直接告诉了模型,需要扩张到的维度有多少个。"语义"是啥东西?其实就是在样本在某个维度上的表现。例如刚刚的"图形的形状是圆形"。
回归主线问题
所以,思考一下,人与人的差别大于人与猪的差别,这句话是对是错?
- 从物种的维度来看,是错的,毕竟人和猪有生殖隔离(应该吧..)。
- 从思维的角度来看,"可能"是对的,某些人和另一些人思维上的不同,甚至真的大于人和猪的思维差别。
为什么要用"可能"?因为模型不可能也不应该知道"训练"样本之外的答案,它可能在"训练"样本之外表现的很好,但不会是标准答案!这也是为啥你会觉得ChatGPT有些答案回答得挺牛,但有些答案漏洞百出。
三、加餐:如何理解LSTM模型的作用
现在,我会给你一些用户的行为时序信息(按时间顺序排序的行为集合),请你观察这些行为在同一语义维度的表现。
可以发现,根据时序信息,我们一样可以抽取出不同的信息。例如,当时序信息足够多时,我们在 <math xmlns="http://www.w3.org/1998/Math/MathML"> x 3 x_3 </math>x3可以抽取"用户的行为存在周期性"的特点(但是在 <math xmlns="http://www.w3.org/1998/Math/MathML"> x 1 x_1 </math>x1和 <math xmlns="http://www.w3.org/1998/Math/MathML"> x 2 x_2 </math>x2并无法观察到这个),也就可以由此认为 <math xmlns="http://www.w3.org/1998/Math/MathML"> x 4 x_4 </math>x4的用户行为可能存在异常。
再想一下,我们通过什么判断周期性:行为点的相对位置。这个相对位置又是哪来的?对了,这就是模型的抽象能力。
四、总结
如何理解深度学习模型:模型通过观察训练样本,根据不同 维度 "抽象"出不同的"特征",并且根据这些特征进行"规则"的学习,由此可以对新样本进行判断。