如何衡量人脸之间的距离?
很多机器学习任务中都会使用到距离的概念,即衡量两个样本之间的距离。最为常见的场景就是聚类算法,为了对样本进行更合理的聚类,需要使用尽可能合理的距离函数。例如,我们有一组人脸数据,想将长相相似的人脸聚为一类,那么就需要一个较好的度量人脸之间距离的函数。常见的距离度量函数包括:欧氏距离、曼哈顿距离、Jaccard距离、余弦距离等。
欧氏距离
例如最常见的欧氏距离,就是高中阶段学习过的两点之间的距离,或者两个向量之间的距离。举例而言,有两个点(1, 2)和(4, 6),它们之间的距离就是(4-1)^2+(6-2)^2=25,再开根号,等于5,于是这两个点之间的距离就是5。
图中所示的点是关键点,比其他位置更为重要
欧式距离在聚类算法中十分常见,但其缺点在于将各个维度视为平等的,但实际情况往往不是这样。例如人脸图像,五官的距离要比背景的距离重要的多。因此,如果能通过学习的方法得到距离度量函数将再好不过。
绝大多数机器学习问题都要解决两个问题:要学习的参数是什么,以及学习的目标是什么。
距离度量学习中,要学习的参数就是各维度的权重(当然也可以更进一步,考虑各维度之间的相关性,此处略去对此的讨论)。
那么学习的目标呢?有多种可行的方案。例如,可以通过学习参数使得K近邻分类器尽可能的准确。也可以通过人工标注一些样本,指出哪些样本是相似的,哪些是不相似的,然后最小化相似样本的距离、同时最大化不相似样本的距离。
这样,明确了参数和学习目标以后,就可以通过梯度下降等方法进行学习了。
本文来自企鹅号 - 人工智能技术媒体
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文来自企鹅号 - 人工智能技术媒体
如有侵权,请联系 cloudcommunity@tencent.com 删除。