Browse Source

Optimize code block&desc

master
scruel 2 years ago
parent
commit
4c6739b7b0
6 changed files with 19 additions and 21 deletions
  1. +2
    -2
      README.md
  2. +8
    -8
      week1.md
  3. +1
    -1
      week2.md
  4. +2
    -2
      week3.md
  5. +0
    -2
      week4.md
  6. +6
    -6
      week5.md

+ 2
- 2
README.md View File

@@ -16,7 +16,7 @@ https://www.coursera.org/learn/machine-learning


本项目包含课程中的课后作业以及笔记: 本项目包含课程中的课后作业以及笔记:


1. 笔记(notes)都为中文,为了便于复习和扩充等,尽量会按照视频目录,以及视频内容进行提炼整理。
1. 笔记(notes)都为中文,为了便于复习和扩充等,尽量会按照视频目录,以及视频内容进行提炼整理。
2. 遵循[荣誉准则][honor code],现已移除已通过的课后编程作业的源代码,之后会改为指导笔记形式陆续更新。 2. 遵循[荣誉准则][honor code],现已移除已通过的课后编程作业的源代码,之后会改为指导笔记形式陆续更新。


感谢关注,欢迎分享。 感谢关注,欢迎分享。
@@ -32,7 +32,7 @@ https://www.coursera.org/learn/machine-learning


3. 下载 .html 网页文件及 笔记图片 image 文件夹,浏览器打开阅读。 3. 下载 .html 网页文件及 笔记图片 image 文件夹,浏览器打开阅读。


4. 笔记源码(.md)基于支持 LaTeX 的 markdown 编辑器 [Typora][Typora],其他类似的编辑器也可以阅读及编辑,注意其他编辑器可能会产生排版问题。
4. 笔记源码(.md)基于支持 LaTeX 的 markdown 编辑器 [Typora][Typora],其他类似的编辑器也可以阅读及编辑,注意其他编辑器可能会产生排版问题。




## Resources ## Resources


+ 8
- 8
week1.md View File

@@ -107,7 +107,7 @@


在鸡尾酒会上,大家说话声音彼此重叠,几乎很难分辨出面前的人说了什么。我们很难对于这个问题进行数据标注,而这里的通过机器学习的无监督学习算法,就可以将说话者的声音同背景音乐分离出来,看视频,效果还不错呢\~~。 在鸡尾酒会上,大家说话声音彼此重叠,几乎很难分辨出面前的人说了什么。我们很难对于这个问题进行数据标注,而这里的通过机器学习的无监督学习算法,就可以将说话者的声音同背景音乐分离出来,看视频,效果还不错呢\~~。


嗯,这块是打打鸡血的,只需要一行代码就解决了问题,就是这么简单!当然,我没复现过 ^_^……
嗯,这块是打打鸡血的,只需要一行代码就解决了问题,就是这么简单!当然,我没复现过 \^\_\^……


神奇的一行代码: 神奇的一行代码:
`[W,s,v] = svd((repmat(sum(x.*x,1),size(x,1),1).*x)*x');` `[W,s,v] = svd((repmat(sum(x.*x,1),size(x,1),1).*x)*x');`
@@ -259,7 +259,7 @@ $$
> ”:=“: 赋值操作符 > ”:=“: 赋值操作符
> >
> $\alpha$: 学习速率(learning rate), $\alpha > 0$ > $\alpha$: 学习速率(learning rate), $\alpha > 0$
>
>
> $\frac{\partial }{\partial {{\theta }_{j}}}J\left( \theta_0, \theta_1 \right)$: $J\left( \theta_0, \theta_1 \right)$ 的偏导 > $\frac{\partial }{\partial {{\theta }_{j}}}J\left( \theta_0, \theta_1 \right)$: $J\left( \theta_0, \theta_1 \right)$ 的偏导


公式中,学习速率决定了参数值变化的速率即”**走多少距离**“,而偏导这部分决定了下降的方向即”**下一步往哪里**“走(当然实际上的走多少距离是由偏导值给出的,学习速率起到调整后决定的作用),收敛处的局部最小值又叫做极小值,即”**陆地**“。 公式中,学习速率决定了参数值变化的速率即”**走多少距离**“,而偏导这部分决定了下降的方向即”**下一步往哪里**“走(当然实际上的走多少距离是由偏导值给出的,学习速率起到调整后决定的作用),收敛处的局部最小值又叫做极小值,即”**陆地**“。
@@ -362,7 +362,7 @@ $$


## 3.1 Matrices and Vectors ## 3.1 Matrices and Vectors


Octave/Matlab 代码:
Octave 代码:


```matlab ```matlab
% The ; denotes we are going back to a new row. % The ; denotes we are going back to a new row.
@@ -415,7 +415,7 @@ A_23 = 6


## 3.2 Addition and Scalar Multiplication ## 3.2 Addition and Scalar Multiplication


Octave/Matlab 代码:
Octave 代码:


```matlab ```matlab
% Initialize matrix A and B % Initialize matrix A and B
@@ -482,7 +482,7 @@ add_As =
``` ```
## 3.3 Matrix Vector Multiplication ## 3.3 Matrix Vector Multiplication


Octave/Matlab 代码:
Octave 代码:


```matlab ```matlab
% Initialize matrix A % Initialize matrix A
@@ -521,7 +521,7 @@ Av =
``` ```
## 3.4 Matrix Matrix Multiplication ## 3.4 Matrix Matrix Multiplication


Octave/Matlab 代码:
Octave 代码:


```matlab ```matlab
% Initialize a 3 by 2 matrix % Initialize a 3 by 2 matrix
@@ -559,7 +559,7 @@ mult_AB =
``` ```
## 3.5 Matrix Multiplication Properties ## 3.5 Matrix Multiplication Properties


