大部分内容来自《神经网络与深度学习》
第8章 注意力机制与外部记忆
1 这些都是为了减少计算复杂度嘛? 那么局部连接、权重共享以及汇聚操作这三种操作在减少复杂度的同时,又有什么性能保证呢?就是会损失什么?模型压缩也是。
2 还有别的减少计算复杂度的东西吗? 模型压缩,那我们看看作为一个神经网络来说,什么地方是最需要时间的? 我们进行下神经网络的时间或者空间复杂度分析
https://zhuanlan.zhihu.com/p/31575074
这篇博客讲了CNN的时间、空间复杂度分析。好像就是依据神经元个数、神经元层数、计算标准来决定的。
那自然为了减少复杂度可以从这个入手,但是还可以借鉴生物神经网路的特点来做,这需要一部分脑科学的知识。分析大脑每个部分的机制,进而设计出相应的数据流通结构。
3
8.1 认知神经学中的注意力
一个和注意力有关的例子是鸡尾酒会效应. 除非特别声明,在本节 及以后章节中,注意力 机制通常指自上而下 的聚焦式注意力. 当一个人在吵闹的鸡尾酒会上 和朋友聊天时,尽管周围噪音干扰很多,他还是可以听到朋友的谈话内容,而忽 略其他人的声音(聚焦式注意力).同时,如果背景声中有重要的词(比如他的 名字),他会马上注意到(显著性注意力).
8.2 注意力机制
1 如果你来设计注意力,你怎么设计?
我就会设定一个额外的参数,这个参数指导模型关注跟任务相关的更重要的区域或者地方。
2
我们可以将最大汇聚(Max Pooling)、门控 (Gating)机制近似地看作自下而上的基于显著性的注意力机制.
其步骤可分为在所有输入信息上计算注意力分布,然后根据分布来计算输入信息的加权平均。
是不是判断数据中决定结果最直接的特征(随机变量)分布,然后根据分布来得到一个加权平均的参数。其实也就是对应每个特征的参数吧?那么问题来了,是否可以直接用神经网络得到注意力的概率分布及其参数?
过程大致就是首先得到一个和任务想关的向量,然后计算训练集中,与之相关的其他所有向量。相关性计算需要依靠注意力打分函数实现,有下列四种
这个公式好像VAE中的隐变量,不过这个隐变量变成了每个特征都有的一个参数,在VAE中,隐变量数目不定。可以任意指定。
8.2 注意力机制的变体
8.3 自注意力模型
对于想要处理长距离依赖关系的数据来说,可以通过增加网络层数或者使用全连接网络来做。
但是处理变长的输入序列,可以用自注意力模型来做。不同的输入长度,其连接权重的大小也是不同的. 自注意力也称为内 部 注 意 力(IntraAttention). 这时我们就可以利用注意力机制来“动态”地生成不同连接的权重,这就是自注意力模型(Self-Attention Model).
1 自己给自己打分,就可以处理变长输入? 就是前面的注意力的查询向量来自于任务,这里的查询向量来自于本身数据的线性变换。为什么对输入序列都线性映射到三个不同空间,得到查询向量、键向量、值向量,这三个向量为啥都是线性变换?这三个向量如何选取?你变换的衡量标准是什么?或者说变换的目的是什么?是为了将原输入变成一个符合神经网络输入格式的数据?
它的特点就是Q=K=V,
2 这样真的可以吗? 值向量和打分之后的矩阵相互干什么得到一个什么??? 根本没有解释啊?
查询向量和键向量做一个相关性计算,然后得到相关性,就可以把这个相关性直接归一化赋予输入每个特征不就可以了?也就是很多时候输入X=键K=值V,可能是为了加入神经网络吧。
给定一个和任务相关的查询Query向量 q,通过计算与Key的注意力分布并附加在Value(key)上,从而计算Attention Value,
3
8.5 记忆增强神经网络
参考:
https://zhuanlan.zhihu.com/p/37601161
张俊林博士对于注意力机制的详解
《深度学习与神经网络》书籍
第9章 无监督学习
9.1 无监督特征学习
直观理解:
1 利用线性代数的知识把一堆数据变成更精简的表示。这其实就有几个问题, 原始数据是什么样子? 压缩的指标是什么? 概率密度分布可以压缩嘛(原本是符合p(x)的分布的,然后变成压缩版的p(x)’的),能否有压缩的参数呢? 或者有像熵一样的东西衡量压缩之前和压缩之后的信息熵距离? 如何表示一堆数据的信息量,好像跟数据压缩有关系?
2 有数据压缩,还有模型压缩,还有概率密度压缩(只有用简单的分布去近似(比如多个高斯分布之和),没听过概率密度压缩。),(未知分布怎么用标准分布近似?)也就是GAN的思想了。
那为什么在有GMM的时候,我们总是假设先确定其中一个高斯分布,再从中抽取呢? 因为真实的数据,不管有便签还是无标签,但是我们都默认每个数据都是有标签的,这就对应它属于那个高斯分布,先选择那个高斯分布,再从里面抽取样本是可以这么假设的。 那我们说一堆数据假设符合GMM高斯分布是什么意思呢?其总体密度函数为多个高斯密度函数的加权组合。这个GMM就是一个复杂分布,参数就是多个高斯分布的参数。不要混淆多个高斯分布相加(卷积)和混合高斯模型和多维高斯分布。三个是不同的概念。
3 为什么会有高斯混合模型?凭什么用它比较多?
就是理论上高斯混合模型可以任意拟合P(x),就是数据集的分布。
3 机器学习的特征工程都是干这个事情的,那么深度学习自动把这个事情做完了。
基础知识:
1 什么是高斯混合模型?
首先什么是二维高斯分布?
https://blog.youkuaiyun.com/lin_limin/article/details/81024228
对于二维高斯分布中的协方差矩阵,协方差首先是衡量两个随机变量的相似度,二维中,协方差就有用处了,比如多维正态(高斯分布),其概率密度函数为
其协方差矩阵为的是
然后什么是混合高斯模型?
https://blog.youkuaiyun.com/lin_limin/article/details/81048411 这个解释的很好
从这个里面,我感觉到了一点隐变量的味道,这个k不就是我们求解EM算法所加入的变分函数,同时也是也隐变量吗?
思考:
1 GMM出现就是为了拟合数据的分布P(x)。所以,混合高斯模型并不是什么新奇的东西,它的本质就是融合几个单高斯模型,来使得模型更加复杂,从而产生更复杂的样本。理论上,如果某个混合高斯模型融合的高斯模型个数足够多,它们之间的权重设定得足够合理,这个混合模型可以拟合任意分布的样本。它有更复杂更多变的概率密度函数曲线。理论上,混合高斯模型的概率密度函数曲线可以是任意形状的非线性函数。
* 那我可不可以学习这里的混合高斯分布的参数呢? 用神经网络学习这里的隐变量k和均值和方差。
2 用混合高斯模型拟合数据集也是情由可缘的,那么很自然,如何求解GMM模型,就可以使用引入隐变量的形式,但是发现太难求了。于是用EM算法
2 两个高斯分布相乘是什么?
代码:
https://developer.ibm.com/zh/technologies/analytics/articles/ba-lo-machine-learning-hands-on7-gmm/
手把手教你实现一个高斯混合模型
9.1.1 主成分分析
不想看了,虽然不是特别懂。但是其还是通过线性代数的空间转换做到的,就是使得转换后的数据之间方差最大。
9.1.2 稀疏编码
1 居然还有参数控制学习到的特征程度?就是控制学习的深度或者广度。
2
9.2 概率密度估计
直观理解:
就是是基于一些观测样本来估计一个随机变量的概率密度函数。
问题:
1 最简单的就是直接估计样本训练集来自的所有样本的P(x)吧?
1.1 知道它是什么分布,参数是多少?
用最大似然估计或者带有因变量的EM算法。还有别的方法吗?
1.2 不知道的话,如何用普通分布去拟合它?
GAN这样的,用判别网络去判断生成的对不对,生成网络从要给最简单的网络经过判别网路的对抗训练得到样本。但是没有隐变量,不知道可以生成别的样本好像,只能尽可能和还原真实样本,不能得到别的。
1.3 如何判断你得到的p(x)是不是真实数据来自的数据集符合的分布P(x),
* GAN直接用判断网络让生成样本和真实样本,用损失函数,VAE也是一样的,但我觉得有问题,就是你怎么知道你拿到的就是真实的P(x),除非你这样,
你从真实样本中得到一个P(x)和你生成的样本中得到一个P(x’),这两个概率密度函数在某个指标下是相等的。我才能相信。或者说,你分类别后,它们在各自的类别中的P(x)和P(x‘)在某个指标下是相似的。
*
2 为什么我们要估计原始数据集分布?为什么要得到其概率密度函数?
2.1 为了基于这个分布生成什么?
生成真实样本,那我们就从数据中得到了其方程式对吧?这个在无监督中特别重要,无监督因为没有标签,所以很难用神经网络去训练,所以无监督的聚类或者什么的,都非常的需要能够得到其概率分布,这样就可以从无监督中学习了。
深度学习本质也是源自数理统计的。
所谓的特征,无非就是以观察数据为自变量的一个函数,这么一看这个概念是不是还挺眼熟?统计量(Statistic)不也是样本数据的一个函数么?如果把问题变成统计量是不是服从一个特定的分布来理解,是不是这个问题一下子就变得没那么绕了?
我个人的理解是:这个特定的分布存在也不存在。
最经典的中心极限定理告诉我们,独立随机变量的样本均值标准化后依分布收敛于标准正态分布。这里的样本均值就是一个非常简单的特征,它渐进地满足一个特定的分布。从这个角度说,这个特定的分布是存在的。但反过来看,哪怕对于简单的特征,这么漂亮的性质到现在大家也没找到几个,可见严格地找到这种分布有多难,从这个角度来看,要找出深度学习提取的特征满足什么样的一个分布,几乎是一个不可能的任务。
既然不行,那大家就去猜,标准正态性质很好,那我们就猜这些特征应该满足这样的分布。Batch Normalization也好,VAE也好,GAN也好都是基于这样的假设作出的优化,效果也还不错。至于真实的分布是什么样的?我们近似的分布和真实的分布相差有多远?除了标准正态还有哪些假设是合理的?这些都是有趣也值得去思考的问题。
作者:语冰
链接:https://www.zhihu.com/question/302316420/answer/568894152
来源:知乎
2.2 VAE的设计也是来自于一个事实:其最重要的idea是基于一个令人惊叹的数学事实:对于一个目标概率分布,给定任何一种概率分布,总存在一个可微的可测函数,将其映射到另一种概率分布,使得这种概率分布与目标的概率分布任意的接近。
9.2.1 参数密度估计
比如正态分布、多项分布的参数密度估计,这些都是假设数据符合某个分布,然后直接带入解析式,然后求偏导,可得参数。
二维高斯分布来源都不知道。。。知道了
9.2.2 非参数密度估计
1 如何不显式的得到p(x)的分布,又能够生成p(x)的数据呢?2 如何排列我们的数据集来得到其P(x)呢?
9.2.2.1 直方图方法
9.2.2.2 核方法
第10章 模型独立的学习方式(其实就是一些套路吧?)
首先设想标准的机器学习: 针对给定任务、准备一定规模的训练数据,训练数据和真实数据分布一致,设定一个目标函数和优化方法。在训练数据上学习一个模型。
但是现实呢?就是破坏或者损坏机器学习问题条件,在此情况下,再次解决机器学习问题,有
1 不同任务的模型都是从0开始训练的,可不可以把A任务学习到的知识用在B任务上? 迁移学习
2 训练数据和目标数据分布不一致,训练数据过少?
3 一个模型快速适应新任务?
10.1 集成学习
1 这是一个简单的模型组合方法,利用加权平均的方法来集成学习。但是有问题了, 该选择那些可以解决该问题的模型? 这些模型以什么样的方式集成起来? 如何评判集成效果指标?要是我,怎么做?1 借鉴模型压缩的各种思想,把每个模型都当成特征一样的东西,对某一个特定任务,进行特征取舍。参考无监督学习中的特征学习方式,那其实注意力机制和PCA都可以试试看。模型也当成某种特殊的特征,天生的,某种模型就适合搞定某种任务。把模型对特定任务训练好之后,直接让其成为数据集的某个特征。2 量化模型,把模型当成一维向量,然后利用PCA,让其每个维度之间方差最大。选择最靠前的几个模型,3
它利用各个基模型的差异尽可能大为指标来集成各个模型,感觉有点像PCA的思想。
集成学习的理论基础
1 这个公式的满足假设有1,2,3,我们关注于这个错误率的分析产生。是怎么得到的这个错误率分析的,感觉妙手偶得之。
能改进的地方有
1 三个假设的任意变动,
2 用更紧的公式替代hodeffing公式。
3 还有就是怎么可以说每个基分类器的错误率是相同的呢? 这样的假设直到推导出X服从二项分布,未免很勉强。 那么如果每个基分类器的错误率是不同的,一定是二项分布的,因为每个基分类器,不是分类成功就是失败,没有别的。
其实,这里的话,只要X服从某种分布,那么就可以用hoeffding不等式的,所以服从啥分布不太重要,或许可能用神经网络拟合这个分布?那就不能用这个不等式了。
4 这里有套用hodefing公式嫌疑,其是测量随机变量之和和其期望之间距离上界。然后基础分类器之和,判断其是二项分布,然后只要一半的对就判断其对。
5 可不可以做扩展呢? 比如多分类的问题。还是一样的。不用考虑了,二分类的分布是二项式的,多分类的分布是多项分布,hodefing照样用。
6 那这个集成学习也可以加入注意力模型啊,总有些分类器的性能一直很nice,然后注意力一下。
2 在概率论中,霍夫丁不等式给出了随机变量的和与其期望值偏差的概率上限。
1 这个不等式可不可以用在单个机器学习算法上?就是n个样本。其中每次都取一半特征的预测结果作为预测结果。样本量越大,自然错误率越低。hh
参考:
https://zhuanlan.zhihu.com/p/59121403
https://zhuanlan.zhihu.com/p/143957355
关于集成学习错误率的理论分析(hoeffding不等式等)
Bagging类方法(民主)
1 这样就可以让每个基模型的方差更大吗?目前知道有boostrap方法来抽取k个小数据集训练k个分类器。 还有其它的采样方法使得基模型的组合更好吗?
通过bootstrap抽样方法从原始数据集中抽取k个数据集。
那么boostrap的原理是
其过程为: 设我们从训练样本中抽样出N个子集,然后用它们分别训练N个基础模型。
- 在训练数据个数为X的数据集中,随机抽取m个样本集(基本分类器C训练结束后将这些样本放回)
- 通过对随机抽取出来的m个样本集进行训练,形成一个误差较小的基本分类器C1
- 对基本分类器C1赋予权重W1
- 回到步骤1,重新进行抽取m个样本,最后将各个分类器按照一定的权重进行线性叠加,形成一个由基本分类器组成的强分类器
随机森林方法(民主)
Boosting类方法 (精英)
10.1.1 AdaBoost算法
具体说来,整个Adaboost 迭代算法就3步:
- 初始化训练数据的权值分布。如果有N个样本,则每一个训练样本最开始时都被赋予相同的权值:1/N。
- 训练弱分类器。具体训练过程中,如果某个样本点已经被准确地分类,那么在构造下一个训练集中,它的权值就被降低;相反,如果某个样本点没有被准确地分类,那么它的权值就得到提高。然后,权值更新过的样本集被用于训练下一个分类器,整个训练过程如此迭代地进行下去。
- 将各个训练得到的弱分类器组合成强分类器。各个弱分类器的训练过程结束后,加大分类误差率小的弱分类器的权重,使其在最终的分类函数中起着较大的决定作用,而降低分类误差率大的弱分类器的权重,使其在最终的分类函数中起着较小的决定作用。换言之,误差率低的弱分类器在最终分类器中占的权重较大,否则较小。
有点注意力机制的意味,基于之前模型不太好的地方,重点关注。它有着几个问题,对样本和弱学习器都有权重更新。
1. 如何计算学习误差率e
2. 如何得到弱学习器权重系数 α
3. 如何更新样本权重D
4. 使用何种结合策略
算法本身:
网络上的算法步骤
理论基础:
整理一下逻辑就是:
1 直觉上 ,进行分类器的串行。发现其目标函数是一个加性模型,需要进行迭代得到损失函数最小。其中有am和Gm两个参数在损失函数中。
2 其中Gm的最优解通过这一代的参数和这一代的错误率乘积得到,而影响它就只能更新参数是Wm,i,而它与前一代有关系。所以算法得有更新Wm,i的一步。
am最优解是误差率em得到。而影响它就只能更新参数是Wm,i,而它与前一代有关系。所以算法得有更新Wm,i的一步。所以需要首先得到误差率em,然后计算该分类器权重,然后再更新样本权重(直接利用加性模型)。
总和得到,这里的Wm,i首先必须是初始化,然后在算法1到m个分类器中的最后一步更新。然后再用新的Wm+1,i带入。
思考的地方
1 这本质一种迭代算法来减少损失函数值的方法,有点像随机梯度下降,但是区别在哪里呢?
区别在于这里可以直接通过对目标函数求偏导直接更新参数,而不像神经网络,没有显式表达式,所以只能根据神经网络更新参数。是什么保证了它一定是一直递减的呢? 偏导为0处就可以最小值。单仅仅是当前固定Wm,i参数情况下的am参数直接赋值了。所以算法会长成那个样子
2
1 boosting比较看重模型集成本身,而a'da'Boost看重对错误样本重点照顾。adaboost是典型的直观感受支配算法步骤,进而进行理论分析典型。
2 其实adaboost 这种算法框架啊,就是把模型本身当成特征,其中某个模型的分类效果好,那么这个模型的权重上升,这不就是注意力吗?
参考:
https://zhuanlan.zhihu.com/p/61083714
知乎上写的比较好的adaboost算法详解
https://blog.youkuaiyun.com/v_JULY_v/article/details/40718799
知乎上写的比较好的adaboost算法详解
优快云上写的比较好的adaboost算法详解
https://zhuanlan.zhihu.com/p/59121403
北大硕士写的文章
10.2 自训练和协同训练
10.3 多任务学习
1 概率图模型
1 什么是概率分布?
想象我们正在自己的数据科学项目中构建感兴趣的预测模型:
-
如果我们想准确地预测变量,那么首先我们要了解目标变量的基本行为。
-
我们先要确定目标变量可能输出的结果,以及这个可能的输出结果是离散值(孤立值)还是连续值(无限值)。简单点解释就是,如果我们要评估骰子的行为,那么第一步是要知道它可以取 1 到 6 之间的任一整数值(离散值)。
-
然后下一步是开始为事件(值)分配概率。因此,如果一个值不会出现,则概率为 0%。
就是评估随机变量满足的函数关系(分布),那么各种函数(分布)就有自己的参数,只不过自变量是随机变量,因变量是概率。
2 一些定理一样的东西
如果样本满足某个未知的分布,那么通过一系列操作,它总是能变成正态分布。相反,标准正态分布的叠加与转换,也一定能变化为任意未知分布。从标准正态转换到未知分布,就是很多机器学习模型希望做到的,不论是视觉中的 VAE 或 GAN,还是其它领域的模型。
如何证明?
1 如果样本满足某个未知的分布,那么通过一系列操作,它总是能变成正态分布,标准正态分布的叠加与转换,也一定能变化为任意未知分布。这两者来说,前者需求量更大,因为正态分布好算,后者需求量比较小,但是也可以,VAE和GAN都是这种思想。
2 正态分布和均匀分布之间转换。https://blog.youkuaiyun.com/weixin_37895339/article/details/80380346
3 找不到资料。。。。
3 如何进行分布之间转换?
3.1 首先是一个各种分布公式上的变换
https://www.zhihu.com/search?type=content&q=分布转换
这个很好,总结了很多分布,及其如何产生
1 我还是不会各种分布的之间的联系。
3.2 一些转换为正态分布的方法
3.3 普通正态分布转为标准正态分布
- (1) 表示问题:对于一个概率模型,如何通过图结构来描述变量之间的依 赖关系.
- (2) 学习问题:图模型的学习包括图结构的学习和参数的学习.在本章中, 我们只关注在给定图结构时的参数学习,即参数估计问题.
- (3) 推断问题:在已知部分变量时,计算其他变量的条件概率分布
1.2 概率图的学习问题
利用EM算法解带隐变量的最大参数估计问题




