吴恩达机器学习1


什么是机器学习

$A\ computer\ program\ is\ said\ to\ learn\ from\ experience\ E\ with $

$respect\ to\ some\ class\ of\ tasks\ T\ and\ performance\ measure\ P,\ if\ $

$its\ performance\ at\ tasks\ in\ T,\ as\ measured\ by\ P,\ improves\ with\ $

$experience\ E.$

一个计算机程序可以从经验$E$中学习,执行任务$T$,由$P$做性能评估,并且他在$T$任务中的表现(由$P$衡量)随着经验$E$的提高而提高。

以下跳棋为例:

$E:$ 下过很多跳棋的经验

$T:$下跳棋的任务

$P :$下一局赢下跳棋的可能性

一般的任何机器学习都可以分类两类:监督学习和非监督学习

什么是监督学习

$In\ supervised\ learning,\ we\ are\ given\ a data\ set\ and\ already\ know\ $

$what\ our\ correct\ output\ should\ look\ like,having\ the\ idea\ that\ there\ $

$is\ a\ relationship\ between\ the\ input\ and\ the\ output.$

在监督学习中,我们已知一个数据集,并且已经知道正确的输出应该是什么样的,我们知道输入与输出之间存在着一种关系。

在监督学习中,我们已经知道数据集的含义、分布,根据已知的信息来预测。

$Supervised\ learning\ problems\ are\ categorized\ into\ “regression”\ and\ $

$”classification”\ problems.\ In\ a\ regression\ problem,\ we\ are\ trying\ to\ $

$predict\ results\ within\ a\ continuous\ output,\ meaning\ that \ we\ are\ $

$trying\ to\ map\ input\ variables\ to\ some\ continuous\ function.\ In\ a\ $

$classification\ problem,\ we\ are\ instead\ trying\ to\ predict\ results\ $

$in\ a\ discrete\ output.\ In\ other\ words,\ we\ are\ trying\ to\ map\ input\ $

$variables\ into\ discrete\ categories.\ $

监督学习问题分为“回归”问题和“分类”问题。在回归问题中,我们试图预测连续输出中的结果,这意味着我们试图将输入变量映射到某个连续函数。在分类问题中,我们试图预测离散输出中的结果。换句话说,我们试图将输入变量映射到离散的类别中。

例子

回归问题:给一张照片,去预测照片中人的年龄

分类问题:对于患有肿瘤的病人,去预测肿瘤是良性还是恶性

什么是无监督学习

$Unsupervised\ learning\ allows\ us\ to\ approach\ problems\ with\ little\ or\ $

$no\ idea\ what\ our\ results\ should\ look\ like.\ We\ can\ derive\ $

$ structure\ from\ data\ where\ we\ don’t\ necessarily\ know\ the\ effect\ of\ $

$the\ variables.\ $

$We\ can\ derive\ this\ structure\ by\ clustering\ the\ data\ based\ on\ $

$relationships\ among\ the\ variables\ in\ the\ data.$

$With\ unsupervised\ learning\ there\ is\ no\ feedback\ based\ on\ the\ prediction\ results.$

无监督学习让我们在几乎不知道结果是什么的情况下处理问题。我们可以从数据中得出结构,而我们并不一定知道变量的影响。

我们可以根据数据中变量之间的关系对数据进行聚类,从而得到这种结构。

在无监督学习中,没有基于预测结果的反馈。

例子

收集100万个不同的基因,然后找到一种方法将这些基因分组,这些分组在某种程度上是相似的,或者由不同的变量(如寿命、位置、角色等)相关的。

建立符号规则

$m$ 表示训练集数量,对于训练集中的每一项,我们使用$x^{(i)}$表示训练集中的第$i$行输入的变量,使用$y^{(i)}$表示训练集中第$i$行输出的变量 。

一对$(x^{(i)},y^{(i)})$成为一个训练样例,$(i)$只是表示训练集中的索引,而不是次幂。还使用$X$来表示输入值的空间,$Y$表示输出值的空间。

监督学习

$To\ describe\ the\ supervised\ learning\ problem\ slightly\ more\ formally,\ $

$our\ goal\ is,\ given\ a\ training\ set,\ to\ learn\ a\ function\ h\ :\ X\ →\ Y\ $

$ so\ that\ h(x)\ is\ a\ “good”\ predictor\ for\ the\ corresponding\ value\ of\ y.\ $

$For\ historical\ reasons,\ this\ function\ h\ is\ called\ a\ hypothesis.\ $

$Seen\ pictorially,\ the\ process\ is\ therefore\ like\ this:\ $

为了更正式地描述监督学习问题,我们的目标是,给定一个训练集,学习一个函数$h: X → Y$,使$h(X)$是对应的$Y$值的一个很好的预测器。由于历史原因,这个函数$h$被称为一个假设。从图片上看,这个过程是这样的

supervised learning process

代价函数

假设的$h$函数由$h_{\theta}(x)=\theta_0 + \theta_1x$拟合而来,$\theta_0$和$\theta_1$是两个未知参数

