【深度学习笔记】第 2 课:Logistic 多项式回归法

 1 """Softmax."""
 2 scores = [3.0, 1.0, 0.2]
 3 
 4 import numpy as np
 5 
 6 def softmax(x):
 7     """Compute softmax values for x."""
 8     #pass # TODO:Compute and return softmax(x)
 9     return np.exp(x) / np.sum(np.exp(x), axis=0)
10 
11 #print(softmax(scores))
12 print (softmax(scores*10))
13 #print (softmax(scores / 10))

softmax模型可以用来给不同的对象分配概率。即使在之后,我们训练更加精细的模型时,最后一步也需要用softmax来分配概率。

 

cross-entropy  交叉熵是度量这两个向量距离的方法之一。我们将记它为D以表示距离。 labels标签向量经过了one-hot编码,所以会有很多的零,因而它不能作为对数的真数。

对于分布变量,它是由softmax方法计算得到的概率值。所以它总是会大于0, 也就是它可以被放在真数上。

 

对于一个给定的输入  通过一个线性模型,它将被转变为一个logit分数。这个运算很简单,即输入乘上一个矩阵w再加上一个偏置项b

接着  使用softmax方法,我们可以将logits分数转化成概率值,接着我们通过交叉熵的方法计算概率向量与经过one-hot编码的标签向量的距离

我们称这整个过程为Logistic 多项式回归法

好了,现在我们对问题的各个方面有了一个大致的了解,这门课的任务 是教我们该如何确定权重项w和偏置项b的值

以使我们的分类器能够完成我们所期望的工作。

也就是说 要使之对正确分类距离要足够小 对错误分类的距离足够大

 

 

可以选择通过这样的方式衡量,求出对所有训练集样本和所有类别的距离之和,也就是求出训练罚函数(That's called the training loss.)

这个函数 求出了对于所有训练集样本的交叉熵的均值,是一个非常庞大的函数。

训练集中的每个样本 都将被乘上这个巨大的W矩阵,并且他们都将被加起来,得到这个巨大的求和。

我们希望每一个距离值都很小,也就是说分类器能够 对训练集中的每个样本都能很好的分类,因而我们希望这个罚函数值很小。

罚函数是一个关于权重项w和偏差项b的函数,那么我们如何求罚函数的最小值

作为演示 考察某罚函数 只有两个自变量,我们记为w1和w2。该函数的值在某些区域很大,在另一些区域很小。

我们的目标 是去寻找使得罚函数值最小的权重值w,因而我们将一个机器学习问题 转化为了一个数值优化问题

而我们有许多的方法来解决这个数值优化的问题

最简单的方法之一 也许你可能遇到过 是梯度下降法(gradient descent)

对罚函数的每一个变量求偏导数,并将每个变量值加上该偏导数值,直到你达到全局最小值

梯度下降法相对而言比较简单,特别是你能够帮你高效求出偏导数的数值工具的时候,这个只是演示了一个二元函数的偏导数求算过程,但对于一个一般的问题

我们可能面对的是一个有成百上千参数的函数。

在接下来的课程中 我们将会讨论为你计算导数的工具,和梯度下降的一些优点和缺点,目前,我们将会假设我给你的优化程序是一个黑盒子,你可以简单的使用

最后有两个实用的东西阻挡在你训练模型的路上,第一个是你怎么把图像像素填充到分类器,第二个是在哪里初始化最优化过程

 

posted @ 2017-01-22 15:56  CusterFun  阅读(2615)  评论(0编辑  收藏  举报