EM算法是迭代求解最大值的算法,同时算法在每一次迭代时分为两步,E步和M步。一轮轮迭代更新隐含数据和模型分布参数,直到收敛,即得到我们需要的模型参数。
一个最直观了解EM算法思路的是K-Means算法。在K-Means聚类时,每个聚类簇的质心是隐含数据。我们会假设K个初始化质心,即EM算法的E步;然后计算得到每个样本最近的质心,并把样本聚类到最近的这个质心,即EM算法的M步。重复这个E步和M步,直到质心不再变化为止,这样就完成了K-Means聚类。当然,K-Means算法是比较简单的,高斯混合模型(GMM)也是EM算法的一个应用。
EM算法极大化似然估计推导


EM算法流程

自己推到的公式





1 对于上述推导而言,总而言之。* 1 EM算法的理论基础就是jensen不等式,借助这个不等式构造出原带隐变量的公式的下界。* 2 有了这个下界,我们可以固定初始化参数,求解q(z),让原公式等于这个下界。* 3 然后有了参数,和q(z),再做全观察变量的最大似然估计。提高这个下界,* 4 如此重复2,3步,我们就可以通过不断提高下界加证明其不断上升到收敛来达到原公式的局部最大值。2 一些问题* 那可不可以先用一个随机初始化标准分布q(z),来做第3步。再由这个求出来的参数,去干嘛的。好像不行,还是要这样做。* 有没有类似jensen不等式一样的东西,可以让这里公式3好求一点。或者说,神经网络能不能求这个?隐变量不就是隐藏神经元吗?* 固定参数求解q(z)用到变分推断,这个是怎么做到的?3 从信息论角度所解读出来的问题* 它是不用jensen不等式的,单纯用贝叶斯公式和KL散度来推导。那么E步是如何做到的呢?每次让KL散度为0.找到当前固定参数下的q(z)最优解。先验=后验分布。4 用EM解决高斯混合模型的时候,假设太强了吧。