我们的目的是选择最适合的$\theta_0,\theta_1$以便于$h_{\theta}(x)$最接近与真正的训练集对应$Y$值的分布

代价函数$J(\theta_0,\theta_1)=\frac{1}{2m}\sum\limits_{i=1}^m(\hat y_i -y_i)^2=\frac{1}{2m}\sum\limits_{i=1}^m(h_{\theta}(x^{(i)})-y^{(i)})^2$表示$h$函数与$Y$值之间的误差

$Goal:\ \min\limits_{\theta_0,\theta_1}J(\theta_0, \theta_1)$

把$\theta_0$设成0,不同的$\theta_1$对应的$h$函数所形成的误差在$J(\theta_1)$的图像上呈现一个二次函数的图像,寻找$J(\theta_1)$的最小值,就是寻找最适合,最拟合与$Y$的$h(\theta_1)$函数

Cost Function

梯度下降

梯度下降算法就是根据当前的参数和代价函数选择一个下降方向,最终达到局部最优解的一种算法。

$The\ way\ we\ do\ this\ is\ by\ taking\ the\ derivative\ (the\ tangential$

$line\ to\ a\ function)\ of\ our\ cost\ function.\ The\ slope\ of\ the\ tangent$

$is\ the\ derivative\ at\ that\ point\ and\ it\ will\ give\ us\ a\ direction$

$to\ move\ towards.\ We\ make\ steps\ down\ the\ cost\ function\ in\ the$

$direction\ with\ the\ steepest\ descent.$

梯度下降算法是求当前代价函数的导数(也就是函数图像的切线),这一点的导数会给我们一个方向,我们按下降最陡的方向逐步降低成本函数。

$The\ size\ of\ each\ step\ is\ determined\ by\ the\ parameter\ α,\ which\ is$

$called\ the\ learning\ rate.$

每个步骤的大小由参数α决定,称为学习率。

$repeat\ until\ convergence\ \{ \\ \theta_j\ :=\ \theta_j\ - \alpha \ \frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1) (for j=0 and j=1) \\ \}$

$\theta_0$和$\theta_1$同时更新,而不是先更新$\theta_0$,然后再更新$\theta_1$

更新方法

泰勒展开

泰勒公式是将一个在$x=x_0$处具有$n$阶导数的函数$f(x)$利用关于$(x-x0)$的$n$次多项式来逼近函数的方法。

若函数$f(x)$在包含$x_0$的某个闭区间$[a,b]$上具有$n$阶导数,且在开区间$(a,b)$上具有$(n+1)$阶导数,则对闭区间$[a,b]$上任意一点$x$,成立下式:

$f(x) = \frac{f(x_0)}{0!}+\frac{f’(x_0)}{1!}(x-x_0)+…+\frac{f^{(n)}(x_0)}{n!} + R_n(x)$

梯度下降在推导过程中使用了1阶泰勒展开

$f(x+\Delta x)\approx f(x) + a^t\Delta x$

$\Delta x$是一个向量,$a$也是一个向量,$a^t$就是当前的梯度

梯度下降的目的是找到一个方向使得$f(x)\gt f(x+\Delta x)$, 在$x$附近小范围的$\Delta x$找到一个点使得$f(x+\Delta x)$最小,然后向着这个的方向移动并迭代,在计算$\min\limits_{||\Delta x|| \le \epsilon} f(x+\Delta x)$时使用泰勒展开减小计算量

柯西不等式

两个向量做内积时$||||^2 \le ||a||^2 ||b||^2$,等式成立当且仅当$a,b$在一条直线上,或者说$a,b$线性相关

$a^t\Delta x= \ge -||a|| \ ||b|| \ge -||a||\epsilon$

即$a^t\Delta x \ge -\epsilon ||a||$不等式成立时$\Delta x = -\lambda a, \lambda >0$

梯度下降如何达到最优点

我们现在使用一个简单函数来解释一下梯度下降算法

梯度下降如何达到最优点

假设我们的参数只有一个

$\theta_1 :=\theta_1-\alpha \frac{\partial}{\partial\theta_1}J(\theta_0)$

图上第一个例子:当所在点在最优解右侧时,斜率为正$\theta$减去的时正值,$\theta$向左边移动

图上第二个例子:当所在点在最优解左侧时,斜率为正$\theta$减去的时负值,$\theta$向右边移动

根据斜率(也就是导数)移动,可以移动到当前可以到达的最优点

步距

步距

当我们的步距过大和过小时都会出现问题

过小时移动次数太多,移动距离太小

过大时会越过最优点

梯度下降如何与固定步长相结合

梯度下降如何与固定步长相结合

当点越接近最低点时,导数最小,到最低点时导数为零,这就控制了步长使得步长的移动合适

梯度下降与代价函数结合

拟合函数:$h(\theta_0,\theta_1)=\theta_0+\theta_1x$

代价函数: $J(\theta_0, \theta_1) = \frac{1}{2m}\sum\limits_{i=1}^m(h_{\theta}(x^{(i)})-y^{(i)})^2$