Octave/Matlab 代码:
Octave 代码:


```matlab ```matlab
% Initialize random matrices A and B % Initialize random matrices A and B
@@ -628,7 +628,7 @@ BA =
``` ```
## 3.6 Inverse and Transpose ## 3.6 Inverse and Transpose


Octave/Matlab 代码:
Octave 代码:


```matlab ```matlab
% Initialize matrix A % Initialize matrix A


+ 1
- 1
week2.md View File

@@ -8,7 +8,7 @@


这里由于特征不再只有一个,引入一些新的记号 这里由于特征不再只有一个,引入一些新的记号


> $n$: 特征的总数
> $n$: 特征的总数
> >
> ${x}^{\left( i \right)}$: 代表样本矩阵中第 $i$ 行,也就是第 $i$ 个训练实例。 > ${x}^{\left( i \right)}$: 代表样本矩阵中第 $i$ 行,也就是第 $i$ 个训练实例。
> >


+ 2
- 2
week3.md View File

@@ -473,8 +473,8 @@ $$
> >
> $L$: 第一行第一列为 $0$ 的 $n+1$ 维单位矩阵 > $L$: 第一行第一列为 $0$ 的 $n+1$ 维单位矩阵


Matlab/Octave 代码:
```
Octave 代码:
```matlab
>> L = eye(5) >> L = eye(5)
>> L(1,1) = 0 >> L(1,1) = 0




+ 0
- 2
week4.md View File

@@ -96,8 +96,6 @@ $h_\Theta(x) = a_1^{(3)} = g(\Theta_{10}^{(2)}a_0^{(2)} + \Theta_{11}^{(2)}a_1^{


上面的计算过程被称为**前向传播(Forward propagation)**,即从输入层开始,一层一层地向下计算并传递结果。 上面的计算过程被称为**前向传播(Forward propagation)**,即从输入层开始,一层一层地向下计算并传递结果。




再回顾一下逻辑回归: 再回顾一下逻辑回归:


${h_\theta}\left( x \right)=g\left( {\theta_0}+{\theta_1}{x_1}+{\theta_{2}}{x_{2}}+{\theta_{3}}x_3 \right)$ ${h_\theta}\left( x \right)=g\left( {\theta_0}+{\theta_1}{x_1}+{\theta_{2}}{x_{2}}+{\theta_{3}}x_3 \right)$


+ 6
- 6
week5.md View File

@@ -221,9 +221,9 @@ $$


说白了,这个技巧就是把多个矩阵转换为一个长长的向量,便于传入函数,之后再根据矩阵维度,转回矩阵即可。 说白了,这个技巧就是把多个矩阵转换为一个长长的向量,便于传入函数,之后再根据矩阵维度,转回矩阵即可。


Octave/Matlab 代码:
Octave 代码:


```octave
```matlab
% 多个矩阵展开为一个向量 % 多个矩阵展开为一个向量
Theta1 = ones(11, 10); % 创建维度为 11 * 10 的矩阵 Theta1 = ones(11, 10); % 创建维度为 11 * 10 的矩阵
Theta2 = ones(2, 4) * 2; % 创建维度为 2 * 4 的矩阵 Theta2 = ones(2, 4) * 2; % 创建维度为 2 * 4 的矩阵
@@ -253,9 +253,9 @@ Theta2 = reshape(ThetaVec(111:118), 2, 4)


对于矩阵 $\Theta$,有 $\dfrac{\partial}{\partial\Theta_j}J(\Theta) \approx \dfrac{J(\Theta_1, \dots, \Theta_j + \epsilon, \dots, \Theta_n) - J(\Theta_1, \dots, \Theta_j - \epsilon, \dots, \Theta_n)}{2\epsilon}$ 对于矩阵 $\Theta$,有 $\dfrac{\partial}{\partial\Theta_j}J(\Theta) \approx \dfrac{J(\Theta_1, \dots, \Theta_j + \epsilon, \dots, \Theta_n) - J(\Theta_1, \dots, \Theta_j - \epsilon, \dots, \Theta_n)}{2\epsilon}$


Octave/Matlab 代码:
Octave 代码:


```octave
```matlab
epsilon = 1e-4; epsilon = 1e-4;
for i = 1:n, for i = 1:n,
thetaPlus = theta; thetaPlus = theta;
@@ -278,11 +278,11 @@ end


随机初始化权重矩阵也为实现细节之一,用于打破对称性(Symmetry Breaking),使得 $\Theta^{(l)}_{ij} \in [-\epsilon,\epsilon]$ 。 随机初始化权重矩阵也为实现细节之一,用于打破对称性(Symmetry Breaking),使得 $\Theta^{(l)}_{ij} \in [-\epsilon,\epsilon]$ 。


Octave/Matlab 代码:
Octave 代码:


当然,初始权重的波动也不能太大,一般限定在极小值 $\epsilon$ 范围内,即 $\Theta^{(l)}_{i,j} \in [-\epsilon, \epsilon]$。 当然,初始权重的波动也不能太大,一般限定在极小值 $\epsilon$ 范围内,即 $\Theta^{(l)}_{i,j} \in [-\epsilon, \epsilon]$。


```octave
```matlab
If the dimensions of Theta1 is 10x11, Theta2 is 10x11 and Theta3 is 1x11. If the dimensions of Theta1 is 10x11, Theta2 is 10x11 and Theta3 is 1x11.


Theta1 = rand(10,11) * (2 * INIT_EPSILON) - INIT_EPSILON; Theta1 = rand(10,11) * (2 * INIT_EPSILON) - INIT_EPSILON;


Loading…
Cancel
Save