1 在只有观察数据的情况,连数据的分布都要靠假设嘛?最经典就是假设多个高斯分布叠加的分布。2 假设完数据符合的分布后,为什么要设想数据由1> 首先依概率 αkαk 选择第 kk 个高斯模型 ϕ(y|θk)ϕ(y|θk);
2> 然后依第 kk 个分模型的概率分布 ϕ(y|θk)ϕ(y|θk) 生成观测数据。这样生成呢? 难道不是叠加的吗? 推翻了假设
一些抛出去的问题。

1 明明是要得到数据集的分布P(x),为什么这里说引入隐变量,它表示样本来自于那个高斯分布? 难道,这里的假设是所有的分类数据集,每个类别分别符合一个高斯分布?2
EM算法理解的九层境界
- EM 就是 E + M
- EM 是一种局部下限构造
- K-Means是一种Hard EM算法
- 从EM 到 广义EM
- 广义EM的一个特例是VBEM
- 广义EM的另一个特例是WS算法
- 广义EM的再一个特例是Gibbs抽样算法
- WS算法是VAE和GAN组合的简化版
- KL距离的统一
1 EM算法就是E+M,也就是隐变量的加入,使得传统最大似然估计用不了。只能够使用先初始化,然后再梯度下降法。
2 EM 是一种局部下限构造
3 第三层境界, K-均值方法是一种Hard EM算法
‘第四层境界,EM 是 广义EM的特例
通过前3层境界, 你对EM算法的理解要跨过隐变量, 进入隐分布的境界。 如果我们把前面的EM收敛证明稍微重复一下,但是引入隐分布。
第五层境界,广义EM的一个特例是VBEM
第六层境界,广义EM的另一个特例是WS算法
第七层境界,广义EM的再一个特例是Gibbs Sampling
第八层境界,WS算法是VAE和GAN组合的简化版
第九层境界,KL距离的统一
看不懂,
11.4 变分推断
1 当q(z)表达式好求的时候,这是什么时候,我想知道。
2 当q(z)表达式不好求的时候,我们可以考虑近似,就是用一个好的分布去近似推断,将其转化为一个优化问题,但是还是比较难,因为KL散度的两个对象都不明确,那可以利用EM算法的思路,最大化下界,来最小化KL。所以转为求解最大化下界。主要有平均场分布来解决。
3 居然还可以用神经网络去拟合q(z)使其达到q(z|x)。
参考:
2 采样
如果是我,我怎么解决这个问题?
1 只有样本数据集,假设这个数据集本身就是从某个数据分布P(x)中以某种方式抽取出来的,我们只有它? 那我们可以提出的问题有
1.1 如何得到p(x)。现在有VAE和EM算法和MLE
1.1.1 VAE是利用神经网络来拟合假设分布的参数,进而训练。
1.1.2 MLE就是最大似然估计,利用有显示表达式的解析解来做。
2 我傻了,采样其实是有P(x)表达式的。而采样刚好是个逆命题:给定一个概率分布p(x),如何生成满足条件的样本?
https://blog.youkuaiyun.com/bitcarmanlee/article/details/82795137
这篇博客说的很好,如何采集到符合某种不好描述的分布的样本呢?
其中有利用Box-Muller变换生成正态分布的随机数。
计算机可以精确采样的条件和不精确采样的方法。
采样的理论基础
1 变分推断也是,VAE和EM算法也是。估计参数的方法,但是所有的东西都是假设来的吧,比如你说数据是高斯分布的,然后进行参数估计,但是基本都不是啊。
但是可以先从简单的q(x)中采样,然后通过一些手段让其近似P(x)采样的结果?
2 采样也是一种估计p(x)的参数的方法嘛?好像不是,是在p(x)不好求的情况下,用采样法计算期望的。那能不能用来推断p(x)呢?
我们一般是给定样本,求p(x),而采样刚好是个逆命题:给定一个概率分布p(x),如何生成满足条件的样本?3 可不可以这样理解 ,前面的EM算法是为了估计数据的某个假设分布的参数,而采样推断在这个假设分布下,可以很好的做一个数据期望计算。但是如果没有EM算法来拟合假设分布,我们没有p(x)的表达式了,那假如我们想要用一个样本来表示整个数据集。那只能通过采样推断了对不对,就是采集符合p(x)分布的数据出来,构成期望(这一过程的背后理论依据是大数定律)。 那现在的问题不就成了拟合一个概率分布函数p(x)了吗?可不可以直接用神经网络拟合? 这部分又是一个问题,你得先假设某种分布,然后再拟合其中参数。那有没有什么神经网络构造可以拟合任何的概率分布函数呢? (构建类似万能近似定理的东西?)
4
2.1 拒绝采样
基本思想是通过用一个“较大的概率分布”覆盖住“较小的概率分布”,这个"较大概率分布"比较好采样(标准分布),同时以一定的概率接受这个从样本,接受的样本可以看作是从”较小的概率分布“中采样得到的样本
具体的步骤如下:
1.首先,确定常量k,使得p(x)总在kq(x)的下方。 p(x)的表达式是可以计算的。
2.x轴的方向:从q(x)分布抽样取得a。但是a不一定留下,会有一定的几率被拒绝。
3.y轴的方向:从均匀分布(0, kq(a))中抽样得到u。如果u>p(a),也就是落到了灰色的区域中,拒绝,否则接受这次抽样。
2.2 重要性采样
1 但是根本就是根据一个重要性权重抽取f(x)的某些重点按照q(x)采样而已,权重完全就没说。
引入一个分布q(x),还是求f(x)的期望。q(x)也是一种简单分布。
2.3 重采样方法
https://zhuanlan.zhihu.com/p/250146007
VAE中使用的方法重采样技术是为了反向传播。
2.4 马尔可夫蒙特卡洛方法