梯度下降:$repeat\ until\ convergence\ \{ \\ \ \ \ \ \theta_j\ :=\ \theta_j\ - \alpha \ \frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1) (for j=0 and j=1) \\ \} $

结合一下: $\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1)\\ = \frac{1}{2m}\sum\limits_{i=1}^m(h_{\theta}(x^{(i)})-y^{(i)})^2 \\ = \frac{1}{2m}\sum\limits_{i=1}^m(\theta_0+\theta_1(x^{(i)})-y^{(i)})^2$

经过简单的微分过程:$\theta_0\ j = 0 \ :\ \ \frac{\partial}{\partial\theta_0}J(\theta_0,\theta_1)= \frac{1}{m}\sum\limits_{i=1}^m(h_{\theta}(x^{(i)})-y^{(i)}) \\ \theta_1\ j = 1 \ :\ \ \frac{\partial}{\partial\theta_1}J(\theta_0,\theta_1)= \frac{1}{m}\sum\limits_{i=1}^m(h_{\theta}((x^{(i)})-y^{(i)}) \cdot x^{(i)}) $

$m$是训练集的大小,$\theta_0$是常量它会随着$\theta_1$同步变化

这种方法在每一步上看整个训练集中的每个例子,称为批梯度下降。

矩阵和向量

矩阵的定义不在赘述,向量是一种特殊的矩阵,向量的结构是$n \times 1$的矩阵

$y=\begin{bmatrix} a\\ b\\c\\d\\ \end{bmatrix}$

$y_i$表示第$i$个元素

向量的下标可以有不同的起始,从1开始和从0开始,在数学中通常使用从1开始,在计算机领域通常使用从0开始

$y=\begin{bmatrix} y_1\\ y_2\\ y_3\\ y_4\\ \end{bmatrix} , y=\begin{bmatrix} y_0\\ y_1\\ y_2\\ y_3\\ \end{bmatrix}$

矩阵加法

两个矩阵相加必须是规格相同的两个矩阵对应位置相加

$\begin{bmatrix}1 && 0\\2 && 5 \\ 3 && 1\end{bmatrix} + \begin{bmatrix}4 && 0.5\\2 && 5 \\ 0 && 1\end{bmatrix}=\begin{bmatrix}5 && 0.5\\4 && 10 \\ 3 && 2\end{bmatrix}$

矩阵乘除

矩阵乘以常量就是每个矩阵的每一元素乘上常量,除法类似

$k\times \begin{bmatrix}1 && 0\\2 && 5 \\ 3 && 1\end{bmatrix} = \begin{bmatrix}1k && 0k\\2k && 5k \\ 3k && 1k\end{bmatrix}$

两个矩阵相乘必须是$m\times n$和$n \times k$ 形式的矩阵才能相乘

$\begin{bmatrix} A_{11} && A_{12} && A_{13} \\ A_{21} && A_{22} && A_{23}\end{bmatrix} \times \begin{bmatrix} B_{11} && B_{12} \\ B_{21} && B_{22} \\ B_{31} && B_{32} \end{bmatrix}$

比如$2\times 3$的矩阵和$3\times 2$的矩阵相乘,新矩阵的元素为$a_{ij}=\sum\limits_{k=1}^{n}A_{ik}*B_{kj}$

新矩阵为:

$\begin{bmatrix} (A_{11}\times B_{11}+A_{12}\times B_{21}+A_{13}\times B_{31}) && (A_{11}\times B_{12}+A_{12}\times B_{22}+A_{13}\times B_{32}) \\ (A_{21}\times B_{11}+A_{22}\times B_{21}+A_{23}\times B_{31}) && (A_{21}\times B_{12}+A_{22}\times B_{22}+A_{23}\times B_{32}) \end{bmatrix}$

元矩阵

$\begin{bmatrix}1 && 0\\0 && 1\end{bmatrix}$或者 $\begin{bmatrix}1 && 0 && 0\\0 && 1 && 0 \\ 0 && 0 && 1\end{bmatrix}$ 或者更大

元矩阵通常写作$I$,对于任意矩阵$A$

$A \cdot I=I\cdot A=A$

逆矩阵

如果矩阵$A$是一个方矩阵$m\times m$,那么$A$存在逆矩阵$A^{-1}$

$AA^{-1}=A^{-1}A=I$

矩阵的转置

转置就是将矩阵转过来$B_{ji}=A_{ij}$

$A=\begin{bmatrix}1 && 2 && 0 \\ 3 && 5 && 9 \end{bmatrix}$

$A^T=\begin{bmatrix}1 && 3 \\ 2 && 5 \\ 0 && 9 \end{bmatrix}$

矩阵与梯度下降结合

两个矩阵,一个$A(m\times n)$ 一个$B(n \times o)$,我们将$B$中的每一列单独取出来最矩阵乘法,得到的结果再合并,跟原来的结果相同

matrix multiplication

类似的矩阵的每一列我们都可以看成是一个向量,把不同的$h$函数也看成向量,那么两个矩阵相乘就可以得到不同$h$函数的预测量

vector_example


文章作者: Mug-9
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Mug-9 !
评论
  目录