CS229笔记:生成学习算法
在线性回归、逻辑回归、softmax回归中,学习的结果是\(p(y|x;\theta)\),也就是给定\(x\)的条件下,\(y\)的条件概率分布,给定一个新的输入\(x\),我们求出不同输出的概率,我们称这一类学习算法为判别学习算法(discriminative learning algorithm);这一节,我们介绍另一类学习算法:生成学习算法(generative learning algorithm),在生成学习算法中,我们对\(p(x|y)\)和\(p(y)\)建模,也就是说,我们求出各个标签的概率以及在给定标签下输入变量的分布,根据贝叶斯公式可以求出:
\[
\begin{align*}
p(y|x) &= \frac{p(x|y)p(y)}{p(x)} \\
&= \frac{p(x|y)p(y)}{\sum_{j \in \mathcal{Y}}p(x|j)p(j)}
\end{align*}
\]
给定输入\(x\),我们预测其标签时,所求的就是:
\[
\begin{align*}
y &= \arg\max_y p(y|x)\\
&= \arg\max_y \frac{p(x|y)p(y)}{p(x)}\\
&= \arg\max_y p(x|y)p(y)
\end{align*}
\]
高斯判别分析
模型求解
我们简单介绍一下多元高斯分布,多元高斯分布一般有两个参数:均值向量 \(\mu \in \mathbb{R}^{n}\)和协方差矩阵\(\Sigma \in \mathbb{R}^{n \times n}\)(半正定),其概率密度函数为:
\[
p(x;\mu,\Sigma) = \frac{1}{(2\pi)^{n/2}|\Sigma|^{1/2}}\exp\left(-\frac{1}{2}(x-\mu)^T\Sigma^{-1}(x-\mu)\right)
\]
吴恩达老师在笔记中对多元高斯分布做了比较多的介绍,这里就不详细讲了。
我们介绍的第一个生成学习算法是高斯判别分析(Gaussian discriminant analysis, GDA),它处理的是二分类问题。在GDA中,我们用伯努利分布对\(p(y)\)建模,用多元高斯分布对\(p(x|y)\)建模,即:
\[
\begin{align*}
y &\sim \text{Bernoulli}(\phi)\\
x|y=0 &\sim \mathcal{N}(\mu_0, \Sigma)\\
x|y=1 &\sim \mathcal{N}(\mu_1, \Sigma)\\
\end{align*}
\]
\(GDA\)的模型参数为\(\phi, \mu_0, \mu_1, \Sigma\),我们求出对数似然,利用最大似然来求这些参数:
\[
\begin{align*}
l(\phi, \mu_0, \mu_1, \Sigma) &= \log \prod_{i=1}^{m}p(x^{(i)},y^{(i)};\phi, \mu_0, \mu_1, \Sigma) \\
&= \sum_{i=1}^{m} \log p(x^{(i)},y^{(i)};\phi, \mu_0, \mu_1, \Sigma) \\
&= \sum_{i=1}^{m} \log p(y^{(i)};\phi)p(x^{(i)}|y^{(i)};\mu_0, \mu_1, \Sigma) \\
&= \sum_{i=1}^{m} \log \phi^{y^{(i)}}(1-\phi)^{1-y^{(i)}}(2\pi)^{-\frac{n}{2}}|\Sigma|^{-\frac{1}{2}}\exp\left(-\frac{1}{2}(1-y^{(i)})(x^{(i)}-\mu_0)^T\Sigma^{-1}(x^{(i)}-\mu_0)\right) \\
&\qquad\exp\left(-\frac{1}{2}y^{(i)}(x^{(i)}-\mu_1)^T\Sigma^{-1}(x^{(i)}-\mu_1)\right) \\
&= \sum_{i=1}^{m}y^{(i)}\log \phi + (1-y^{(i)})\log(1-\phi) - \frac{n}{2}\log(2\pi)-\frac{1}{2}\log |\Sigma|\\
&\qquad-\frac{1}{2}(1-y^{(i)})(x^{(i)}-\mu_0)^T\Sigma^{-1}(x^{(i)}-\mu_0)-\frac{1}{2}y^{(i)}(x^{(i)}-\mu_1)^T\Sigma^{-1}(x^{(i)}-\mu_1)
\end{align*}
\]
先对\(\phi\)求导:
\[
\begin{align*}
\frac{\partial l(\phi,\mu_0,\mu_1,\Sigma)}{\partial \phi}
&= \sum_{i=1}^{m}\frac{y^{(i)}}{\phi} + \frac{-(1-y^{(i)})}{1-\phi}\\
&= \sum_{i=1}^{m}\frac{y^{(i)}-\phi}{\phi(1-\phi)}\\
\end{align*}
\]
令\(\frac{\partial l(\phi,\mu_0,\mu_1,\Sigma)}{\partial \phi} = 0\)得:\(\phi = \frac{1}{m}\sum_{i=1}^{m}y^{(i)}\)
再对\(\mu_0\)求导:
\[
\begin{align*}
\frac{\partial l(\phi,\mu_0,\mu_1,\Sigma)}{\partial \mu_0}
&= \sum_{i=1}^{m}-\frac{1}{2}(1-y^{(i)})\cdot 2\Sigma^{-1}(x^{(i)}-\mu_0) \cdot (-1)\\
&= \Sigma^{-1}\sum_{i=1}^{m}(1-y^{(i)})(x^{(i)}-\mu_0)\\
\end{align*}
\]
令\(\frac{\partial l(\phi,\mu_0,\mu_1,\Sigma)}{\partial \mu_0}=0\)得:\(\mu_0 = \frac{\sum_{i=1}^{m}(1-y^{(i)})x^{(i)}}{\sum_{i=1}^{m}(1-y^{(i)})}\),同理:\(\mu_1 = \frac{\sum_{i=1}^{m}y^{(i)}x^{(i)}}{\sum_{i=1}^{m}y^{(i)}}\)
最后考虑对\(\Sigma\)求导:
\[
\begin{align*}
\frac{\partial l(\phi,\mu_0,\mu_1,\Sigma)}{\partial \Sigma}
&= \sum_{i=1}^{m}-\frac{1}{2}\cdot\frac{1}{|\Sigma|}\cdot\frac{\partial|\Sigma|}{\partial\Sigma}-\frac{1}{2}(1-y^{(i)})(x^{(i)}-\mu_0)(x^{(i)}-\mu_0)^T\cdot(-\Sigma^{-2})\\
&\quad-\frac{1}{2}y^{(i)}(x^{(i)}-\mu_1)(x^{(i)}-\mu_1)^T\cdot(-\Sigma^{-2})\\
&= \sum_{i=1}^{m}-\frac{1}{2}\cdot\frac{1}{|\Sigma|}\cdot|\Sigma|\Sigma^{-1}-\frac{1}{2}(x^{(i)}-\mu_{y^{(i)}})(x^{(i)}-\mu_{y^{(i)}})^T\cdot(-\Sigma^{-2})\\
&= \sum_{i=1}^{m}-\frac{1}{2}\cdot\Sigma^{-1}+\frac{1}{2}(x^{(i)}-\mu_{y^{(i)}})(x^{(i)}-\mu_{y^{(i)}})^T\cdot\Sigma^{-2}\\
\end{align*}
\]
令\(\frac{\partial l(\phi,\mu_0,\mu_1,\Sigma)}{\partial \Sigma} = 0\)得:\(\Sigma = \frac{1}{m}\sum_{i=1}^{m}(x^{(i)}-\mu_{y^{(i)}})(x^{(i)}-\mu_{y^{(i)}})^T\)
在对\(\Sigma\)求导的过程中,我们用到了一个结论:
\[
\frac{\partial |\Sigma|}{\partial \Sigma} = |\Sigma|\Sigma^{-1}
\]
综上,GDA中的参数为:
\[
\begin{align*}
\phi &= \frac{\sum_{i=1}^{m}1\left\{y^{(i)}=1\right\}}{m}\\
\mu_0 &= \frac{\sum_{i=1}^{m}1\left\{y^{(i)}=0\right\}x^{(i)}}{\sum_{i=1}^{m}1\left\{y^{(i)}=0\right\}}\\
\mu_1 &= \frac{\sum_{i=1}^{m}1\left\{y^{(i)}=1\right\}x^{(i)}}{\sum_{i=1}^{m}1\left\{y^{(i)}=1\right\}}\\
\Sigma &= \frac{\sum_{i=1}^{m}(x^{(i)}-\mu_{y^{(i)}})(x^{(i)}-\mu_{y^{(i)}})^T}{m}
\end{align*}
\]
GDA v.s. LR
我们把\(p(y=1|x;\phi, \Sigma, \mu_0, \mu_1)\)看作是\(x\)的函数:
\[
\begin{align*}
&p(y=1|x;\phi, \Sigma, \mu_0, \mu_1)\\
= &\frac{p(y=1,x;\phi, \Sigma, \mu_0, \mu_1)}{p(x;\phi, \Sigma, \mu_0, \mu_1)}\\
= &\frac{p(y=1)p(x|y=1;\phi, \Sigma, \mu_0, \mu_1)}{p(y=0)p(x|y=0;\phi, \Sigma, \mu_0, \mu_1)+p(y=1)p(x|y=1;\phi, \Sigma, \mu_0, \mu_1)}\\
= &\frac{\phi \cdot (2\pi)^{-\frac{n}{2}}|\Sigma|^{-\frac{1}{2}}\exp(\frac{1}{2}(x-\mu_1)^T\Sigma^{-1}(x-\mu_1))}{\phi \cdot (2\pi)^{-\frac{n}{2}}|\Sigma|^{-\frac{1}{2}}\exp(\frac{1}{2}(x-\mu_1)^T\Sigma^{-1}(x-\mu_1)) + (1-\phi) \cdot (2\pi)^{-\frac{n}{2}}|\Sigma|^{-\frac{1}{2}}\exp(\frac{1}{2}(x-\mu_0)^T\Sigma^{-1}(x-\mu_0))}\\
= &\frac{\phi \cdot \exp(\frac{1}{2}(x-\mu_1)^T\Sigma^{-1}(x-\mu_1))}{\phi \cdot \exp(\frac{1}{2}(x-\mu_1)^T\Sigma^{-1}(x-\mu_1)) + (1-\phi) \cdot \exp(\frac{1}{2}(x-\mu_0)^T\Sigma^{-1}(x-\mu_0))}\\
= &\frac{1}{1 + \frac{1-\phi}{\phi} \cdot \exp(\frac{1}{2}(x-\mu_0)^T\Sigma^{-1}(x-\mu_0) - \frac{1}{2}(x-\mu_1)^T\Sigma^{-1}(x-\mu_1))}\\
= &\frac{1}{1 + \frac{1-\phi}{\phi} \cdot \exp(\frac{1}{2}x^T\Sigma^{-1}(\mu_1-\mu_0)+\frac{1}{2}(\mu_1-\mu_0)^T\Sigma^{-1}x + \frac{1}{2}\mu_0^T\Sigma^{-1}\mu_0 + \frac{1}{2}\mu_1^T\Sigma^{-1}\mu_1)}\\
= &\frac{1}{1 + \frac{1-\phi}{\phi} \cdot \exp(\frac{1}{2}(\mu_1-\mu_0)^T(\Sigma^{-1})^Tx+\frac{1}{2}(\mu_1-\mu_0)^T\Sigma^{-1}x + \frac{1}{2}\mu_0^T\Sigma^{-1}\mu_0 + \frac{1}{2}\mu_1^T\Sigma^{-1}\mu_1)}\\
= &\frac{1}{1 + \exp((\mu_1-\mu_0)^T\Sigma^{-1}x + \frac{1}{2}\mu_0^T\Sigma^{-1}\mu_0 + \frac{1}{2}\mu_1^T\Sigma^{-1}\mu_1 + \log(\frac{1-\phi}{\phi}))}\\
\end{align*}
\]
\(p(y=1|x;\phi,\Sigma, \mu_0, \mu_1)\)恰好是\(x\)带有截距项时,逻辑回归的假设函数形式。
在推导逻辑回归时,我们只假设了\(y\)服从伯努利分布,而没有假设同类样本服从高斯分布,所以GDA做了更强的假设,我们可以认为GDA是逻辑回归的一种特例,两者比较:
- 逻辑回归的假设较弱,所以适用范围广,鲁棒性更强
- 当同类数据的确符合高斯分布时,GDA的效率更高
朴素贝叶斯
朴素贝叶斯(Naive Bayes)模型也是一种生成学习算法,与GDA类似,它需要对\(p(y)\)和\(p(x|y)\)建模,不同的是,在GDA中,\(x\)是连续的,而在朴素贝叶斯中,\(x\)的取值是离散的,我们先介绍一种多元伯努利事件模型(multi-variate Bernoulli event model),在这一模型中,\(x\)的每个分量只有\(0\)和\(1\)两种取值,也就是说,对于\(x \in \mathbb{R}^{n}\),\(x_i \in \left\{0, 1\right\}\)。
朴素贝叶斯分类器
在多元伯努利事件模型中,对于\(n\)维的变量\(x\),可能的取值有\(2^n\)种,当\(n\)比较大时,要求出每种可能取值的概率是不现实的(如果用多项式分布对\(p(x|y)\)建模,那么参数的个数将是\(2^n-1\)个!),因此,我们需要引入一个很强的假设——朴素贝叶斯假设(Naive Bayes Assumption):
给定标签\(y\)的条件下,\(x\)的各个分量是条件独立的,即:
\(\forall i \neq j, y \in \{0,1\}, p(x_i|y,x_j) = p(x_i|y)\)
基于这一假设,我们得到的算法就是朴素贝叶斯分类器(Naive Bayes classifier),此时,我们可以将\(p(x|y)\)写作:
\[
\begin{align*}
p(x|y) &= p(x_1x_2\cdots x_n|y)\\
&=p(x_1|y)p(x_2|y)\cdots p(x_n|y)\\
&= \prod_{i=1}^n p(x_i|y)
\end{align*}
\]
模型的参数为:
\[
\begin{align*}
\phi_y &= p(y=1)\\
\phi_{i|y=0} &= p(x_i=1|y=0), \quad i=1,2,\dots,n\\
\phi_{i|y=1} &= p(x_i=1|y=1), \quad i=1,2,\dots,n\\
\end{align*}
\]
给定训练数据集\(\left\{(x^{(i)}, y^{(i)})|i=1,2, \dots,m\right\}\),对数似然为:
\[
\begin{align*}
&l(\phi_y, \phi_{i|y=0}, \phi_{i|y=1})\\
= &\log \prod_{i=1}^{m}p(x^{(i)},y^{(i)})\\
= &\log \prod_{i=1}^{m}p(y^{(i)})p(x^{(i)}|y^{(i)})\\
= &\log \prod_{i=1}^{m}\phi_y^{y^{(i)}}(1-\phi_y)^{1-y^{(i)}}\left[\prod_{j=1}^{n}\phi_{j|y=0}^{x^{(i)}_j}(1-\phi_{j|y=0})^{1-x^{(i)}_j}\right]^{1-y^{(i)}}\left[\prod_{j=1}^{n}\phi_{j|y=1}^{x^{(i)}_j}(1-\phi_{j|y=1})^{1-x^{(i)}_j}\right]^{y^{(i)}}\\
= &\sum_{i=1}^{m}y^{(i)}\log \phi_y + (1-y^{(i)}) \log(1-\phi_y)^{} +(1-y^{(i)})\left[\sum_{j=1}^{n}x^{(i)}_j\log\phi_{j|y=0} + (1-x^{(i)}_j)\log(1-\phi_{j|y=0})\right]\\
&+ y^{(i)}\left[\sum_{j=1}^{n}x^{(i)}_j\log\phi_{j|y=1} + (1-x^{(i)}_j)\log(1-\phi_{j|y=1})\right]\\
\end{align*}
\]
令导数等于\(0\),可以得到:
\[
\begin{align*}
\phi_y &= \frac{\sum_{i=1}^{m}y^{(i)}}{m} = \frac{\sum_{i=1}^{m}1\left\{y^{(i)}=1\right\}}{m}\\
\phi_{j|y=0} &= \frac{\sum_{i=1}^{m}(1-y^{(i)})x^{(i)}_j}{\sum_{i=1}^{m}(1-y^{(i)})} = \frac{\sum_{i=1}^{m}1\left\{y^{(i)}=0\land x^{(i)}_j=1\right\}}{\sum_{i=1}^{m}1\left\{y^{(i)}=0\right\}}\\
\phi_{j|y=1} &= \frac{\sum_{i=1}^{m}y^{(i)}x^{(i)}_j}{\sum_{i=1}^{m}y^{(i)}} = \frac{\sum_{i=1}^{m}1\left\{y^{(i)}=1\land x^{(i)}_j=1\right\}}{\sum_{i=1}^{m}1\left\{y^{(i)}=1\right\}}\\
\end{align*}
\]
拉普拉斯平滑
现在,我们考虑一种情况:某个特征,比如说\(x_{35000}\),在所有训练数据中都没有出现过,则:
\[
\begin{align*}
\phi_{35000|y=0} &= \frac{\sum_{i=1}^{m}1\left\{x^{(i)}_{35000}=1 \land y^{(i)}=0\right\}}{\sum_{i=1}^{m}1\left\{y^{(i)}=0\right\}}=0\\
\phi_{35000|y=1} &= \frac{\sum_{i=1}^{m}1\left\{x^{(i)}_{35000}=1 \land y^{(i)}=1\right\}}{\sum_{i=1}^{m}1\left\{y^{(i)}=1\right\}}=0\\
\end{align*}
\]
考虑到我们在做预测时,所求的\(y\)是:
\[
\begin{align*}
y &= \arg\max_y p(x|y)p(y)\\
&= \arg\max_y p(y)\prod_{i=1}^{n}p(x_i|y)
\end{align*}
\]
由于\(\phi_{35000|y=0}\)和\(\phi_{35000|y=1}\)都是\(0\),所以两种类别的概率估计都是\(0\),无法进行预测。为了解决这一问题,我们引入拉普拉斯平滑(Laplace smoothing)。
考虑一个多项式分布随机变量\(z \in \left\{1, 2, \dots, k\right\}\),给定\(m\)个观测结果\(\left\{z^{(1)}, \dots, z^{(m)}\right\}\),通过最大似然,可以得到参数估计:
\[
\phi_j = \frac{\sum_{i=1}^m1\left\{z^{(i)}=j\right\}}{m}
\]
我们不希望因为没有观测到某种结果,就认为这种结果的概率是\(0\),所以我们使用拉普拉斯平滑来估计参数:
\[
\phi_j = \frac{\sum_{i=1}^m1\left\{z^{(i)}=j\right\}+1}{m+k}
\]
使用拉普拉斯平滑,朴素贝叶斯分类器中的参数估计变成:
\[
\begin{align*}
\phi_{j|y=0} &= \frac{\sum_{i=1}^{m}1\left\{y^{(i)}=0\land x^{(i)}_j=1\right\}+1}{\sum_{i=1}^{m}1\left\{y^{(i)}=0\right\}+2}\\
\phi_{j|y=1} &= \frac{\sum_{i=1}^{m}1\left\{y^{(i)}=1\land x^{(i)}_j=1\right\}+1}{\sum_{i=1}^{m}1\left\{y^{(i)}=1\right\}+2}\\
\end{align*}
\]
多项式事件模型
前面我们考虑的是\(x\)的每个分量只有\(0\)和\(1\)两种取值的情况,这种模型被称为多元伯努利事件模型,现在我们介绍另一种模型多项式事件模型(multinomial event model),在这种模型中,\(x\)的各个分量独立且服从同一个多项式分布,模型的参数为:
\[
\begin{align*}
\phi_y &= p(y)\\
\phi_{k|y=1} &= p(x_j=k|y=1)\\
\phi_{k|y=0} &= p(x_j=k|y=0)\\
\end{align*}
\]
给定训练集\(\left\{(x^{(i)}, y^{(i)}); i = 1, \dots, m\right\}\),其中\(x^{(i)} = (x^{(i)}_1, \dots, x^{(i)}_{n_i})\),似然函数值为:
\[
\begin{align*}
L(\phi_y, \phi_{k|y=1},\phi_{k|y=0}) &= \prod_{i=1}^{m}p(x^{(i)}, y^{(i)})\\
&= \prod_{i=1}^{m}\left(\prod_{j=1}^{n_i}p(x_j|y^{(i)};\phi_{k|y=1},\phi_{k|y=0})\right)p(y^{(i)};\phi_y)
\end{align*}
\]
通过最大似然,可以得到:
\[
\begin{align*}
\phi_y &= \frac{\sum_{i=1}^m1\left\{y^{(i)}=1\right\}}{m}\\
\phi_{k|y=0} &= \frac{\sum_{i=1}^{m}\sum_{j=1}^{n_i}1\left\{y^{(i)}=0 \land x^{(i)}_j=k\right\}}{\sum_{i=1}^{m}1\left\{y^{(i)}=0\right\}n_i}\\
\phi_{k|y=1} &= \frac{\sum_{i=1}^{m}\sum_{j=1}^{n_i}1\left\{y^{(i)}=1 \land x^{(i)}_j=k\right\}}{\sum_{i=1}^{m}1\left\{y^{(i)}=1\right\}n_i}\\
\end{align*}
\]
使用拉普拉斯平滑,参数估计为:
\[
\begin{align*}
\phi_{k|y=0} &= \frac{\sum_{i=1}^{m}\sum_{j=1}^{n_i}1\left\{y^{(i)}=0 \land x^{(i)}_j=k\right\}+1}{\sum_{i=1}^{m}1\left\{y^{(i)}=0\right\}n_i+K}\\
\phi_{k|y=1} &= \frac{\sum_{i=1}^{m}\sum_{j=1}^{n_i}1\left\{y^{(i)}=1 \land x^{(i)}_j=k\right\}+1}{\sum_{i=1}^{m}1\left\{y^{(i)}=1\right\}n_i+K}\\
\end{align*}
\]
考虑垃圾邮件分类的例子,在多元伯努利事件模型中,一封邮件的生成方式相当于先根据\(p(y)\)随机地确定是垃圾邮件或不是垃圾邮件,再遍历整个字典(字典的大小为\(n\)),对于第\(i\)个单词,根据\(p(x_i|y)\)随机地确定是否要在邮件中使用这个单词,并且每个单词是否被选择是独立的。
在多项式事件模型中,先根据\(p(y)\)随机地确定是垃圾邮件或者不是垃圾邮件,假设邮件有\(n\)个单词,对于第\(1\)个单词,根据\(p(x=k|y)\)随机地确定它是字典中的哪一个,然后对于第\(2\)个单词,与第一个单词独立但同分布地确定,以此类推,直至确定完\(n\)个单词。
CS229笔记:生成学习算法的更多相关文章
- CS229 Lesson 5 生成学习算法
课程视频地址:http://open.163.com/special/opencourse/machinelearning.html 课程主页:http://cs229.stanford.edu/ 更 ...
- [置顶] 生成学习算法、高斯判别分析、朴素贝叶斯、Laplace平滑——斯坦福ML公开课笔记5
转载请注明:http://blog.csdn.net/xinzhangyanxiang/article/details/9285001 该系列笔记1-5pdf下载请猛击这里. 本篇博客为斯坦福ML公开 ...
- 【cs229-Lecture5】生成学习算法:1)高斯判别分析(GDA);2)朴素贝叶斯(NB)
参考: cs229讲义 机器学习(一):生成学习算法Generative Learning algorithms:http://www.cnblogs.com/zjgtan/archive/2013/ ...
- Stanford大学机器学习公开课(五):生成学习算法、高斯判别、朴素贝叶斯
(一)生成学习算法 在线性回归和Logistic回归这种类型的学习算法中我们探讨的模型都是p(y|x;θ),即给定x的情况探讨y的条件概率分布.如二分类问题,不管是感知器算法还是逻辑回归算法,都是在解 ...
- 生成学习算法(Generative Learning algorithms)
一.引言 前面我们谈论到的算法都是在给定\(x\)的情况下直接对\(p(y|x;\theta)\)进行建模.例如,逻辑回归利用\(h_\theta(x)=g(\theta^T x)\)对\(p(y|x ...
- 斯坦福《机器学习》Lesson5感想———1、成学习算法
在前面几课里的学习算法的思路都是给定数据集以后.确定基于此数据集的最佳如果H函数,通过学习算法确定最佳如果H的各个參数,然后通过最佳如果函数H得出新的数据集的结果.在这一课里介绍了一种新的思路,它的核 ...
- 挑子学习笔记:DBSCAN算法的python实现
转载请标明出处:https://www.cnblogs.com/tiaozistudy/p/dbscan_algorithm.html DBSCAN(Density-Based Spatial Clu ...
- 【笔记】MAML-模型无关元学习算法
目录 论文信息: Finn C, Abbeel P, Levine S. Model-agnostic meta-learning for fast adaptation of deep networ ...
- 强化学习-学习笔记7 | Sarsa算法原理与推导
Sarsa算法 是 TD算法的一种,之前没有严谨推导过 TD 算法,这一篇就来从数学的角度推导一下 Sarsa 算法.注意,这部分属于 TD算法的延申. 7. Sarsa算法 7.1 推导 TD ta ...
随机推荐
- 《ECMAScript6标准入门》第三版--读书笔记
2015年6月,ECMAScript 6正式通过,成为国际标准.尽管在目前的工作中还没有使用ES6,但是每项新技术出来总是忍不住想尝尝鲜,想知道ES6能为前端开发带来哪些变化?对自己的工作有哪些方面可 ...
- 基于MD5的增强型摘要算法
message-digest algorithm 5(信息-摘要算法),md5的长度,默认为128bit,也就是128个0和1的二进制串.但是,这样表达是很不友好的,所以将二进制转成了16进制,每4个 ...
- Git仓库初始化与推送到远端仓库
以下命令为Git仓库初始化,添加远端代码托管仓库,以及推送到远端仓库的命令. 以 "github.com"为远端仓库做示例 # Git 库初始化 git init # 将文件添加到 ...
- beego快速入门
beego的官方网址:https://beego.me 参考文档:https://beego.me/quickstart 1:安装 您需要安装 Go 1.1+ 以确保所有功能的正常使用. 需要已经设置 ...
- 解决:Determining IP Information for eth0...问题
环境:Centos 6.2 VMWare Workstation 7.1.2 故障现象: 在虚拟机中启动Centos,在启动页面中停留在Determining IP Information ...
- innodb_locks_unsafe_for_binlog分析
mysql数据库中默认的隔离级别为repeat-read. innodb默认使用了next-gap算法,这种算法结合了index-row锁和gap锁.正因为这样的锁算法,innodb在可重复读这样的默 ...
- extern “C”的作用详解
extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码.加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C+ ...
- 4星|《行为设计学:掌控关键决策》:影响决策质量的四大思维陷阱及WRAP应对法
行为设计学:掌控关键决策 两位作者认为,有四大思维陷阱让人做出错误的决策:思维狭隘.证实倾向.短期情绪.过度自信.两位作者提出WRAP决策流程来应对:Widen your options(拓宽选择空间 ...
- gdb调试:
1 简介 GDB(GNU Debugger)是GCC的调试工具.其功能强大,现描述如下: GDB主要帮忙你完成下面四个方面的功能: 1.启动你的程序,可以按照你的自定义的 ...
- C++第七次作业
关于计算器项目的总结: 一.就目前完成的计算器,包括界面的实现这部分,总体实现了简单计算的功能,但仍有很多不足之处: 需改进完善之处:1.关于界面可再优化: 2.界面放大时,无法自动聚焦(按钮等控件无 ...