1 为什么拒绝采样和重要性采样会随着空间维数上升,效率低? 是计算还是什么?
2 在蒙特卡罗方法中,我们采集大量的样本,构造一个合适的概率模型,对这个模型进行大量的采样和统计实验,使它的某些统计参量正好是待求问题的解。
没有感受到MCMC采样的魅力????????
2.3.1 MH算法采样
第13章 深度生成模型
生成模型中需要解决的问题包括数据集的概率密度估计p(x)和采样有p(x)概率分布的样本。
但是前者可以有参数密度估计(假设符合某种分布,然后估计该分布参数)和非参数密度估计(直方图、核方法、k近邻方法),还有没有隐变量的参数估计(最大似然估计)和有隐变量的参数估计(EM算法)。但是也会碰到高维随机变量都不容易建模,需要一些条件独立性简化?
1 建模高维随机变量的P(x),需要条件独立性简化是什么意思?
后者想要采样得到符合p(x)概率分布的样本,可以有拒绝采样、重要性采样、马尔可夫蒙特卡洛采样。
上诉两个大问题的解决方案都没有用到神经网络,那么用了神经网络的话,我们可以针对求P(x)和采样有P(x)概率分布的样本有什么好的改进呢?
直接估计P(x)会有很多困难,所以我们可以考虑
为什么引入隐变量?
把一个复杂的问题通过有限的隐变量来表示,可以让原始问题更加容易解,并且得到的模型泛化能力更强。这个不够直观、不够抽象数学,不够具体化。
我迫切需要这三个东西出来理解隐变量。
下面两个书写时按照自编码器来编写的,有两个网络,但是挺生硬的,逻辑性不是很强。不好看
问题;
1 如何将采样确定成再参数化来进行梯度下降法?
2 为什么生成网络也是最大化证据下界,因为生成模型就是最大化ELBO,有了推断网络的z,但是这里我们是生成网络其表达式为P(z|x),所以带入ELBO需要一个先验分布,为了让其最大化,就变成了11式子,其对应的就是
得到推断网络的p(z|x)然后和标准正态分布计算KL,然后加上最小化x原始和x生成样本差距。
3 为什么说生成网络的目的也是找到参数最大化ELBO?
更准确地讲,生成网络是假设了Z服从某些常见的分布(比如正态分布或均匀分布),然后希望训练一个模型X=g(Z),这个模型能够将原来的概率分布映射到训练集的概率分布,也就是说,它们的目的都是进行分布之间的变换。一言以蔽之,Z的分布由推断网络指导加上生成网络来映射到训练姐概率分布P(x)。推断网络是辅助生成网络的。
4 单纯从公式看的话,我们要最大化ELBO,自然就有关于Z的先验分布式啥,如果生成模型是最大化P(x|z)的话,那么推断网络的P(z|x)自然就要靠近P(z)先验分布,等于的时候,我们就是单纯最大化P(x|z)了。也就是我们的目的达到了。也就是这个公式了
5 为什么P(z|x)是正态分布,而P(z)是标准正态分布?
原因可能是KL散度好计算一些,
6 VAE的生成逻辑,从概率图角度解读,可能好解读一点。
1 首先是为了计算p(x),发现难算,于是想要算
2 但是需要z隐变量的引入啊,但我们如何得到数据x对应的隐向量z呢?或者说如何计算后验概率p(z|x)呢? 那还能别的方法引入隐变量吗?什么叫做好的z隐变量呢?只能来自x吗?
根据贝叶斯,可以这个公式来算,但是P(x)根本不知道,上面的式子也是无法计算的,那只能够近似后验分布了。
上面的式子也有p(z)先验分布啊,近似后验分布是啥意思?直接用神经网络来得到是吗?也就是说神经网络就是用来得到P(z|x)和P(x|z)的对吧。
假设我们使用分布qλ(z|x)来近似后验分布P(z|x),那么我们利用KL散度让其最小
后来经过变换,我们发现最小化它,其实是最大化
这个式子,那么可以根据它来设计VAE的,其中上市右边第一项就是x原始和x生成之间距离,第二项就是推断网络的生成和先验分布的KL散度。
和相应的思考:
1 为什么引入隐变量?
感觉有点很牵强,是事实就是有个隐变量?还是这个隐变量就是我们构造出来的? 或者说这就隐变量就是一个特征?特征的一个分布?
2 在推导公式中难算的都交给神经网络,我们只做假设该分布,然后用神经网络近似该分布的参数事情。这一步如果可以改动过的话,就很好了。GAN就是没有显式的分布,但还是能采样出来生成样本。
3
2 对应的代码如何实现?
3
参考:
《神经网络与深度学习》
https://www.cnblogs.com/weilonghu/p/12567793.html
知乎上讲VAE的。
13.3 生成对抗网络
基础知识:
1 JS散度
2
思考:
1 VAE和GAN一个显示的利用概率图模型和贝叶斯推导指导一个模型去生成样本。一个隐藏的直接用一个简单分布输入到神经网络,直接利用神经网络强大的拟合能力去进行分布之间转换。
2
参考:
代码部分一个例子解释,但是还是有一个问题的。
第14章 深度强化学习
为什么有强化学习?
1 因为人工标注打标签昂贵,监督学习不好。比如我们通过监督学习来训练一个模型可以自动下围棋,就需要
将当前棋盘的状态作为输入数据 , 其对应的最佳落子位置 ( 动作 ) 作为标签 . 训 练一个好的模型就需要收集大量的不同棋盘状态以及对应动作. 这种做法实践 起来比较困难, 一是对于每一种棋盘状态 , 即使是专家也很难给出 “ 正确 ” 的动 作, 二是获取大量数据的成本往往比较高 . 对于下棋这类任务 , 虽然我们很难知道每一步的“ 正确 ” 动作 , 但是其最后的结果(即赢输)却很容易判断.因此,如果 可以通过大量的模拟数据,通过最后的结果(奖励)来倒推每一步棋的好坏,从而学习出“最佳”的下棋策略,这就是强化学习,最后的结果可以认为是标签,强化学习就是不断和环境交互做出选择,然后得到标签。和深度学习类似 , 强化学习中的关键问题也是 贡献度分配问题 [ Minsky , 1961 ] , 每一个动作并不能直接得到监督信息,需要通过整个模型的最终监督信 息(奖励)得到,并且有一定的延时性 .
第15章 序列生成模型
15.1 序列概率模型