diff --git a/image/0f38a99c8ceb8aa5b90a5f12136fdf43.png b/images/0f38a99c8ceb8aa5b90a5f12136fdf43.png similarity index 100% rename from image/0f38a99c8ceb8aa5b90a5f12136fdf43.png rename to images/0f38a99c8ceb8aa5b90a5f12136fdf43.png diff --git a/image/20141213201613758.jpg b/images/20141213201613758.jpg similarity index 100% rename from image/20141213201613758.jpg rename to images/20141213201613758.jpg diff --git a/image/20180105_194712.png b/images/20180105_194712.png similarity index 100% rename from image/20180105_194712.png rename to images/20180105_194712.png diff --git a/image/20180105_194839.png b/images/20180105_194839.png similarity index 100% rename from image/20180105_194839.png rename to images/20180105_194839.png diff --git a/image/20180105_201639.png b/images/20180105_201639.png similarity index 100% rename from image/20180105_201639.png rename to images/20180105_201639.png diff --git a/image/20180105_212048.png b/images/20180105_212048.png similarity index 100% rename from image/20180105_212048.png rename to images/20180105_212048.png diff --git a/image/20180105_224648.png b/images/20180105_224648.png similarity index 100% rename from image/20180105_224648.png rename to images/20180105_224648.png diff --git a/image/20180106_085915.png b/images/20180106_085915.png similarity index 100% rename from image/20180106_085915.png rename to images/20180106_085915.png diff --git a/image/20180106_090904.png b/images/20180106_090904.png similarity index 100% rename from image/20180106_090904.png rename to images/20180106_090904.png diff --git a/image/20180106_091307.png b/images/20180106_091307.png similarity index 100% rename from image/20180106_091307.png rename to images/20180106_091307.png diff --git a/image/20180106_092119.png b/images/20180106_092119.png similarity index 100% rename from image/20180106_092119.png rename to images/20180106_092119.png diff --git a/image/20180106_101659.png b/images/20180106_101659.png similarity index 100% rename from image/20180106_101659.png rename to images/20180106_101659.png diff --git a/image/20180106_184926.png b/images/20180106_184926.png similarity index 100% rename from image/20180106_184926.png rename to images/20180106_184926.png diff --git a/image/20180106_190944.png b/images/20180106_190944.png similarity index 100% rename from image/20180106_190944.png rename to images/20180106_190944.png diff --git a/image/20180106_191023.png b/images/20180106_191023.png similarity index 100% rename from image/20180106_191023.png rename to images/20180106_191023.png diff --git a/image/20180106_191956.png b/images/20180106_191956.png similarity index 100% rename from image/20180106_191956.png rename to images/20180106_191956.png diff --git a/image/20180106_203726.png b/images/20180106_203726.png similarity index 100% rename from image/20180106_203726.png rename to images/20180106_203726.png diff --git a/image/20180107_234509.png b/images/20180107_234509.png similarity index 100% rename from image/20180107_234509.png rename to images/20180107_234509.png diff --git a/image/20180108_100751.png b/images/20180108_100751.png similarity index 100% rename from image/20180108_100751.png rename to images/20180108_100751.png diff --git a/image/20180108_103357.png b/images/20180108_103357.png similarity index 100% rename from image/20180108_103357.png rename to images/20180108_103357.png diff --git a/image/20180108_104701.png b/images/20180108_104701.png similarity index 100% rename from image/20180108_104701.png rename to images/20180108_104701.png diff --git a/image/20180108_113132.png b/images/20180108_113132.png similarity index 100% rename from image/20180108_113132.png rename to images/20180108_113132.png diff --git a/image/20180109_144040.png b/images/20180109_144040.png similarity index 100% rename from image/20180109_144040.png rename to images/20180109_144040.png diff --git a/image/20180111_000653.png b/images/20180111_000653.png similarity index 100% rename from image/20180111_000653.png rename to images/20180111_000653.png diff --git a/image/20180111_000814.png b/images/20180111_000814.png similarity index 100% rename from image/20180111_000814.png rename to images/20180111_000814.png diff --git a/image/20180111_080314.png b/images/20180111_080314.png similarity index 100% rename from image/20180111_080314.png rename to images/20180111_080314.png diff --git a/image/20180111_080514.png b/images/20180111_080514.png similarity index 100% rename from image/20180111_080514.png rename to images/20180111_080514.png diff --git a/image/20180111_080614.png b/images/20180111_080614.png similarity index 100% rename from image/20180111_080614.png rename to images/20180111_080614.png diff --git a/image/20180112_001720.png b/images/20180112_001720.png similarity index 100% rename from image/20180112_001720.png rename to images/20180112_001720.png diff --git a/image/20180112_085630.png b/images/20180112_085630.png similarity index 100% rename from image/20180112_085630.png rename to images/20180112_085630.png diff --git a/image/20180112_091654.png b/images/20180112_091654.png similarity index 100% rename from image/20180112_091654.png rename to images/20180112_091654.png diff --git a/image/20180112_092027.png b/images/20180112_092027.png similarity index 100% rename from image/20180112_092027.png rename to images/20180112_092027.png diff --git a/image/20180114_090054.png b/images/20180114_090054.png similarity index 100% rename from image/20180114_090054.png rename to images/20180114_090054.png diff --git a/image/20180115_084326.png b/images/20180115_084326.png similarity index 100% rename from image/20180115_084326.png rename to images/20180115_084326.png diff --git a/image/20180115_101441.png b/images/20180115_101441.png similarity index 100% rename from image/20180115_101441.png rename to images/20180115_101441.png diff --git a/image/20180115_101442.png b/images/20180115_101442.png similarity index 100% rename from image/20180115_101442.png rename to images/20180115_101442.png diff --git a/image/20180116_001543.png b/images/20180116_001543.png similarity index 100% rename from image/20180116_001543.png rename to images/20180116_001543.png diff --git a/image/20180116_105545.png b/images/20180116_105545.png similarity index 100% rename from image/20180116_105545.png rename to images/20180116_105545.png diff --git a/image/20180116_235545.png b/images/20180116_235545.png similarity index 100% rename from image/20180116_235545.png rename to images/20180116_235545.png diff --git a/image/20180117_000349.png b/images/20180117_000349.png similarity index 100% rename from image/20180117_000349.png rename to images/20180117_000349.png diff --git a/image/20180117_000612.png b/images/20180117_000612.png similarity index 100% rename from image/20180117_000612.png rename to images/20180117_000612.png diff --git a/image/20180117_004820.png b/images/20180117_004820.png similarity index 100% rename from image/20180117_004820.png rename to images/20180117_004820.png diff --git a/image/20180117_010904.png b/images/20180117_010904.png similarity index 100% rename from image/20180117_010904.png rename to images/20180117_010904.png diff --git a/image/20180117_011331.png b/images/20180117_011331.png similarity index 100% rename from image/20180117_011331.png rename to images/20180117_011331.png diff --git a/image/20180120_105744.png b/images/20180120_105744.png similarity index 100% rename from image/20180120_105744.png rename to images/20180120_105744.png diff --git a/image/20180121_110111.png b/images/20180121_110111.png similarity index 100% rename from image/20180121_110111.png rename to images/20180121_110111.png diff --git a/image/20180123_122124.png b/images/20180123_122124.png similarity index 100% rename from image/20180123_122124.png rename to images/20180123_122124.png diff --git a/image/20180125_162704.png b/images/20180125_162704.png similarity index 100% rename from image/20180125_162704.png rename to images/20180125_162704.png diff --git a/image/20180125_195029.png b/images/20180125_195029.png similarity index 100% rename from image/20180125_195029.png rename to images/20180125_195029.png diff --git a/image/20181115103549.png b/images/20181115103549.png similarity index 100% rename from image/20181115103549.png rename to images/20181115103549.png diff --git a/image/2413fbec8ff9fa1f19aaf78265b8a33b_Logistic_function.png b/images/2413fbec8ff9fa1f19aaf78265b8a33b_Logistic_function.png similarity index 100% rename from image/2413fbec8ff9fa1f19aaf78265b8a33b_Logistic_function.png rename to images/2413fbec8ff9fa1f19aaf78265b8a33b_Logistic_function.png diff --git a/image/24e9420f16fdd758ccb7097788f879e7.png b/images/24e9420f16fdd758ccb7097788f879e7.png similarity index 100% rename from image/24e9420f16fdd758ccb7097788f879e7.png rename to images/24e9420f16fdd758ccb7097788f879e7.png diff --git a/image/db48c81304317847870d486ba5bb2015.jpg b/images/db48c81304317847870d486ba5bb2015.jpg similarity index 100% rename from image/db48c81304317847870d486ba5bb2015.jpg rename to images/db48c81304317847870d486ba5bb2015.jpg diff --git a/week1.md b/week1.md index 0ef7bb3..6b07873 100644 --- a/week1.md +++ b/week1.md @@ -70,7 +70,7 @@ 在房屋价格预测的例子中,给出了一系列的房屋面基数据,根据这些数据来预测任意面积的房屋价格。给出照片-年龄数据集,预测给定照片的年龄。 - ![](image/20180105_194712.png) + ![](images/20180105_194712.png) 2. 分类问题(Classification) @@ -80,7 +80,7 @@ 视频中举了癌症肿瘤这个例子,针对诊断结果,分别分类为良性或恶性。还例如垃圾邮件分类问题,也同样属于监督学习中的分类问题。 - ![](image/20180105_194839.png) + ![](images/20180105_194839.png) 视频中提到**支持向量机**这个算法,旨在解决当特征量很大的时候(特征即如癌症例子中的肿块大小,颜色,气味等各种特征),计算机内存一定会不够用的情况。**支持向量机能让计算机处理无限多个特征。** @@ -105,7 +105,7 @@ **鸡尾酒问题** -![](image/20180105_201639.png) +![](images/20180105_201639.png) 在鸡尾酒会上,大家说话声音彼此重叠,几乎很难分辨出面前的人说了什么。我们很难对于这个问题进行数据标注,而这里的通过机器学习的无监督学习算法,就可以将说话者的声音同背景音乐分离出来,看视频,效果还不错呢\~~。 @@ -140,7 +140,7 @@ 2. **问题解决模型** -![](image/20180105_212048.png) +![](images/20180105_212048.png) 其中 $h$ 代表结果函数,也称为**假设(hypothesis)** 。假设函数根据输入(房屋的面积),给出预测结果输出(房屋的价格),即是一个 $X\to Y$ 的映射。 @@ -180,7 +180,7 @@ $h_\theta(x)=\theta_0+\theta_1x$,为解决房价问题的一种可行表达式 > > $\left(x^\left(i\right),y^\left(i\right)\right)$: 训练集中的第 $i$ 个样本实例 -![](image/20180105_224648.png) +![](images/20180105_224648.png) 上图展示了当 $\theta$ 取不同值时,$h_\theta\left(x\right)$ 对数据集的拟合情况,蓝色虚线部分代表**建模误差**(预测结果与实际结果之间的误差),我们的目标就是最小化所有误差之和。 @@ -205,7 +205,7 @@ $$J(\theta_0,\theta_1)=\dfrac{1}{2m}\displaystyle\sum_{i=1}^m\left(\hat{y}_{i}-y 为了直观理解代价函数到底是在做什么,先假设 $\theta_1 = 0$,并假设训练集有三个数据,分别为$\left(1, 1\right), \left(2, 2\right), \left(3, 3\right)$,这样在平面坐标系中绘制出 $h_\theta\left(x\right)$ ,并分析 $J\left(\theta_0, \theta_1\right)​$ 的变化。 -![](image/20180106_085915.png) +![](images/20180106_085915.png) 右图 $J\left(\theta_0, \theta_1\right)$ 随着 $\theta_1$ 的变化而变化,可见**当 $\theta_1 = 1$ 时,$J\left(\theta_0, \theta_1 \right) = 0$,取得最小值,**对应于左图青色直线,即函数 $h$ 拟合程度最好的情况。 @@ -215,21 +215,21 @@ $$J(\theta_0,\theta_1)=\dfrac{1}{2m}\displaystyle\sum_{i=1}^m\left(\hat{y}_{i}-y 给定数据集: -![](image/20180106_091307.png) +![](images/20180106_091307.png) 参数在 $\theta_0$ 不恒为 $0$ 时代价函数 $J\left(\theta\right)$ 关于 $\theta_0, \theta_1$ 的3-D图像,图像中的高度为代价函数的值。 -![](image/20180106_090904.png) +![](images/20180106_090904.png) 由于3-D图形不便于标注,所以将3-D图形转换为**轮廓图(contour plot)**,下面用轮廓图(下图中的右图)来作直观理解,其中相同颜色的一个圈代表着同一高度(同一 $J\left(\theta\right)$ 值)。 $\theta_0 = 360, \theta_1 =0$ 时: -![](image/0f38a99c8ceb8aa5b90a5f12136fdf43.png) +![](images/0f38a99c8ceb8aa5b90a5f12136fdf43.png) 大概在 $\theta_0 = 0.12, \theta_1 =250$ 时: -![](image/20180106_092119.png) +![](images/20180106_092119.png) 上图中最中心的点(红点),近乎为图像中的最低点,也即代价函数的最小值,此时对应 $h_\theta\left(x\right)$ 对数据的拟合情况如左图所示,嗯,一看就拟合的很不错,预测应该比较精准啦。 @@ -241,7 +241,7 @@ $\theta_0 = 360, \theta_1 =0$ 时: 下图根据不同的起始点,产生了两个不同的局部最小值。 -![](image/db48c81304317847870d486ba5bb2015.jpg) +![](images/db48c81304317847870d486ba5bb2015.jpg) 视频中举了下山的例子,即我们在山顶上的某个位置,为了下山,就不断地看一下周围**下一步往哪走**下山比较快,然后就**迈出那一步**,一直重复,直到我们到达山下的某一处**陆地**。 @@ -259,7 +259,7 @@ $\begin{align*} & \text{repeat until convergence:} \; \lbrace \newline \; &{{\th 公式中,学习速率决定了参数值变化的速率即”**走多少距离**“,而偏导这部分决定了下降的方向即”**下一步往哪里**“走(当然实际上的走多少距离是由偏导值给出的,学习速率起到调整后决定的作用),收敛处的局部最小值又叫做极小值,即”**陆地**“。 -![](image/20180106_101659.png) +![](images/20180106_101659.png) 注意,在计算时要**批量更新 $\theta$ 值**,即如上图中的左图所示,否则结果上会有所出入,原因不做细究。 @@ -267,7 +267,7 @@ $\begin{align*} & \text{repeat until convergence:} \; \lbrace \newline \; &{{\th 该节探讨 $\theta_1$ 的梯度下降更新过程,即 $\theta_1 := \theta_1 - \alpha\frac{d}{d\theta_1}J\left(\theta_1\right)$,此处为了数学定义上的精确性,用的是 $\frac{d}{d\theta_1}J\left(\theta_1\right)$,如果不熟悉微积分学,就把它视作之前的 $\frac{\partial}{\partial\theta}$ 即可。 -![](image/20180106_184926.png) +![](images/20180106_184926.png) 把红点定为初始点,切于初始点的红色直线的斜率,表示了函数 $J\left(\theta\right)$ 在初始点处有**正斜率**,也就是说它有**正导数**,则根据梯度下降公式 ,${{\theta }_{j}}:={{\theta }_{j}}-\alpha \frac{\partial }{\partial {{\theta }_{j}}}J\left( \theta_0, \theta_1 \right)$ 右边的结果是一个正值,即 $\theta_1$ 会**向左边移动**。这样不断重复,直到收敛(达到局部最小值,即斜率为0)。 @@ -281,13 +281,13 @@ $\begin{align*} & \text{repeat until convergence:} \; \lbrace \newline \; &{{\th - 学习速率过小图示: - ![](image/20180106_190944.png) + ![](images/20180106_190944.png) 收敛的太慢,需要更多次的迭代。 - 学习速率过大图示: - ![](image/20180106_191023.png) + ![](images/20180106_191023.png) 可能越过最低点,甚至导致无法收敛。 @@ -295,7 +295,7 @@ $\begin{align*} & \text{repeat until convergence:} \; \lbrace \newline \; &{{\th 如图,品红色点为初始点,代价函数随着迭代的进行,变化的幅度越来越小。 -![](image/20180106_191956.png) +![](images/20180106_191956.png) **最后,梯度下降不止可以用于线性回归中的代价函数,还通用于最小化其他的代价函数。** @@ -311,7 +311,7 @@ $\begin{align*} & \text{repeat until convergence:} \; \lbrace \newline \; &{{\th 直接将线性回归模型公式代入梯度下降公式可得出公式 -![](image/20180106_203726.png)当 $j = 0, j = 1$ 时,**线性回归中代价函数求导的推导过程:** +![](images/20180106_203726.png)当 $j = 0, j = 1​$ 时,**线性回归中代价函数求导的推导过程:** $\frac{\partial}{\partial\theta_j} J(\theta_1, \theta_2)=\frac{\partial}{\partial\theta_j} \left(\frac{1}{2m}\sum\limits_{i=1}^{m}{{\left( {{h}_{\theta }}\left( {{x}^{(i)}} \right)-{{y}^{(i)}} \right)}^{2}} \right)=$ @@ -333,7 +333,7 @@ $\frac{\partial}{\partial\theta_1} J(\theta)=\frac{1}{m}\sum\limits_{i=1}^{m}{{\ 由于线性回归函数呈现**碗状**,且**只有一个**全局的最优值,所以函数**一定总会**收敛到全局最小值(学习速率不可过大)。同时,函数 $J$ 被称为**凸二次函数**,而线性回归函数求解最小值问题属于**凸函数优化问题**。 -![](image/24e9420f16fdd758ccb7097788f879e7.png) +![](images/24e9420f16fdd758ccb7097788f879e7.png) 另外,使用循环求解,代码较为冗余,后面会讲到如何使用**向量化(Vectorization)**来简化代码并优化计算,使梯度下降运行的更快更好。 diff --git a/week2.md b/week2.md index 37b815b..e17a3bb 100644 --- a/week2.md +++ b/week2.md @@ -6,7 +6,7 @@ 对于一个要度量的对象,一般来说会有不同维度的多个特征。比如之前的房屋价格预测例子中,除了房屋的面积大小,可能还有房屋的年限、房屋的层数等等其他特征: -![](image/20180107_234509.png) +![](images/20180107_234509.png) 这里由于特征不再只有一个,引入一些新的记号 @@ -71,7 +71,7 @@ $$ 下图中,左图是以原始数据绘制的代价函数轮廓图,右图为采用特征缩放(都除以最大值)后图像。左图中呈现的图像较扁,相对于使用特征缩放方法的右图,梯度下降算法需要更多次的迭代。 -![](image/20180108_100751.png) +![](images/20180108_100751.png) @@ -101,11 +101,11 @@ $$ 我们可以通过绘制**代价函数关于迭代次数的图像**,可视化梯度下降的执行过程,借助直观的图形来发现代价函数趋向于多少时能趋于收敛,依据图像变化情况,确定诸如学习速率的取值,迭代次数的大小等问题。 -![](image/20180108_103357.png) +![](images/20180108_103357.png) 对于学习速率 $\alpha$,一般上图展现的为适中情况,下图中,左图可能表明 **$\alpha$ 过大**,代价函数**无法收敛**,右图可能表明 **$\alpha$ 过小**,代价函数**收敛的太慢**。当然,$\alpha$ 足够小时,代价函数在每轮迭代后一定会减少。 -![](image/20180108_104701.png) +![](images/20180108_104701.png) 通过不断改变 $\alpha$ 值,绘制并观察图像,并以此来确定合适的学习速率。 尝试时可取 $\alpha$ 如 $\dots\;0,001,\;0.003,\;0.01,\;0.03,\;0.1,\;\dots$ @@ -121,7 +121,7 @@ $$ 或者平方根模型: $h_{\theta}\left( x \right)={\theta_{0}}+{\theta_{1}}{x_{1}}+{\theta_{2}}{x_{2}^2}+{\theta_{3}}{\sqrt{x_3}}$ -![](image/20180108_113132.png) +![](images/20180108_113132.png) 在使用多项式回归时,要记住非常有必要进行特征缩放,比如 $x_1$ 的范围为 1-1000,那么 $x_1^2$ 的范围则为 1- 1000000,不适用特征缩放的话,范围更有不一致,也更易影响效率。 diff --git a/week3.md b/week3.md index 56e9b7d..af23feb 100644 --- a/week3.md +++ b/week3.md @@ -12,7 +12,7 @@ 讨论肿瘤诊断问题: -![](image/20180109_144040.png) +![](images/20180109_144040.png) 肿瘤诊断问题的目的是告诉病人**是否**为恶性肿瘤,是一个**二元分类问题(binary class problems)**,则定义 $ y \in\lbrace 0, 1\rbrace$,其中 0 表示**负向类(negative class)**,代表恶性肿瘤("-"),1 为**正向类(positive class)**,代表良性肿瘤("+")。如图,定义最右边的样本为**偏差项**。 @@ -46,7 +46,7 @@ $$ [sigmoid 函数][2](如下图)是逻辑函数的特殊情况,其公式为 $g\left( z \right)=\frac{1}{1+{{e}^{-z}}}$。 -![sigmoid function](image/2413fbec8ff9fa1f19aaf78265b8a33b_Logistic_function.png) +![sigmoid function](images/2413fbec8ff9fa1f19aaf78265b8a33b_Logistic_function.png) 应用 sigmoid 函数,则逻辑回归模型:$$h_{\theta}(x)=g(\theta^Tx) =\frac{1}{1+e^{-\theta^Tx}}$$ @@ -74,7 +74,7 @@ $\begin{align*}& h_\theta(x) \geq 0.5 \rightarrow y = 1 \newline& h_\theta(x) < 回忆一下 sigmoid 函数的图像: -![sigmoid function](image/2413fbec8ff9fa1f19aaf78265b8a33b_Logistic_function.png) +![sigmoid function](images/2413fbec8ff9fa1f19aaf78265b8a33b_Logistic_function.png) 观察可得当 $g(z) \geq 0.5$ 时,有 $z \geq 0$,即 $\theta^Tx \geq 0$。 @@ -82,7 +82,7 @@ $\begin{align*}& h_\theta(x) \geq 0.5 \rightarrow y = 1 \newline& h_\theta(x) < 直观一点来个例子,${h_\theta}\left( x \right)=g\left( {\theta_0}+{\theta_1}{x_1}+{\theta_{2}}{x_{2}}\right)​$ 是下图模型的假设函数: -![](image/20180111_000814.png) +![](images/20180111_000814.png) 根据上面的讨论,要进行分类,那么只要 $ {\theta_0}+{\theta_1}{x_1}+{\theta_{2}}{x_{2}}\geq0$ 时,就预测 $y = 1$,即预测为正向类。 @@ -100,7 +100,7 @@ ${h_\theta}\left( x \right)=g\left( {\theta_0}+{\theta_1}{x_1}+{\theta_{2}}{x_{2 -![](image/20180111_000653.png) +![](images/20180111_000653.png) 当然,通过一些更为复杂的多项式,还能拟合那些图像显得非常怪异的数据,使得决策边界形似碗状、爱心状等等。 @@ -116,11 +116,11 @@ ${h_\theta}\left( x \right)=g\left( {\theta_0}+{\theta_1}{x_1}+{\theta_{2}}{x_{2 其中 $h_\theta(x) = g\left(\theta^{T}x \right)$,可绘制关于 $J(\theta)$ 的图像,如下图 -![](image/20180111_080314.png) +![](images/20180111_080314.png) 回忆线性回归中的平方损失函数,其是一个二次凸函数(碗状),二次凸函数的重要性质是只有一个局部最小点即全局最小点。上图中有许多局部最小点,这样将使得梯度下降算法无法确定收敛点是全局最优。 -![](image/20180111_080514.png) +![](images/20180111_080514.png) 如果此处的损失函数也是一个凸函数,是否也有同样的性质,从而最优化?这类讨论凸函数最优值的问题,被称为**凸优化问题(Convex optimization)**。 @@ -132,7 +132,7 @@ $\begin{align*}& J(\theta) = \dfrac{1}{m} \sum_{i=1}^m \mathrm{Cost}(h_\theta(x^ 则有关于 $J(\theta)$ 的图像如下: -![](image/20180111_080614.png) +![](images/20180111_080614.png) 如左图,当训练集的结果为 $y=1$(正样本)时,随着假设函数趋向于 $1$,代价函数的值会趋于 $0$,即意味着拟合程度很好。如果假设函数此时趋于 $0$,则会给出一个**很高的代价**,拟合程度**差**,算法会根据其迅速纠正 $\theta$ 值,右图 $y=0$ 同理。 @@ -279,7 +279,7 @@ exitFlag = 1 一直在讨论二元分类问题,这里谈谈多类别分类问题(比如天气预报)。 -![](image/20180112_001720.png) +![](images/20180112_001720.png) 原理是,转化多类别分类问题为**多个二元分类问题**,这种方法被称为 One-vs-all。 @@ -310,11 +310,11 @@ exitFlag = 1 能很好甚至完美拟合训练集中的数据,即 $J(\theta) \to 0$,但是对于不在训练集中的**新数据**,预测值和实际值的误差会很大,**泛化能力弱**,这类情况被称为过拟合。拟合模型过于复杂(特征选多了)时易出现这类情况。类似于,你上课跟着老师做题都会都听懂了,下课遇到新题就懵了不会拓展。 线性模型中的拟合情况(左图欠拟合,右图过拟合): -![](image/20180112_091654.png) +![](images/20180112_091654.png) 逻辑分类模型中的拟合情况: -![](image/20180112_092027.png) +![](images/20180112_092027.png) @@ -329,7 +329,7 @@ exitFlag = 1 指模型预测值的**离散程度或者变化范围**。方差越大,数据的分布越分散,函数波动越大,泛化能力越差。方差低意味着拟合曲线的稳定性高,波动小。 据此,我们有对同一数据的各类拟合情况如下图: -![](image/20180112_085630.png) +![](images/20180112_085630.png) 据上图,高偏差意味着欠拟合,高方差意味着过拟合。 @@ -358,7 +358,7 @@ $min_\theta\ \dfrac{1}{2m}\sum_{i=1}^m (h_\theta(x^{(i)}) - y^{(i)})^2 + 1000\cd 上式中,我们在代价函数中增加了 $\theta_3$、$\theta_4$ 的惩罚项(penalty term) $1000\cdot\theta_3^2 + 1000\cdot\theta_4^2$,如果要最小化代价函数,那么势必需要极大地**减小 $\theta_3$、$\theta_4$**,从而使得假设函数中的 $\theta_3x^3$、$\theta_4x^4$ 这两项的参数非常小,就相当于没有了,假设函数也就**“变得”简单**了,从而在保留各参数的情况下避免了过拟合问题。 -![](image/20180114_090054.png) +![](images/20180114_090054.png) diff --git a/week4.md b/week4.md index c60fe87..a4ee170 100644 --- a/week4.md +++ b/week4.md @@ -10,7 +10,7 @@ 那特征能有多大呢?下面是一个计算机视觉中的例子: -![](image/20180115_084326.png) +![](images/20180115_084326.png) 如上图,如果选取一小块 $50 * 50$ 像素的灰度图片(一个像素只有亮度一个值),选择每个像素点作为特征,则特征总量 $n=2500$(换成 RGB(一个像素有三个值),则 $n = 7500$),如果将其两两组合作为新特征,则特征数量将为 $C_{2500}^{2} \approx 3\ million$。 @@ -22,11 +22,11 @@ 下图是根据研究做的一些应用(有兴趣可回顾视频): -![](image/20180115_101441.png) +![](images/20180115_101441.png) BrainPort 系统:帮助失明人士通过摄像头以及舌尖感官“看”东西 -![](image/20180115_101442.png) +![](images/20180115_101442.png) 触觉皮带:在朝北时蜂鸣器会发出声响,可使人拥有方向感(声音信号转换为方向信号)。 @@ -34,7 +34,7 @@ BrainPort 系统:帮助失明人士通过摄像头以及舌尖感官“看” 既然神经网络模仿的是大脑神经元,那就先看一下大脑的神经元长什么样吧: -![来源: http://blog.csdn.net/zzwu/article/details/574931](image/20141213201613758.jpg) +![来源: http://blog.csdn.net/zzwu/article/details/574931](images/20141213201613758.jpg) 想象一下印刷厂中流水线的工人(机器人也算哦),每个工人都有特定的任务,比如装订,塑封,贴防伪标识等等,工人们看到书本并处理完自己的任务后,就回放回传送带,紧接着传送带就传给下一个环节的工人,如此不断重复从而完成一个又一个环节,直到一本书印制完成。 @@ -44,7 +44,7 @@ BrainPort 系统:帮助失明人士通过摄像头以及舌尖感官“看” 我们一般把神经网络划分为三部分(注意,不是只有三层!),即输入层(input layer),隐藏层(hidden layer)和输出层(output layer)。 -![](image/20180116_001543.png) +![](images/20180116_001543.png) 图中的一个圈表示神经网络中的一个激活单元,输入层对应输入单元,隐藏层对应中间单元,输出层则对应输出单元。中间激活单元应用**激活函数**([activation_function](https://en.wikipedia.org/wiki/Activation_function))处理数据。 @@ -82,7 +82,7 @@ $Size(\Theta^{(2)})=s_3 \times (s_2 + 1) = 1 \times 4$ ## 8.4 模型表示2(Model Representation II) -![](image/20180116_001543.png) +![](images/20180116_001543.png) 对输入层(Layer 1)的所有激活单元应用激活函数,从而得到隐藏层(Layer 2)中激活单元的值: @@ -132,7 +132,7 @@ ${{z}^{\left( 2 \right)}}={{\Theta }^{\left( 1 \right)}} {{X}^{T}}$,这时 $z^ 当然,神经网络可有多层,每层的激活单元数量也并不固定: -![](image/20180116_105545.png) +![](images/20180116_105545.png) > 我们习惯于将输入层称为神经网络的第 0 层,如上图的神经网络被称为三层网络。 @@ -144,19 +144,19 @@ ${{z}^{\left( 2 \right)}}={{\Theta }^{\left( 1 \right)}} {{X}^{T}}$,这时 $z^ 逻辑与(AND)运算(都为真值则结果才为真)神经网络: -![](image/20180117_000612.png) +![](images/20180117_000612.png) $\Theta^{(1)} =\begin{bmatrix}-30 & 20 & 20\end{bmatrix}$,$h_\Theta(x) = g(-30+20x_1+20x_2)$。 回顾 sigmoid 函数图像,根据输入则有上图中右边的表格,即 $h_\theta(x)\approx x_1\ \text{AND}\ x_2$。这样就实现了一个能够进行与运算的神经网络。 -![sigmoid function](image/2413fbec8ff9fa1f19aaf78265b8a33b_Logistic_function.png) +![sigmoid function](images/2413fbec8ff9fa1f19aaf78265b8a33b_Logistic_function.png) 再举一例,逻辑或(OR)运算(有一个真值则结果就为真)神经网络: -![](image/20180117_000349.png) +![](images/20180117_000349.png) @@ -164,11 +164,11 @@ $\Theta^{(1)} =\begin{bmatrix}-30 & 20 & 20\end{bmatrix}$,$h_\Theta(x) = g(-30 下面逐步构建复杂一点的神经网络 -![](image/20180117_004820.png) +![](images/20180117_004820.png) 如上图,我们分别构建了三个单层神经网络,将这三个网络组合起来,可得到一个新的神经网络,其可完成逻辑运算中的异或(XNOR)操作: -![](image/20180116_235545.png) +![](images/20180116_235545.png) 这里的组合即为 $\text{XNOR}=( \text{x}_1\, \text{AND}\, \text{x}_2 )\, \text{OR} \left( \left( \text{NOT}\, \text{x}_1 \right) \text{AND} \left( \text{NOT}\, \text{x}_2 \right) \right)$ @@ -182,13 +182,13 @@ $\Theta^{(1)} =\begin{bmatrix}-30 & 20 & 20 \newline 10 & -20 & -20\end{bmatrix} 举一个 4 分类问题的实例: -![](image/20180117_010904.png) +![](images/20180117_010904.png) 有四种分类情况,那么就让输出层包含 4 个输出单元即可,则 $h_\Theta$ 为 4 维向量。 神经网络中的多分类算法算是对 one-vs-all 思想的扩展,定义预测结果一共有 4 种情况: -![](image/20180117_011331.png) +![](images/20180117_011331.png) 如果预测结果 $h_\Theta(x) =\begin{bmatrix}0 \newline 0 \newline 1 \newline 0 \newline\end{bmatrix}$,那么表示 $h_\Theta(x)_3$,即分为第 3 类,对应于图中的摩托车(Motorcycle)。 diff --git a/week5.md b/week5.md index e72c30e..b2b4d45 100644 --- a/week5.md +++ b/week5.md @@ -57,7 +57,7 @@ $J(\theta) = - \frac{1}{m} \sum_{i=1}^m [ y^{(i)}\ \log (h_\theta (x^{(i)})) + ( 在神经网络中,代价函数看上去虽然不复杂,但要注意到其中 $h_\Theta(x)$ 的求取实际上是由前向传播算法求得,即需从输入层开始,根据每层间的权重矩阵 $\Theta$ 依次计算激活单元的值 $a$。 在最优化代价函数时,我们必然也需要最优化每一层的权重矩阵,再次强调一下,**算法最优化的是权重,而不是输入**。 -![](image/20180123_122124.png) +![](images/20180123_122124.png) **反向传播算法**用于计算每一层权重矩阵的偏导 $\frac{\partial}{\partial\Theta}J(\Theta)$,算法实际上是对代价函数求导的拆解。 @@ -69,7 +69,7 @@ $J(\theta) = - \frac{1}{m} \sum_{i=1}^m [ y^{(i)}\ \log (h_\theta (x^{(i)})) + ( 2. 运行反向传播算法,从输出层开始计算每一层预测的**误差**(error),以此来求取偏导。 - ![](image/20180120_105744.png) + ![](images/20180120_105744.png) 输出层的误差即为预测与训练集结果的之间的差值:$\delta^{(L)} = a^{(L)} - y$, @@ -157,7 +157,7 @@ $\begin{gather*} J(\Theta) = -\left[y \log ((h_\Theta (x))) + (1 - y)\log (1 - ( $J(\Theta) ={y}\log \left( 1+{{e}^{-z^{(L)}}} \right)+\left( 1-{y} \right)\log \left( 1+{{e}^{z^{(L)}}} \right)$ -![](image/20180121_110111.png) +![](images/20180121_110111.png) 再次为了便于计算,我们用到如上图这个三层(输入层一般不计数)神经网络。 @@ -247,7 +247,7 @@ Theta2 = reshape(ThetaVec(111:118), 2, 4) 梯度检验采用数值估算(Numerical estimation)梯度的方法,被用于验证反向传播算法的正确性。 -![](image/20180125_162704.png) +![](images/20180125_162704.png) 把视 $\Theta$ 为一个实数,数值估算梯度的原理如上图所示,即有 $\dfrac{\partial}{\partial\Theta}J(\Theta) \approx \dfrac{J(\Theta + \epsilon) - J(\Theta - \epsilon)}{2\epsilon}$ @@ -329,6 +329,6 @@ Theta3 = rand(1,11) * (2 * INIT_EPSILON) - INIT_EPSILON; ## 9.8 自主驾驶(Autonomous Driving) -![](image/20180125_195029.png) +![](images/20180125_195029.png) 描述了神经网络在于[自动驾驶](https://www.coursera.org/learn/machine-learning/lecture/zYS8T/autonomous-driving)领域的应用实例,用于打鸡血,笔记略。