在当前这个大数据时代,生活在一个数据泛滥的世界中。尽管机器学习算法主要利用了标记数据集,但这些数据集是稀有且昂贵的。大部分生成的数据都是非结构化和未标记的,因此,机器学习社区应该更多地关注无监督学习算法,以解锁人工智能和机器学习的真正潜力。
“如果智能是一个蛋糕,那么无监督学习就是蛋糕本身,监督学习就是蛋糕上的糖霜,强化学习则是蛋糕上的樱桃” —— Yann LeCunn。为什么不吃掉整个蛋糕呢?
数据的表示实际上是一个映射过程。如果有一个数据点x ∈ X,并且有一个函数f: X → Z,对于某个数据空间Z,那么f就是一个表示。新的点f(x) = z ∈ Z有时被称为x的表示。一个好的表示可以使下游任务变得更容易。
自编码器
也被称为自编码器,是一种训练以复制自身输入的网络。它们属于无监督学习算法的范畴,实际上,一些研究者认为自编码器是自监督算法,因为对于训练样本x,标签就是x本身。但在一般意义上,它们被认为是无监督的,因为没有分类或回归标签。
如果自编码器完美地做到这一点,那么输出向量x'就等于输入向量x。自编码器被设计为一个特殊的两部分结构,编码器和解码器。
AE = Decoder(Encoder(x))
模型使用重建损失进行训练,目标是最小化x和x'之间的差异。可以将重建损失定义为MSE(x, x'),如果输入是实数值。z的维度通常小于x,这就是为什么自编码器在深度学习中也被称为瓶颈神经网络。正在迫使自编码器压缩知识表示。
以下是一些首次在机器学习世界中引入自编码器的研究论文:
A learning algorithm for Boltzmann machines, DH Ackley, GEHinton, TJ Sejnowski. Cognitive science, 1985.
描述了一个简单的通过自监督训练的神经网络。Learning representations by back-propagating errors, D. Rumelhart, Geoffrey E. Hinton, R. J. Williams. Nature, 1986.
“描述了一种新的学习过程,反向传播,用于类似神经元单元的网络。”Connectionist learning procedures, GE Hinton. Machine learning, 1990.
描述了“自监督”的瓶颈神经网络。变分自编码器是深度学习中利用采样技术和Kullback-Leibler正则化的自编码器。变分自编码器的目标是使潜在空间更平滑,即x的微小变化会导致潜在空间z的微小变化,z的微小变化会导致x的微小变化。一个平滑的潜在空间需要有合理的点才能更有效和准确,这就是变分自编码器试图实现的。
在变分自编码器中,编码器不仅输出z,还输出mu和sigma。然后采样操作从这些参数中选择z,像往常一样,解码器接受z作为输入。
一个好的采样技术可以很好地重建数据点,也可以很好地重建接近数据点的点。这个过程确保了每个接近潜在位置的点(编码的输入x,即z均值)都可以被解码成类似[x]的东西,因此迫使潜在空间具有连续的意义。潜在空间中的任何两个接近点都会解码出非常相似的图像。连续性,结合潜在空间的低维度,迫使潜在空间的每个方向都编码数据变化的有意义的轴,使潜在空间非常有结构,因此非常适合通过概念向量进行操作。
“变分自编码器的参数通过两个损失函数进行训练:一个重建损失,迫使解码样本与初始输入匹配,以及一个正则化损失,帮助学习良好形成的潜在空间并减少对训练数据的过拟合。” —— Chollet。
Kullback-Leibler散度KL(p||q)是统计学中衡量两个分布p和q之间差异的度量,因此,当p和q不同时,它是一个较大的数字,当它们相似时,接近零。