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],现已移除已通过的课后编程作业的源代码,之后会改为指导笔记形式陆续更新。

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

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

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


## 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');`
@@ -259,7 +259,7 @@ $$
> ”:=“: 赋值操作符
>
> $\alpha$: 学习速率(learning rate), $\alpha > 0$
>
>
> $\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

Octave/Matlab 代码:
Octave 代码:

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

## 3.2 Addition and Scalar Multiplication

Octave/Matlab 代码:
Octave 代码:

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

Octave/Matlab 代码:
Octave 代码:

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

Octave/Matlab 代码:
Octave 代码:

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

Octave/Matlab 代码:
Octave 代码:

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

Octave/Matlab 代码:
Octave 代码:

```matlab
% Initialize matrix A


+ 1
- 1
week2.md View File

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

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

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


+ 2
- 2
week3.md View File

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

Matlab/Octave 代码:
```
Octave 代码:
```matlab
>> L = eye(5)
>> 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)**,即从输入层开始,一层一层地向下计算并传递结果。



再回顾一下逻辑回归:

${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 的矩阵
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}$

Octave/Matlab 代码:
Octave 代码:

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

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

Octave/Matlab 代码:
Octave 代码:

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

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

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


Loading…
Cancel
Save