10X单细胞(10X空间转录组)基础知识之AutoEncoder(自编码器)

hello,五一不知道大家去哪里玩了?卑微的我居然连回太原的票都没买到,伤心了,但是呢,五一既然是劳动节,我们还是要劳动一下的,今天我们来分享一些基础知识---AutoEncoder(自编码器),这个在很多单细胞软件中很常见,常用来做单细胞数据的降噪和细胞定义,我之前分享的文章10X单细胞(10X空间转录组)聚类分析之scDCC也提到过这个内容,今天我们就来学习一下基础,看看什么是自编码器,又是如何运用的。

AutoEncoder是深度学习的另外一个重要内容,并且非常有意思,神经网络通过大量数据集,进行end-to-end的训练,不断提高其准确率,而AutoEncoder通过设计encode和decode过程使输入和输出越来越接近,是一种无监督学习过程。

Autoencoder

autoencoder是一种无监督的学习算法,主要用于数据的降维或者特征的抽取,在深度学习中,autoencoder可用于在训练阶段开始前,确定权重矩阵WW的初始值。

神经网络(关于神经网络之前或多或少提到过,有机会我们来认真分享一篇关于神经网络的文章)中的权重矩阵WW可看作是对输入的数据进行特征转换,即先将数据编码为另一种形式,然后在此基础上进行一系列学习。然而,在对权重初始化时,我们并不知道初始的权重值在训练时会起到怎样的作用,也不知道在训练过程中权重会怎样的变化。因此一种较好的思路是,利用初始化生成的权重矩阵进行编码时,我们希望编码后的数据能够较好的保留原始数据的主要特征。那么,如何衡量码后的数据是否保留了较完整的信息呢?答案是:如果编码后的数据能够较为容易地通过解码恢复成原始数据,我们则认为WW较好的保留了数据信息。

例如下图所示,将手写数字图片进行编码,编码后生成的 ϕ1ϕ1, ϕ2ϕ2, ϕ3ϕ3, ϕ4ϕ4, ϕ5ϕ5, ϕ6ϕ6 较完整的保留了原始图像的典型特征,因此可较容易地通过解码恢复出原始图像。

图片.png

autoencoder通过神经网络进行预训练,从而确定WW的初始值。其目标是让输入值等于输出值。如下图所示:首先用WW对输入进行编码,经过激活函数后,再用WTWT进行解码,从而使得h(x)≈xh(x)≈x。该过程可以看作是对输入数据的压缩编码,将高维的原始数据用低维的向量表示,使压缩后的低维向量能保留输入数据的典型特征,从而能够较为方便的恢复原始数据。需要注意的是:这里增加了一个约束条件,即在对数据进行编码和解码时,使用的是同一个参数矩阵WW。该约束可看作是一种regularization,用于减少参数的个数,控制模型的复杂度。

图片.png

对于多层神经网络的参数初始化问题,我们可以依次对每一层进行autoencoder。如下图所示,具体做法是首先按照上述方法确定第一层的权重参数,然后固定第一层的参数,对第二层的参数进行训练,以此类推,直到得到所有权重值。


图片.png

由上面的内容我们知道, AutoEncoder包括两个过程:encode和decode,输入图片通过encode进行处理,得到code,再经过decode处理得到输出,有趣的是,我们控制encode的输出维数,就相当于强迫encode过程以低维参数学习高维特征,这导致的结果和PCA类似。
AutoEncoder的目的是使下图中的输入x和输出x_head越相似越好,这就需要在每次输出之后,进行误差反向传播,不断优化。

图片.png

高维数据对于我们的感官体验总是不友好,如果我们将输入降低至二维,放在二维平面中就会更加直观,下图是MNIST数据集做AutoEncoder:

图片.png

上面是PCA的结果,下面是AutoEncoder的结果,在二维中结果很清晰。

encode和decode两个过程可以理解成互为反函数,在encode过程不断降维,在decode过程提高维度。当AutoEncoder过程中用卷积操作提取特征,相当于encode过程为一个深度卷积神经网络,好多层的卷积池化,那么decode过程就需要进行反卷积和反池化,那么,反卷积和反池化如何定义呢?

关于卷积和池化的知识大家可以参考我的文章10X空间转录组与卷积神经网络(CNNs)

图片.png

Unpooling

池化过程实际上就是降维过程,假设图片大小为32x32,池化大小为2x2,就相当于将图片中相邻的2x2个像素点替换为四个点中最大数值(max-pooling),池化处理之后得到的图片大小为16x16,Unpooling过程则需要将16x16的图片变为32x32,其实在池化过程中,会标记2x2像素点中最大值的位置,在Unpooling过程将最大值还原,其他位置填0。

