第1周学习笔记-Coursera机器学习-吴恩达

2019-05-13  本文已影响0人  烟若清尘

Introduction

1.Machine Learning definition

Machine learning algorithms

2.Supervised Learning

example 1:预测房价。这实际是回归问题:指要预测一个连续的输出值,意味着我们将输入变量映射为一些连续的函数。(回归问题包含于监督问题中)

example 2:预测胸部肿瘤是恶性还是良性。这实际上是分类问题:预测一个离散值输出,意味着我们将输入变量映射为离散的类别

2种作图方式
本问题只有一个特征——肿瘤大小,在其他机器学习问题中有着不止一个的特征和属性,有可能是许多特征。后面介绍的支持向量机,可以让计算机处理无限多的特征。

总结:监督学习使用数据集(输入数据和对应的正确输出)训练出一个模型,将要预测的数据输入模型中,可以得到预测值。

3.Unsupervised Learning

无监督学习使我们能够在很少或根本不知道我们的结果应该是什么样的情况下处理问题。我们可以从数据中获得数据的结构,而不必知道数据中变量的作用。

我们可以通过基于数据中变量之间的关系对数据进行聚类来推导出这种结构。

无监督学习的应用场景:

example-非聚类问题: 鸡尾酒聚会算法,输入数据——2个音频源叠加在一起的音频,期待输出——分别输出这两个音频源的内容。
算法内容:

鸡尾酒聚会问题算法
以后学习中使用Octave.而事实上在硅谷很多人会这样做,他们会先用Octave来实现这样一个学习算法原型。只有在确定这个算法可以工作后,才开始迁移到C++ Java或其它编译环境。事实证明这样做实现的算法比一开始就用C++,实现的算法要快多了。

Linear Regression with One Variable

1.Model Representation

example:以房子的大小来预测房价。

(x^{i},y^{j})作为一个训练例子,i 仅仅指的是index,而不是幂。

监督学习的目标学会一个函数h:X → Y。由于历史原因,hypothesis(假说,假设)是指函数h(x).

单变量
右边显示的函数h(x)是一个y关于x线性的函数,称为线性回归模型(linear regression)。由于只有一个变量x,这也可被称为单变量线性回归。

2.Cost Function

我们通过cost function(代价函数)来衡量函数h(x)的准确性。cost function计算所有h(x)和真实的y之间的平均差异,(x^{i},y^{i})​可能有多个。
J\left ( \theta_0,\theta_1\right )=\frac{1}{2m}\sum_{i=1}^m\left ( \hat{y_i}-y_i \right )^{2}=\frac{1}{2m}\sum_{i=1}^m\left ( h_\theta (x_i) - y_i \right )^{2}
J\left ( \theta_0,\theta_1\right )表示\frac{1}{2}\bar{x}\bar{x}\left ( h_\theta (x_i) - y_i \right )的平方的均值,代表着预测值和真实值的差异

J\left ( \theta_0,\theta_1\right )​也称为平方误差函数或均方误差,平均值减为\frac{1}{2}​是为了方便计算梯度下降,因为平方函数的导数将会抵消\frac{1}{2}​

成本函数示意

3.Cost Function - Intuition I

直观体会代价函数
我们目标是找出散射点与线的平均垂直距离最小的那一条线。

\theta_0=0,\theta_1=0.5​的时候,如右图:

0.5的线成本函数
当取不同的值的时候,成本函数如右图: 成本函数

因此,作为目标,我们应该尽量减少代价函数。当\theta_0=0,\theta_1=1​是我们总体的最小值

4.Cost Function - Intuition II

轮廓图(contour plot)的一条轮廓线表示J\left ( \theta_0,\theta_1\right )​相同的所有点的集合

轮廓图
当带圆圈的x显示左侧图形的代价函数的值。

5.Gradient Descent

梯度下降是很常用的算法 它不仅被用在线性回归上 ,它实际上被广泛的应用于机器学习领域中的众多领域。在后面课程中,为了解决其他线性回归问题,我们也将使用梯度下降法最小化其他函数,而不仅仅是只用在本节课的代价函数 J

我们现在已经有了假设函数h和代价函数J,梯度下降的任务是估计假设函数h中的参数使得代价函数J最小

梯度下降
梯度下降示意图
当我们的代价函数位于图中凹坑的最底部时,即当它的值最小时,我们就知道我们已经成功了。红色箭头显示图表中的最小点。
切线的斜率是该点的导数,它将为我们提供朝向的方向。我们在最陡下降的方向上降低成本函数。
梯度下降算法特点:出发点不同,可能得到多个局部最优解。

