机器学习第十七周周报
摘要
本周开始观看吴恩达的机器学习。梯度下降是迭代法的一种,在求解损失函数的最小值时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。反过来,如果我们需要求解损失函数的最大值,这时就需要用梯度上升法来迭代了。
Abstract
I started to watch Wu Enda’s machine learning this week. Gradient descent is a kind of iterative method. When solving the minimum value of loss function, the gradient descent method can be used to iterate step by step to get the minimized loss function and model parameters. On the other hand, if we need to solve the maximum value of the loss function, we need to use the gradient rising method to iterate.
一、自监督式学习
1.BERT基本简介
supervised与self-supervised的区别
supervised learning是需要有标签的资料的,而self-supervised learning不需要外界提供有标签的资料,他的带标签的资料源于自身。x分两部分,一部分用作模型的输入,另一部分作为y要学习的label资料。
next sentence prediction
1、SEP用来分隔句子,这个方法只看CLS的输出,不看其他向量的输出。
2、CLS的输出经过和masking input一样的操作,来判断句子是否相接。但是有很多文献说这个方法对于预训练的效果并不是很大。有另外一招叫做SOP(预测两个句子谁在前谁在后)
2.BERT的框架概念
1、产生BERT的过程叫做Pre-train,该过程一般需要进行masking input 和next sentence prediction这两个操作。产生出来的BERT只会做填空题,BERT做过fine-tune之后才能做下游的各式各样的任务。
2、pre-train过程是unsupervised learning(资料来源于自身),fine-tune过程是supervised learning(有标注的资料),所以整个过程是semi-supervised。
3、目前要pre-train一个能做填空题的BERT难度很大,一方面是数据量庞大,处理起来很艰难;另一方面是徐连的过程需要很长的时间。
二、二分类(Binary Classification)
逻辑回归是一个用于二分类(binary classification)的算法。首先我们从一个问题开始说起,这里有一个二分类问题的例子,假如你有一张图片作为输入,比如这只猫,如果识别这张图片为猫,则输出标签1作为结果;如果识别出不是猫,那么输出标签0作为结果。
我们来看看一张图片在计算机中是如何表示的,为了保存一张图片,需要保存三个矩阵,它们分别对应图片中的红、绿、蓝三种颜色通道,如果你的图片大小为64x64像素,那么你就有三个规模为64x64的矩阵,分别对应图片中红、绿、蓝三种像素的强度值。为了便于表示,这里画了三个很小的矩阵,注意它们的规模为5x4 而不是64x64,如下图所示:
为了把这些像素值放到一个特征向量中,我们需要把这些像素值提取出来,然后放入一个特征向量x。为了把这些像素值转换为特征向量x,我们需要像下面这样定义一个特征向量来表示这张图片,我们把所有的像素都取出来,例如255、231等等,直到取完所有的红色像素,接着最后是255、134、…、255、134等等,直到得到一个特征向量,把图片中所有的红、绿、蓝像素值都列出来。如果图片的大小为64x64像素,那么向量x的总维度,将是64乘以64乘以3,这是三个像素矩阵中像素的总量。在这个例子中结果为12,288。现在我们用,来表示输入特征向量的维度,有时候为了简洁,我会直接用小写的n来表示输入特征向量x的维度。所以在二分类问题中,我们的目标就是习得一个分类器,它以图片的特征向量作为输入,然后预测输出结果y为1还是0,也就是预测图片中是否有猫:
三、逻辑回归(Logistic Regression)
对于二元分类问题来讲,给定一个输入特征向量X,它可能对应一张图片,你想识别这张图片识别看它是否是一只猫或者不是一只猫的图片,你想要一个算法能够输出预测,你只能称之为y^,也就是你对实际值y的估计。更正式地来说,你想让y^表示y等于1的一种可能性或者是机会,前提条件是给定了输入特征X。换句话来说,如果X是我们在上个视频看到的图片,你想让y^来告诉你这是一只猫的图片的机率有多大。在之前的视频中所说的,X是一个nx维的向量(相当于有nx个特征的特征向量)。我们用w来表示逻辑回归的参数,这也是一个nx维向量(因为w实际上是特征权重,维度与特征向量相同),参数里面还有b,这是一个实数(表示偏差)。所以给出输入x以及参数w和b之后,我们怎样产生输出预测值y^,一件你可以尝试却不可行的事是让y^=wTx+b。
这时候我们得到的是一个关于输入x的线性函数,实际上这是你在做线性回归时所用到的,但是这对于二元分类问题来讲不是一个非常好的算法,因为你想让y^表示y实际值等于1的机率的话,y^应该在0到1之间。这是一个需要解决的问题,因为wTx+b可能比1要大得多,或者甚至为一个负值。对于你想要的在0和1之间的概率来说它是没有意义的,因此在逻辑回归中,我们的输出应该是y^等于由上面得到的线性函数式子作为自变量的sigmoid函数中,公式如上图最下面所示,将线性函数转换为非线性函数。
下图是sigmoid函数的图像,如果我把水平轴作为z轴,那么关于z的sigmoid函数是这样的,它是平滑地从0走向1,让我在这里标记纵轴,这是0,曲线与纵轴相交的截距是0.5,这就是关于z的sigmoid函数的图像。我们通常都使用z来表示wTx+b的值。
如果z非常大那么e-z将会接近于0,关于z的sigmoid函数将会近似等于1除以1加上某个非常接近于0的项,因为e的指数如果是个绝对值很大的负数的话,这项将会接近于0,所以如果z很大的话那么关于的sigmoid函数会非常接近1。相反地,如果z非常小或者说是一个绝对值很大的负数,那么关于e-z这项会变成一个很大的数,你可以认为这是1除以1加上一个非常非常大的数,所以这个就接近于0。实际上你看到当z变成一个绝对值很大的负数,关于z的sigmoid函数就会非常接近于0,因此实现逻辑回归时,工作就是去让机器学习参数w以及b这样才使得y^成为对y=1这一情况的概率的一个很好的估计。
四、逻辑回归的代价函数(Logistic Regression Cost Function)
为了训练逻辑回归模型的参数,参数w和参数b,需要一个代价函数,通过训练代价函数来得到参数w和参数b。
损失函数又叫做误差函数,用来衡量算法的运行情况。
我们通过L这个称为的损失函数,来衡量预测输出值和实际值有多接近。一般我们用预测值和实际值的平方差或者它们平方差的一半,但是通常在逻辑回归中我们不这么做,因为当我们在学习逻辑回归参数的时候,会发现我们的优化目标不是凸优化,只能找到多个局部最优值,梯度下降法很可能找不到全局最优值,虽然平方差是一个不错的损失函数,但是我们在逻辑回归模型中会定义另外一个损失函数。
当我们使用平方误差作为损失函数的时候,你会想要让这个误差尽可能地小,对于这个逻辑回归损失函数,我们也想让它尽可能地小。
五、梯度下降法(Gradient Descent)
1.梯度下降法可以做什么?
通过最小化代价函数(成本函数)J(w,b)来训练的参数w和b
2.梯度下降法的形象化说明
在这个图中,横轴表示你的空间参数w和b,在实践中,w可以是更高的维度,但是为了更好地绘图,我们定义w和b,都是单一实数,代价函数(成本函数)J(w,b)是在水平轴w和b上的曲面,因此曲面的高度J(w,b)就是在某一点的函数值。我们所做的就是找到使得代价函数(成本函数)J(w,b)函数值是最小值,对应的参数w和b。
如图,代价函数(成本函数)J(w,b)是一个凸函数(convex function),像一个大碗一样。
如图,这就与刚才的图有些相反,因为它是非凸的并且有很多不同的局部最小值。由于逻辑回归的代价函数(成本函数)J(w,b)特性,我们必须定义代价函数(成本函数)J(w,b)为凸函数。 初始化w和b,
可以用如图那个小红点来初始化参数w和b,也可以采用随机初始化的方法,对于逻辑回归几乎所有的初始化方法都有效,因为函数是凸函数,无论在哪里初始化,应该达到同一点或大致相同的点。
我们以如图的小红点的坐标来初始化参数w和b。
我们朝最陡的下坡方向走一步,如图,走到了如图中第二个小红点处。
我们可能停在这里也有可能继续朝最陡的下坡方向再走一步,如图,经过两次迭代走到第三个小红点处。
通过以上的三个步骤我们可以找到全局最优解,也就是代价函数(成本函数)J(w,b)这个凸函数的最小值点。
3.梯度下降法的细节化说明(仅有一个参数)
假定代价函数(成本函数)J(w) 只有一个参数,即用一维曲线代替多维曲线,这样可以更好画出图像。
六、总结
本周对李宏毅机器学习进行了收尾工作,然后开始了对吴恩达机器学习的视频课观看,对二分类、逻辑回归、逻辑回归的代价函数以及梯度下降法重新进行了学习,从和李宏毅不同的数学角度进行学习,加深了对这些知识的理解。