image

以上并不是Unpooling的唯一做法,在Keras中,不会记住最大值的位置,而是将所有像素均以最大值填充。

Deconvolution

卷积过程是一个矩阵在另一个矩阵上面做滑动运算,反卷积也是一样,实际上,反卷积就是卷积,看下面的图,我们熟悉的是左面的卷积过程,假设有5个像素点,卷积核为3,步长为1,卷积之后生成3个feature,我们想象中的反卷积应该是中间所示的情形,由3个输入生成5个输出,如果我们将反卷积中的输入做2的padding,这样原本3个输入变成7个输入,再做卷积,生成5个输出,对比左右两侧的图,是完全相反的,所以,我们加上padding,使反卷积变成了卷积运算。

image

De-noising AutoEncoder

对于AutoEncoder,每一次的训练都是自身的对比,这回造成输出和输入越来越类似,而对同种类的其他图片表现不敏感,于是,De-noising AutoEncoder派上了用场,如下图所示,在输入之前,先将图片加入随机噪声,这样每次的输入都会略有差异,然后将带有噪声的图片进行AutoEncoder,将输出的y与加噪声之前的图片进行比较,这样训练出来的y就具有抗噪声的能力,在以图搜图的场景下也就提高了泛化能力。

image

AutoEncoder在单细胞数据中的运用

借助一篇文献来实现分享,问文献在Single-cell RNA-seq denoising using a deep count autoencoder,2019年发表于NC,当然还有很多其他的文章也提到并运用了AutoEncoder,感兴趣的同学可以多多学习。

简介

文章主要介绍了一种使用DCA对单细胞count数据进行降噪,其中自编码器的loss设计是本篇文章的亮点。作者认为(现有很多文章也进行过论证)single cell数据服从Zero Inflation Negative Binomial(ZINB) 零膨胀的负二项分布。而本篇文章的创新点也正是将ZINB和NB设计成为loss函数。

背景介绍

单细胞RNA测序(scRNA-seq)使研究人员能够以细胞分辨率研究基因表达。然而,由于扩增和丢失引起的噪声可能阻碍分析,因此需要可扩展的去噪方法来获得越来越大但稀疏的scRNA-seq数据。我们提出深度计数自动编码器网络(DCA)来对scRNA-seq数据集进行去噪。
低RNA捕获率导致检测到表达基因失败,导致“假”零计数观察,定义为丢失事件。重要的是要注意“假”和“真”零计数之间的区别。真零计数表示基因在特定细胞类型中缺乏表达,因此真正的细胞类型特异性表达。因此,并非scRNA-seq数据中的所有零都可以被视为缺失值。在统计中,通常估算缺失的数据值。在此过程中,缺失值将随机或通过适应数据结构替换值,以改进统计推断或建模。由于真零假计数之间的非平凡区别,具有定义的缺失值的经典插补方法可能不适合scRNA-seq数据。

我们假设数据源自无噪声数据流形,代表潜在的生物过程和细胞状态。然而,像成像(图像分析)或测序这样的测量技术会产生这种流形的破坏表现。

DCA使用具有或不具有零膨胀的负二项式噪声模型来考虑数据的计数分布,过度离散和稀疏性,并且捕获非线性基因 - 基因依赖性。我们的方法与细胞数量成线性关系,因此可以应用于数百万个细胞的数据集。我们证明DCA去噪使用模拟和真实数据集改进了一系列典型的scRNA-seq数据分析。
方法

1. Noise model

零膨胀的负二项分布(ZINB) 模拟的scRNA-seq数据都是高度稀疏且过度分散的count值。ZINB包括两部分:一部分是在0点处的冲激函数,代表有数据中过多的0值;另一部分是非零点的负二项分布。对于scRNA-seq数据,在0点处的point mass点质量函数可以捕获数据中的丢失事件,而负二项部分模拟数据中的非dropout值。

NB和ZINB函数如下所示:

图片.png

π代表该点质量函数的权重,mu代表负二项分布的均值,θ代表该分布的离散程度。

2.模型结构

图片.png

DCA: deep count autoencoder,首先该模型的基础是自编码器。模型一共五层,节点个数分别为X-64-32-64-X. X是从上万的基因中找到的高表达基因。

与普通的神经网络模型不同,该模型没有训练样本之间的差异(loss用MSE等函数表示),而是通过输入的样本训练每个基因的ZINB分布参数(如图中output层所示,训练每个基因的μ、θ、π参数)

关于这个,我们了解即可,不必深入。

生活很好,有你更好

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342

推荐阅读更多精彩内容