Skip to content

Commit

Permalink
Use macroes for some terms which may be inaccurate.
Browse files Browse the repository at this point in the history
Add more plot images generated in MATLAB, used in chapter3.
  • Loading branch information
zhanggyb committed Jan 30, 2016
1 parent 739acc6 commit 60039ae
Show file tree
Hide file tree
Showing 13 changed files with 4,808 additions and 751 deletions.
13 changes: 7 additions & 6 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
/*.pdf
.texpadtmp
/fonts/
/*.log
/*.aux
/*.out
/*.toc
/auto/
/fonts/

*.log
*.aux
*.out
*.toc
*.lb
*.idx
*.ind
*.ilg
*.pdf
97 changes: 36 additions & 61 deletions chap1.tex

Large diffs are not rendered by default.

20 changes: 10 additions & 10 deletions chap2.tex
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ \section{热身:神经网络中使用矩阵快速计算输出的方法}
\end{equation}

其中求和是在 $(l-1)^{\rm th}$ 层的所有 $k$ 个神经元上进行的。为了用矩阵的形式重
写这个表达式,我们对每一层 $l$ 都定义一个\emph{权重矩阵} $w^l$ \index{权重矩阵}
写这个表达式,我们对每一层 $l$ 都定义一个\emph{权重矩阵}\index{权重矩阵} $w^l$
权重矩阵 $w^l$ 的元素正是连接到 $l^{\rm th}$ 层神经元的权重,更确切地说,在第
$j^{\rm th}$ 行第 $k^{\rm th}$ 列的元素是 $w^l_{jk}$。类似的,对每一层$l$,定义
一个\emph{偏差向量}\index{偏差向量},$b^l$。你已经猜到这些如何工作了 —— 偏差向量
Expand Down Expand Up @@ -528,8 +528,8 @@ \subsection*{练习}

正如我们上面所讲的,反向传播算法对一个训练样本计算代价函数的梯度,$C=C_x$。在实
践中,通常将反向传播算法和诸如随机梯度下降这样的学习算法进行组合使用,我们会对许
多训练样本计算对应的梯度。特别地,给定一个大小为 $m$ 的小批量输入,下面的算法在
这个小批量输入的基础上应用一步梯度下降学习算法
多训练样本计算对应的梯度。特别地,给定一个大小为 $m$ \minibatch{},下面的算法在
这个\minibatch{}的基础上应用一步梯度下降学习算法

\begin{enumerate}
\item \textbf{输入训练样本的集合}
Expand All @@ -548,8 +548,8 @@ \subsection*{练习}
$b^l \rightarrow b^l - \frac{\eta}{m}\sum_x \delta^{x,l}$ 更新权重和偏差。
\end{enumerate}

当然,在实践中实现随机梯度下降,我们还需要一个产生小批量训练样本的循环,还有就是
多重训练周期的循环。这里我们先省略了。
当然,在实践中实现随机梯度下降,我们还需要一个产生训练样本的\minibatch{}的循环,还有就是
多重\epochs{}的循环。这里我们先省略了。

\section{代码}
\label{sec:the_code_for_backpropagation}
Expand Down Expand Up @@ -651,14 +651,14 @@ \section{代码}
\subsection*{问题}

\begin{itemize}
\item \textbf{在一个小批量输入上的反向传播的全矩阵方法}\quad 我们对于随机梯度下
降的实现是对一个小批量输入中的训练样本进行遍历。所以也可以更改反向传播算法使得
它同时对一个小批量输入中的所有样本进行梯度计算。这个想法其实就是我们可以用一个
矩阵 $X=[x_1, x_2, ..., x_m]$其中每列就是在小批量输入中的向量,而不是单个的
\item \textbf{在一个\minibatch{}上的反向传播的全矩阵方法}\quad 我们对于随机梯度下
降的实现是对一个\minibatch{}中的训练样本进行遍历。所以也可以更改反向传播算法使得
它同时对一个\minibatch{}中的所有样本进行梯度计算。这个想法其实就是我们可以用一个
矩阵 $X=[x_1, x_2, ..., x_m]$其中每列就是在\minibatch{}中的向量,而不是单个的
输入向量,$x$。我们通过乘权重矩阵,加上对应的偏差进行前向传播,在所有地方应用S
型函数。然后按照类似的过程进行反向传播。请显式写出这种方法下的伪代码。更改
\lstinline!network.py! 来实现这个方案。这样做的好处其实利用到了现代的线性代数
库。所以,这会比在小批量输入上进行遍历要运行得更快(在我的笔记本电脑上,在
库。所以,这会比在\minibatch{}上进行遍历要运行得更快(在我的笔记本电脑上,在
MNIST 分类问题上,我相较于上一章的实现获得了 2 倍的速度提升)。在实际应用中,
所有靠谱的反向传播的库都是用了类似的基于矩阵或者其变化形式来实现的。
\end{itemize}
Expand Down
1,623 changes: 1,036 additions & 587 deletions chap3.tex

Large diffs are not rendered by default.

Loading

0 comments on commit 60039ae

Please sign in to comment.