Commit f147c823 by xiaotong

new pages

parent 521ddae4
......@@ -116,58 +116,28 @@
\subsection{参数学习 - 反向传播}
%%%------------------------------------------------------------------------------------------------------------
%%% 梯度下降的变种
\begin{frame}{梯度下降的不同实现方式}
%%% 关于梯度下降的改进
\begin{frame}{一些改进}
\begin{itemize}
\item \textbf{梯度下降}:我们可以沿着梯度方向更新$\textbf{w}$一小步,之后得到更好的$\textbf{w}$,之后重新计算梯度,不断重复上述过程
\begin{displaymath}
\textbf{w}_{t+1} = \textbf{w}_t - \alpha \cdot \frac{\partial J(\textbf{w}_t)}{\partial \textbf{w}_t}
\end{displaymath}
其中$t$表示更新的步数,$\alpha$是一个参数,表示更新步幅的大小。$\alpha$的设置需要根据任务进行调整。而$J(\textbf{w}_t)$的形式决定了具体的算法具体的实现。
\item<2-> \textbf{批量梯度下降(Batch Gradient Descent)}
\begin{displaymath}
J(\textbf{w}_t) = \frac{1}{n} \sum_{i=1}^{n} L(\textbf{x}_i,\hat{\textbf{y}}_i;\textbf{w}_t)
\end{displaymath}
这种方法训练稳定,但是由于每次更新需要对所有训练样本进行遍历,效率低(比如$n$很大),大规模数据上很少使用
\end{itemize}
\end{frame}
%%%------------------------------------------------------------------------------------------------------------
%%% 梯度下降的变种
\begin{frame}{梯度下降的不同实现方式(续)}
\begin{itemize}
\item \textbf{随机梯度下降(Stochastic Gradient Descent)}
\begin{displaymath}
J(\textbf{w}_t) = L(\textbf{x}_i,\hat{\textbf{y}}_i;\textbf{w}_t)
\end{displaymath}
大名鼎鼎的SGD,所有机器学习的课程里几乎都有介绍。每次随机选取一个样本进行梯度计算和参数更新,更新的计算代价低,而且适用于利用少量样本进行在线学习(online learning),不过方法收敛慢
\vspace{0.3em}
\item<2-> \textbf{小批量梯度下降(Mini-batch Gradient Descent)}
\begin{displaymath}
J(\textbf{w}_t) = \frac{1}{m} \sum_{i=j}^{j+m} L(\textbf{x}_i,\hat{\textbf{y}}_i;\textbf{w}_t)
\end{displaymath}
每次随机使用若干样本进行参数更新(数量不会特别大),算是一种折中方案,当今最常用的方法之一
\item \textbf{变种和改进}:提高基于梯度的方法的收敛速度、训练稳定性等,可以google一下
\begin{itemize}
\item Momentum, Adagrad, Adadelta, RMSprop, Adam, AdaMax, Nadam, AMSGrad等等
\item \footnotesize{\url{http://ruder.io/optimizing-gradient-descent}}
\end{itemize}
\item<2-> \textbf{并行化}:大规模数据处理需要分布式计算,梯度更新的策略需要设计
\begin{itemize}
\item \textbf{同步更新}:所有计算节点完成计算后,统一汇总并更新参数。效果稳定,但是并行度低
\item \textbf{异步更新}:每个节点可以随时更新。并行度高,但是由于节点间参数可能不同步,方法不十分稳定
\end{itemize}
\item<3-> \textbf{其它}
\begin{itemize}
\item 深度网络梯度爆炸的问题,使用梯度裁剪、残差链接
\item 引入正则化因子,可以对外部知识建模,比如引入噪声让训练更稳定
\end{itemize}
\end{itemize}
\end{frame}
\end{CJK}
\end{document}
......@@ -2939,7 +2939,7 @@ $\textbf{w}^*$表示在训练集上使得损失的平均值达到最小的参数
\addplot3 [surf] {-bivar(mu1,sigma1,mu2,sigma2)};
\node [circle,fill=red,minimum size=3pt,inner sep=1.5pt] () at (axis cs:0.5,2,-0.01) {};
\draw [->,very thick,ublue] (axis cs:0.5,2,-0.01) -- (axis cs:0.8,1.6,-0.03) node [pos=1,right,inner sep=2pt] {\tiny{-$\frac{\partial J(\textbf{w})}{\partial \textbf{w}}$}};
\draw [->,very thick,dotted] (axis cs:0.5,2,-0.01) -- (axis cs:0.2,1.5,-0.03);
\draw [->,very thick,dotted] (axis cs:0.5,2,-0.01) -- (axis cs:0.2,3.5,-0.03);
......@@ -3007,5 +3007,29 @@ J(\textbf{w}_t) = \frac{1}{m} \sum_{i=j}^{j+m} L(\textbf{x}_i,\hat{\textbf{y}}_i
\end{frame}
%%%------------------------------------------------------------------------------------------------------------
%%% 关于梯度下降的改进
\begin{frame}{一些改进}
\begin{itemize}
\item \textbf{变种和改进}:提高基于梯度的方法的收敛速度、训练稳定性等,可以google一下
\begin{itemize}
\item Momentum, Adagrad, Adadelta, RMSprop, Adam, AdaMax, Nadam, AMSGrad等等
\item \footnotesize{\url{http://ruder.io/optimizing-gradient-descent}}
\end{itemize}
\item<2-> \textbf{并行化}:大规模数据处理需要分布式计算,梯度更新的策略需要设计
\begin{itemize}
\item \textbf{同步更新}:所有计算节点完成计算后,统一汇总并更新参数。效果稳定,但是并行度低
\item \textbf{异步更新}:每个节点可以随时更新。并行度高,但是由于节点间参数可能不同步,方法不十分稳定
\end{itemize}
\item<3-> \textbf{其它}
\begin{itemize}
\item 深度网络梯度消失和爆炸的问题,使用梯度裁剪、残差链接
\item 引入正则化因子,可以对外部知识建模,比如引入噪声让训练更稳定
\end{itemize}
\end{itemize}
\end{frame}
\end{CJK}
\end{document}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论