Commit 2e92218f by xiaotong

new pages

parent 9752394b
......@@ -116,39 +116,75 @@
\subsection{参数学习 - 反向传播}
%%%------------------------------------------------------------------------------------------------------------
%%% 常见的目标函数
\begin{frame}{常见的损失函数}
%%% 梯度下降
\begin{frame}{梯度下降(Gradient Descent)}
\begin{itemize}
\item 损失函数记为$Loss(\hat{\textbf{y}}_i,\textbf{y}_i)$,简记为$L$,以下是常用的定义
\item 如果把目标函数看做是参数$\textbf{w}$的函数,记为$J(\textbf{w})$。优化目标是:找到使$J(\textbf{w})$达到最小的$\textbf{w}$
\item 注意,$\textbf{w}$可能包含几亿个实数,不能是SMT中MERT之类的调参方法。这里可以考虑一种更加适合大量实数参数的优化方法,其核心思想是\alert{梯度下降}
\begin{itemize}
\item<2-> 如果$J(\textbf{w})$对于$\textbf{w}$可微分,$\frac{\partial J(\textbf{w})}{\partial \textbf{w}}$表示$J$$\textbf{w}$处变化最大的方向
\item<2-> $\textbf{w}$沿着梯度方向更新,新的$\textbf{w}$可以使函数更接近极值
\end{itemize}
\end{itemize}
\vspace{0.5em}
\footnotesize{
\renewcommand{\arraystretch}{1.2}
\begin{tabular}{l | l | l | l}
名称 & 定义 & NiuTensor实现(\texttt{yh}表示$\hat{\textbf{y}}_i$) & 应用 \\ \hline
0-1 & $L = \left\{ \begin{array}{ll} 0 & \hat{\textbf{y}}_i = \textbf{y}_i \\ 1 & \hat{\textbf{y}}_i \ne \textbf{y}_i \end{array} \right.$ & \scriptsize{\texttt{L = Sign(Absolute(yh - y))}} & 感知机 \\
Hinge & $L=\max(0,1-\hat{\textbf{y}}_i \cdot \textbf{y}_i)$ & \scriptsize{\texttt{L = Max(0, 1 - yh * y))}} & SVM \\
绝对值 & $L=|\hat{\textbf{y}}_i - \textbf{y}_i|$ & \scriptsize{\texttt{L = Absolute(yh - y)}} & 回归 \\
Logistic & $L=\log(1 + \hat{\textbf{y}}_i \cdot \textbf{y}_i)$ & \scriptsize{\texttt{L = Log(1 + yh * y)}} & 回归 \\
平方 & $L=(\hat{\textbf{y}}_i - \textbf{y}_i)^2$ & \scriptsize{\texttt{L = Power(yh - y, 2)}} & 回归 \\
指数 & $L=\exp(- \hat{\textbf{y}}_i \cdot \textbf{y}_i) $ & \scriptsize{\texttt{L = Exp(Negate(yh * y))}} & \scriptsize{AdaBoost} \\
交叉熵 & $L=-\sum_k \textbf{y}_i^{[k]} \log \hat{\textbf{y}}_i^{[k]} $ & \scriptsize{\texttt{L = CrossEntropy(y, yh)}} & 多分类 \\
& \scriptsize{$\textbf{y}_i^{[k]}$: $\textbf{y}_i$的第$k$} & & \\
\end{tabular}
\renewcommand{\arraystretch}{1.0}
\pgfplotsset{%
colormap={whitered}{color(-1cm)=(orange!75!red);color(1cm)=(white)}
}
\vspace{-0.5em}
\begin{itemize}
\item 注意:
\begin{itemize}
\item 损失函数可以根据问题不同进行选择,没有固定要求
\item 有些损失函数对网络输出有要求,比如交叉熵要求$\hat{\textbf{y}}_i$$\textbf{y}_i$都是概率分布
\end{itemize}
\end{itemize}
\begin{center}
\begin{tikzpicture}[
declare function = {mu1=1;},
declare function = {mu2=2;},
declare function = {sigma1=0.5;},
declare function = {sigma2=1;},
declare function = {normal(\m,\s)=1/(2*\s*sqrt(pi))*exp(-(x-\m)^2/(2*\s^2));},
declare function = {bivar(\ma,\sa,\mb,\sb)=1/(2*pi*\sa*\sb) * exp(-((x-\ma)^2/\sa^2 + (y-\mb)^2/\sb^2))/2;}]
\footnotesize{
\visible<2->{
\begin{scope}
\begin{axis}[
colormap name = whitered,
width = 8cm,
height = 5cm,
view = {20}{45},
enlargelimits = false,
grid = major,
domain = -1:3,
y domain = 0:4,
samples = 30,
xlabel = $\textbf{w}^{[1]}$,
ylabel = $\textbf{w}^{[2]}$,
xlabel style = {xshift=0em,yshift=0.8em},
ylabel style = {xshift=0.2em,yshift=0.8em},
zlabel = {$f(\cdot)$},
ztick = {-0.1},
colorbar,
colorbar style = {
at = {(1.2,0.5)},
anchor = north west,
ytick = {0,-0.1},
height = 0.25*\pgfkeysvalueof{/pgfplots/parent axis height},
title = {}
}
]
\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.5,3,-0.03);
%\draw [black!50] (axis cs:0,-1,0) -- (axis cs:0,4,0);
\end{axis}
\end{scope}
}
}
\end{tikzpicture}
\end{center}
\end{frame}
......
......@@ -2710,7 +2710,7 @@ cycle}
%%%------------------------------------------------------------------------------------------------------------
%%% 神经网络 = 表达式
\begin{frame}{神经网络 = 表达式}
\begin{frame}{神经网络 = 函数表达式}
\begin{itemize}
\item 所有的神经网络都可以看做由变量和函数组成的表达式\\
\end{itemize}
......@@ -2855,5 +2855,31 @@ Logistic & $L=\log(1 + \hat{\textbf{y}}_i \cdot \textbf{y}_i)$ & \scriptsize{\te
\end{frame}
%%%------------------------------------------------------------------------------------------------------------
%%% 优化目标函数
\begin{frame}{参数优化}
\begin{itemize}
\item 对于第$i$个输入样本($\textbf{x}_i$,$\hat{\textbf{y}}_i$),如果把损失函数看做参数$\textbf{w}$的函数(把$\textbf{b}$也作为一种$\textbf{w}$),记为$L(\textbf{x}_i,\hat{\textbf{y}}_i;\textbf{w})$,则参数学习可以被描述为:\\
\begin{displaymath}
\textbf{w}^* = \argmin_{\textbf{w}} \frac{1}{n} \sum_{i=1}^{n} L(\textbf{x}_i,\hat{\textbf{y}}_i;\textbf{w})
\end{displaymath}
$\textbf{w}^*$表示在训练集上使得损失的平均值达到最小的参数。$\frac{1}{n} \sum_{i=1}^{n} L(\textbf{x}_i,\hat{\textbf{y}}_i;\textbf{w})$被称作代价函数(cost function),它是损失函数均值期望的估计。
\vspace{0.5em}
\item<2-> 核心问题:\textbf{求解$\argmin$,即找到代价函数最小值点}
\begin{itemize}
\item 这是非常常见的问题,回一下第三章的IBM模型,当时使用的是EM算法
\item 但是这里并不是一个生成模型
\item 需要一种更加通用的求解方法
\end{itemize}
\end{itemize}
\end{frame}
\end{CJK}
\end{document}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论