总览-对CS236课程Lecture 3的整理
·

-
从将逻辑回归作为自回归模型入手
- 以黑白图片为例,xn是指图片中的每个像素,xn要么为0,要么为1,符合伯努利分布,假设为1概率为
;
- 其概率分布为:
,再取对数;
- 模型的损失函数就是
的负对数即
,也称为二元交叉熵;
- 逻辑回归的模型是对样本进行线性变换后使用sigmoid激活,,假设线性变换的斜率为a0,偏置为a1,那么对下一个像素
的预测就是
,其中
就是sigmoid函数;
- 上面对
像素的预测只关联了
,这还不够,应该需要关联
,因此进行优化
,其中n表示编号,不是次方;
其实只进行了一次线性变换和一次非线性变换(sigmoid),这是不足以描述清楚像素点之间的复杂关系的,因此再次优化,使用深层的神经网络替代逻辑回归,众所周知一般神经网络层数越深,能够表达联系的复杂度越高。
- 以黑白图片为例,xn是指图片中的每个像素,xn要么为0,要么为1,符合伯努利分布,假设为1概率为
-
优化为神经网络作为自回归模型
- 神经网络其实就相当于多层逻辑回归叠加的,只不过除了输出和输入层,其他的称为隐藏层,但是每层都相当于一次逻辑回归,隐藏层
,其中
和
都是要要学习的参数,那么生成
的公式为
,其中
和
也是需要学习的参数,至于最后生成0还是1就按
=
进行抽样,这个模型就叫NADE;
- 但是这个模型有个问题,只能处理离散值,那怎么处理连续值呢?
- 神经网络其实就相当于多层逻辑回归叠加的,只不过除了输出和输入层,其他的称为隐藏层,但是每层都相当于一次逻辑回归,隐藏层
-
优化为RNADE作为自回归模型
- NADE只能处理离散值的原因主要是像素使用伯努利分布,要想处理连续值的情况,就将伯努利分布修改为高斯分布,输出也是输出μ和
而不是
,生成像素的时候就按N(μ,
)进行抽样;
- 这个模型也存在问题,比如训练时必须串行,因为
依赖前面的隐藏层,没法并行;它们各个隐藏层的参数不是共享的,比如
层的参数是
和
,这对性能和内存都有挑战;
- 还有个问题是顺序固定,比如算x9的分布的时候,必须要x1到x8的分布的数据和学习到的参数,这是硬编码,如果把x9和x3位置互换就不知道怎么算了,它不能动态调整使用x2和x1的参数去生成x9的分布(x3的分布就是依赖x2和x1生成的);
- NADE只能处理离散值的原因主要是像素使用伯努利分布,要想处理连续值的情况,就将伯努利分布修改为高斯分布,输出也是输出μ和
-
因此又引入了MADE算法作为自回归模型

- 首先输入参数,MADE是直接把整幅图x1到xn一次性输入,并行处理后一次性输出,他能这样做的原因就是掩码功能,中间的隐藏层都是使用了掩码来决定这层处理哪几个输入,比如隐藏层的某个节点掩码是2,那它只处理标号小于等于2的,最后的输出层也是有标号的,比如标号3那就是依赖2号和1号,标号1就都不依赖,即便x9和x3换了顺序,只要把掩码也交换了,是不影响输出的;
- 但是MADE也存在问题,如果图像维度是1024甚至4096,为了较好的表达能力,H维度一般也比较高比如512、1024等,它的权重矩阵维度又是D×H,D越大,这个权重矩阵的数据量是线性增长的,太贵了;
-
因此后来使用RNN的更多
- RNN模型图:
- RNN参数是固定的,分别是W_hh、W_hy和W_xh,W_xh将独热编码压缩后转为向量编码,独热编码最大也就26个字母,再压缩一下就更小了,W_hh维度与向量编码维度一致也不大,最后的W_hy也是看输出种类,如果是英文字母也才26个,而且W_hh、W_hy和W_xh,W_xh不会因为输入变多而维度变大,权重参数维度是固定的,绿色隐藏层到输出层也许省了几层MLP,不过也影响不了大局;
- 但是问题又回到了以前,训练和生成串行的问题,速度太慢了;
- RNN模型图:
- 下篇文章再见分晓
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)