梯度下降算法
repeat until convergence(重复直到收敛):
\theta _{j} := \theta _{j} - \alpha \frac{\partial J\left (\theta _{0} , \theta _{1}\right )}{\partial \theta_{j} }\qquad(j=0,1)
j​ 代表特征索引。
注意:

  1. a := b 等价于把b赋值给a。
    a=b 等价于声明(断言)a的值和b的值相同。错误:a = a+ 1这本身就是错误,a和 a+1永远也不相同

  2. \alpha ​被称为学习速率。在梯度下降算法中,它控制了下山迈出多大的步子。\alpha ​很大我们会迈着大步子下山,反之亦然。

  3. 在这个公式中,是同时更新\theta_0,\theta_1​。同步更新是梯度下降中的一种常用方法。正确的更新步骤和不正确步骤如下:

    更新步骤

6.Gradient Descent Intuition

我们采取只有一个参数\theta_1​

斜率为正的梯度下降:

斜率为正
斜率为负的梯度下降:
斜率为负
学习速率太小和太大都不好:太小导致梯度下降变得很慢;太大导致梯度下降越过最小值,它会导致无法收敛甚至发散。
学习速率
梯度下降可以收敛(converge)到局部最小值,即使学习速率\alpha是固定不变的。当我们接近局部最小值,梯度下降会自动采取更小的幅度。所以我们没有必要随着时间增加,减小学习速率 梯度下降收敛

7.Gradient Descent For Linear Regression

我们要做的工作:

线性回归和梯度下降
求导
梯度下降算法
之前谈到的梯度下降是一个山的形状,但是大多数线性回归模型的梯度下降是一个凸函数(convex function),形状类似bowl-shaped(弓形),没有局部最优,只有全局最优解。下图中的x(由直线连接)标记了渐变下降经历的θ的连续值,当它收敛到其最小值时。
梯度下降
Batch(批量):一步一步梯度下降,每一步梯度下降都使用整个训练集。注意:有时候梯度下降的其他版本不是每次使用整个训练集,而是每次去看训练集中的小子集,以后再说明。

Linear Algebra Review-Optional

1.Matrices and Vectors

Matrix(矩阵):Rectangular array of numbers.
Dimension of matrix(矩阵的维度): 矩阵的行数 x 列数。


矩阵的元素

Vector:An n x 1 matrix。具有'n'行的向量被称为'n'维向量。


vector两种下标不同表示
注意:

2.Addition and Scalar Multiplication

矩阵加法:只有两个维度相同的矩阵才能相加。


标量乘法

3.Matrix Vector Multiplication

\begin{bmatrix} a & b\\ c & d\\ e & f \end{bmatrix} * \begin{bmatrix} x\\ y \end{bmatrix} = \begin{bmatrix} a*x+b*y\\ c*x+d*y\\ e*x+f*y \end{bmatrix}

结果是一个向量。矩阵的列数必须等于向量的行数。

m×n矩阵乘以n×1向量得到m×1向量。

之前的假设函数h(x)可以运用几何代数,公式为 prediction = DataMatrix x Parameters

4.Matrix Matrix Multiplication

\begin{bmatrix} a & b \\ c & d \\e & f \end{bmatrix} *\begin{bmatrix} w & x \\ y & z \\ \end{bmatrix} =\begin{bmatrix} a*w + b*y & a*x + b*z \\ c*w + d*y & c*x + d*z \\ e*w + f*y & e*x + f*z\end{bmatrix}

m×n矩阵乘以n×o矩阵得到m×o矩阵。在上面的例子中,3×2矩阵乘以2×2矩阵产生3×2矩阵。为了乘以两个矩阵,第一矩阵的列数必须等于第二矩阵的行数。

矩阵乘法

5.Matrix Multiplication Properties

6.Inverse and Transpose

矩阵的逆矩阵表示为A^{-1}​.只有方阵(n x n)才有逆矩阵。

在octave 中,使用 pinv(A) 计算A的逆矩阵;在matlab中,使用 inv(A).

矩阵没有逆矩阵(inverse)的称为“奇异矩阵”(singular)或“退化矩阵”(degenerate)。

转置矩阵:A_{ij} = A^{T}_{ji}

转置矩阵
上一篇下一篇

猜你喜欢

热点阅读