Deep Learning, Score function, Loss function 和 optimization function(一)

最近接触了深度学习(Deep Learning),觉得挺困难的,主要困难在跟数学搅和在了一起,天知道大学时候的数学基础还有多少没有交给老师,很费劲。

现在总结下深度学习入门的几个基本概念,以供后查。

放一个wikipedia关于Deep Learning的定义镇楼:

https://en.wikipedia.org/wiki/Deep_learning

因为深度学习使用场景是在是太多,为了便于描述我们把场景限定为:图像分类

一般的图像分类就是通过某种计算,最终将某一图片映射到某个已知分类里,来实现图像的识别,比如说著名的CIFAR-10,就有飞机,车,鸟,猫啊等十个分类。

提到图像分类,最简单的直白的方法就是KNN(k-nearest neighbors algorithm),当然实际中不太会有人用它。

好了,现在我们可以介绍深度学习中最最基础的三个概念,其他更复杂的概念多多少少都演绎自这三个核心概念。

Score Function:

它其实描述的是把原始图片转化成针对每个分类的一个得分(score)的方式。

比如一张图片,我们知道都是pixel组成的,我们得用一种方式把这些原始的材料(pixel)针对每一个可能的分类映射成一个得分,并且我们期望针对正确分类映射的得分要高于错误分类的得分。

有点拗口,我们举个例子:一张马的图片,经过score function的计算以后,在马的分类上得分90分,而在猫的分类中得分2分,我们 就可以断定,这张图片上是一匹马而不是别的。

常用的score function有很多,我们这里讲一种最简单的:Linear Classification

F(xi, W, b) = Wxi + b

估计这个公式大家都比较熟悉,我来逐个解释, 还是用个例子解释吧,CIFAR-10, 每个图片尺寸是[3*32*32=3072],将该图片reshape成[3072x1], 这就是函数中的Xi, 

W叫做weight, 因为CIFAR-10有十个分类所以它的dimension是[10x3072], 那W*xi呢,矩阵乘法没全还给老师的估计就能答得出来:[10x1], 看出来了吗,十个分类的得分出来了吧。

蛮简单哈,这是因为我们用的是最简单的Linear Classification,但其实更复杂的比如CNN中的kernal等扮演的角色是一样的。

还有一个b是什么呢,是bias vector, 影响score,几何上就是对直线进行平移(毕竟不是每个分类都是过原点可分的对吧)。

多说几句关于Linear Classification, 有一张图比较形象:

大家知道,线性函数几何表示是一条直线,但是有些分类不是线性可分的比如:

用一条直线怎么旋转和平移都没法成功的将点和三角形分开,这时候就需要另外一个比较重要的东西:Active function(激活函数),激活函数的作用是:

加入非线性因素的,解决线性模型所不能解决的问题, 常用的激活函数有:

这样完整的score函数就变成了:

a = f(xi, W, b) = Wxi + b

y = z(a)

z就是激活函数,y就是最终的score了。

OK, 我们使用score funcntion的到了针对每个分类的得分(score),但是这些得分的意义其实不明,比如有的得分是越高越好,有的越低越好,这样我们就需要一个衡量得分好坏的函数:

Loss function:

用于衡量估计值(scrore)和真实值(label, 如鸟, 猫啊)的差距。当然loss越小表明估计值跟真实值的差距越小,是我们追求的目标。

常用的loss函数有很多,最常用的有两种:Multiclass Support Vector Machine loss(SVM)和 Softmax

待续吧,真挺难写的......

猜你喜欢

转载自blog.csdn.net/pushme_pli/article/details/84586343