看到公众号这篇推文 解读的很深入
https://mpweixinqqcom/s/7BqcpR1bMJaZHV408-sv6Q
染色质免疫沉淀后测序(ChIP-seq)是一种针对DNA结合蛋白,组蛋白修饰或核小体的全基因组分析技术。随着测序成本的降低,ChIP-seq已成为研究基因调控和表观遗传机制不可或缺的工具。在这篇文章中,我们对前面的内容做一个总结,分析下现阶段ChIP-seq存在着哪些需要注意的问题以及我们该如何更好地利用这项技术获得研究成果。
甲醛虽然是一种高度渗透的交联剂,但由于其反应活性仅限于胺,因此其交联效率较低;对哺乳动物细胞而言,其最大交联效率仅为1%。在DNA上停留时间短于5秒的蛋白无法用蛋白质交联。另外,甲醛还会导致许多其他无关蛋白质交联到DNA上,影响后续分析数据。有研究称,甲醛交联会触发DNA损伤应答机制,从而改变染色质组分,进而使ChIP结果产生偏向性。由于交联反应在加热和低PH的情况下会发生逆转,因此DNA与蛋白质的交联复合物的稳定性也是一个值得关注的问题。
根据有无甲醛交联步骤可将ChIP分为两种类型,一类是存在甲醛交联的ChIP,即X-ChIP(cross-linking and mechanical shearing ChIP);另一类是无交联存在的ChIP,即N-ChIP(native-ChIP);相较于X-ChIP,N-ChIP有很多优点:(1)高分辨率;(2)避免了甲醛交联带来的非特异性蛋白在DNA上的富集;(3)避免了甲醛交联对抗抗原表位的遮盖;(4)减少了样品损失。由于使用MNase,N-ChIP只适用于研究组蛋白修饰,不能用于转录因子研究。
常用的断裂酶是MNase,即微球菌核酸酶,它能够降解核小体连接区的DNA序列的核酸酶;MNase消化染色质可以释放出一个个独立的核小体。MNase酶解法具有一定的局限性:(1)偏向于切割A/T碱基位点,使得核小体A/T富集区域表达量低于真实情况;(2)MNase不能在核小体边界处精确切割,导致染色体的开放位置与真实情况存在差异;(3)MNase偏向于消化脆性核小体;(4)MNase获得的DNA片段相对较短,对后续样品的PCR扩增和检测带来了困难。
有研究认为,超声打断不如酶裂解法温和,而且由于打断的不均匀性,会导致测序结果背景噪音高,影响后续数据分析。在选择打断方式时,(1)如果所研究的蛋白质高丰度表达且与DNA结合紧密如组蛋白,那么样本无需交联,可使用酶解法;(2)若所研究的蛋白质表达丰度较低或与DNA结合不紧密如转录因子等,最好用交联试剂将样本进行固定,稳定蛋白质和DNA形态,这种情况用超声破碎最好。
ChIP-seq数据可对不同的细胞类型进行分析,利用这些细胞类型的信息来推断基因组动态信息或用一些实验数据来注释细胞类型的表观遗传学图谱。越来越多研究表明,表观遗传信息与基因表达和染色体构象高度相关,可用于预测基因表达情况和染色体构象。在本节中,我们简要介绍有关组蛋白修饰的ChIP-seq分析的高级应用工具。
通过ChIP-seq实验获得的表观遗传信息来定量推断基因表达水平,人们已经开发了各种基于机器学习的方法。例如,(1)将线性回归模型应用于启动子位点的组蛋白修饰富集,以预测CD4+T细胞中的基因表达;他们利用了19个组蛋白修饰,表明只需3个启动子位点修饰就足以模拟基因表达[1]。(2)运用非线性模型(如多元自适应回归线条(MARS)和随机森林),绘制了七个人类细胞系中的十一个组蛋白修饰和DNase I超敏反应图谱[2]。这些模型仅考虑启动子位点的表观遗传模式,而不考虑增强子位点信息。相反,DeepExpression[3]利用HiChIP数据[4](一种捕获蛋白质中心染色体环的高通量技术)来考虑增强子和增强子与启动子的相互作用。还有几种使用卷积神经网络(CNN)来预测基因表达[5]或差异基因调控模式的工具[6]。
有大量研究表明,增强子上的单碱基多态性会导致遗传病和癌症[7],所以需要一种方法能够定义不同细胞系上增强子的状态。染色质构想捕获实验(3C)延伸出了一些新技术:Hi-C[8],HiChIP[4]和ChIA-PET[9],他们可以捕获到增强子与目的基因间的空间结构。Hariprakash和Ferrari将探究基因和增强子相互作用的方法分为四类:(1)基于相关性的方法估计所有增强子-启动子对的相互作用强度;(2)基于回归性的方法假定多个增强子对单个基因有贡献;(3)基于监督学习和计分的方法可以整合多个ChIP-seq数据集和其他信息类型。这些工具都专注于增强子-启动子相互作用,但还有许多其他染色质相互作用类型,例如增强子-增强子环和通过相分离产生的弱染色质聚集[10]。而CITD[11]和DRAGON[12]分别使用小波变换和势能函数从表观遗传数据中全面解析了三维基因组组织。
ChIP-seq数据中的偏差和批次效应对分析有很大影响。由于机器学习方法对训练数据中的噪声很敏感,某些ChIP-seq样本将被识别为中等质量或被拒绝为低质量数据(导致丢失数据)。如果生物样品很珍贵(例如原代细胞和临床样品),很难收集大量样品,“数据插补”方法可能就会适用。这些方法是利用来自其他紧密相关细胞类型的表观遗传数据进行数据降噪或重建,“数据降噪”旨在通过识别和消除数据中的噪声来改善现有的ChIP-seq样本质量。软件Coda[13]可以编码生成噪声的过程,并使用卷积神经网络恢复ChIP-seq数据中的信号。“数据重建”旨在从计算机中的大型数据集中生成丢失的ChIP-seq数据。ChromImpute[14]是一个新的工具,可利用回归树使用十种最相关的细胞类型从每个缺失实验中推断出信号。软件PREDICTD[15]和Avocado[16]利用张量分解同时插入多个ChIP-seq数据。这些数据插补方法是实际ChIP-seq实验的潜在计算替代方法,并且可能为收集所有可能在生物学上不可能的细胞类型和环境条件的表观基因组数据开辟道路。尽管这种方法在计算上具有挑战性,但来自各种细胞类型的公共可用高质量数据鼓励实现这一目标。
最近的研究表明,许多细胞类型(包括正常的免疫细胞)在复杂的组织和肿瘤中起着重要的辅助功能。为了阐明发育过程中的这种细胞异质性和细胞命运轨迹,人们已经开发了各种单细胞测定方法。其中,scChIP-seq可从低输入样本中以单细胞分辨率对组蛋白修饰和其他染色质结合蛋白进行全基因组分析。最近,用于单细胞标记和ChIP-seq库制备的多种方法用于单细胞标记和ChIP-seq文库制备;这些方法使用微流体系统,Tn5转座酶标记,和ChIP-free的策略。
第一个scChIP-seq方法scDrop-ChIP [17]使用微流体系统进行细胞标记,并结合规范的ChIP方法在每个细胞中产生约800个非重复读段。最近开发的微滴微流控方法[18]提供了更高的分辨率,每个细胞产生约10,000个非重复读段。这些方法的局限性是大多数实验室通常无法使用专用的微流体装置。
使用Tn5转座酶的基于标签的文库制备已广泛用于各种NGS分析,包括ChIP-seq。sc-itChIP-seq [19]在经典的ChIP实验之前采用标签化技术进行单细胞标记和文库制备。此方法每个单元产生9000个非重复读段。由于实验过程与规范的ChIP-seq方法相似,因此该方法比scDrop-ChIP更易于使用。
scChIP-seq已经开发了几种ChIP-free方法:单细胞染色质免疫裂解测序(scChIC-seq)[20]和单细胞uliCUT&RUN [21];它们是基于CUT&RUN方法的[22],采用MNase和蛋白A融合蛋白检测具有特定抗体的裂解靶位点。这些方法每个细胞产生约4,100个非重复读段,然后需要严格实验步骤来制备文库,缺点是reads比对率比较低(~6%)。另外还有三种类似的方法被开发:CUT&Tag [23],ACT-seq [24]和CoBATCH [25],这些方法使用Tn5转座酶和蛋白A融合蛋白。在文库制备过程中,在目标蛋白结合在染色体上后,融合蛋白捕获一抗,然后激活Tn5转座酶以在蛋白质结合位点进行标记。这些方法的优点是可以同时进行蛋白质结合位点检测和文库制备,从而大大减少了实验步骤和时间。此外,这些方法较少受到免疫沉淀步骤带来的误差。此外,这些方法显示约97%的比对率,每个细胞产生约12,000个非重复读段。因此,这种ChIP-free方法具有进行高通量和高质量scChIP-seq分析的潜力。最后,染色质整合标记和测序(ChIL-seq)[26]是另一种ChIP-free的方法,它是基于免疫染色的而非ChIP。该方法使用与dsDNA偶联的第二抗体探针,该探针包含T7 RNA聚合酶启动子,NGS接头序列和Tn5结合序列。捕获第一抗体后,探针DNA序列通过Tn5转座酶整合到目标结合位点。然后通过转录扩增整合区域,进行RNA纯化和文库制备。该方法可用于单细胞分析,但可能需要进行几次优化才能实现高通量测序。将来将开发其他scChIP-seq方法,例如同时检测多个组蛋白修饰和其他染色质结合蛋白。这些研究将能够捕获每个细胞染色体上的基因调节因子并得知他们之间的相互作用关系。
[1]R Karlic, HR Chung, J Lasserre, K Vlahovicek, M Vingron, Histonemodification levels are predictive for gene expression, Proc Natl Acad Sci U SA 107(7) (2010) 2926-31
[2]X Dong, MC Greven, A Kundaje, S Djebali, JB Brown, C Cheng, TRGingeras, M Gerstein, R Guigo, E Birney, Z Weng, Modeling gene expressionusing chromatin features in various cellular contexts, Genome Biol 13(9) (2012)R53
[3]W Zeng, Y Wang, R Jiang, Integrating distal and proximal information topredict gene expression via a densely connected convolutional neural network,Bioinformatics 36(2) (2020) 496-503
[4]MR Mumbach, AJ Rubin, RA Flynn, C Dai, PA Khavari, WJ Greenleaf,HY Chang, HiChIP: efficient and sensitive analysis of protein-directed genomearchitecture, Nat Methods 13(11) (2016) 919-922
[5]R Singh, J Lanchantin, G Robins, Y Qi, DeepChrome: deep-learning forpredicting gene expression from histone modifications, Bioinformatics 32(17)(2016) i639-i648
[6]A Sekhon, R Singh, Y Qi, DeepDiff: DEEP-learning for predicting DIFFerentialgene expression from histone modifications, Bioinformatics 34(17) (2018)i891-i900
[7]H Chen, C Li, X Peng, Z Zhou, JN Weinstein, N Cancer Genome AtlasResearch, H Liang, A Pan-Cancer Analysis of Enhancer Expression in Nearly 9000Patient Samples, Cell 173(2) (2018) 386-399 e12
[8]E Lieberman-Aiden, NL van Berkum, L Comprehensive mapping of long-rangeinteractions reveals folding principles of the human genome, Science 326(5950)(2009) 289-93
[9]MJ Fullwood, MH Liu, YF ET Liu, CL Wei, E Cheung, YRuan,An oestrogen-receptor-alpha-bound human chromatin interactome, Nature462(7269)(2009) 58-64
[10]BR Sabari, A Dall'Agnese, A Boija, IA Klein, EL Coffey, K Shrinivas,BJ Abraham, NM Hannett, AV Zamudio, JC Manteiga, CH Li, YE Guo,DS Day, J Schuijers, E Vasile, S Malik, D Hnisz, TI Lee, Cisse, II,RG Roeder, PA Sharp, AK Chakraborty, RA Young, Coactivator condensationat super-enhancers links phase separation and gene control, Science 361(6400) (2018)
[11]Y Chen, Y Wang, Z Xuan, M Chen, MQ Zhang, De novo decipheringthree-dimensional chromatin interaction and topological domains by wavelettransformation of epigenetic profiles, Nucleic Acids Res 44(11) (2016) e106
[12]Y Qi, B Zhang, Predicting three-dimensional genome organization withchromatin states, PLoS Comput Biol 15(6) (2019) e1007024
[13]PW Koh, E Pierson, A Kundaje, Denoising genome-wide histone ChIP-seq withconvolutional neural networks, Bioinformatics 33(14) (2017) i225-i233
[14]J Ernst, M Kellis, Large-scale imputation of epigenomic datasets forsystematic annotation of diverse human tissues, Nat Biotechnol 33(4) (2015)364-76
[15]TJ Durham, MW Libbrecht, JJ Howbert, J Bilmes, WS Noble, PREDICTDPaRallel Epigenomics Data Imputation with Cloud-based Tensor Decomposition, NatCommun9(1) (2018) 1402
[16]J Schreiber, T Durham, J Bilmes, WS Noble, Multi-scale deep tensorfactorization learns a latent representation of the human epigenome, bioRxiv(2019)
[17]A Rotem, O Ram, N Shoresh, RA Sperling, A Goren, DA Weitz, BEBernstein, Single-cell ChIP-seq reveals cell subpopulations defined bychromatin state, Nat Biotechnol 33(11) (2015) 1165-72
[18]K Grosselin, A Durand, J Marsolier, A Poitou, E Marangoni, F Nemati, ADahmani, S Lameiras, F Reyal, O Frenoy, Y Pousse, M Reichen, A Woolfe, CBrenan, AD Griffiths, C Vallot, A Gerard, High-throughput single-cellChIP-seq identifies heterogeneity of chromatin states in breast cancer, NatGenet 51(6) (2019) 1060-1066
[19]S Ai, H Xiong, CC Li, Y Luo, Q Shi, Y Liu, X Yu, C Li, A He,Profiling chromatin states using single-cell itChIP-seq, Nat Cell Biol 21(9)(2019) 1164-1172
[20]WL Ku, K Nakamura, W Gao, K Cui, G Hu, Q Tang, B Ni, K Zhao,Single-cell chromatin immunocleavage sequencing (scChIC-seq) to profile histonemodification, Nat Methods 16(4) (2019) 323-325
[21]SJ Hainer, A Boskovic, KN McCannell, OJ Rando, TG Fazzio, Profiling ofPluripotency Factors in Single Cells and Early Embryos, Cell 177(5) (2019)1319-1329 e11
[22]PJ Skene, S Henikoff, An efficient targeted nuclease strategy forhigh-resolution mapping of DNA binding sites, Elife 6 (2017)
[123]HS Kaya-Okur, SJ Wu, CA Codomo, ES Pledger, TD Bryson, JG Henikoff,K Ahmad, S Henikoff, CUT&Tag for efficient epigenomic profiling of smallsamples and single cells, Nat Commun 10(1) (2019) 1930
[24]B Carter, WL Ku, JY Kang, G Hu, J Perrie, Q Tang, K Zhao, Mappinghistone modifications in low cell number and single cells using antibody-guidedchromatin tagmentation (ACT-seq), Nat Commun 10(1) (2019) 3747
[25]Q Wang, H Xiong, S Ai, X Yu, Y Liu, J Zhang, A He, CoBATCH forHigh-Throughput Single-Cell Epigenomic Profiling, Mol Cell 76(1) (2019) 206-216e7
[26] A Harada, K Maehara,T Handa, Y Arimura, J Nogami, Y Hayashi-Takanaka, K Shirahige, HKurumizaka, H Kimura, Y Ohkawa, A chromatin integration labelling methodenables epigenomic profiling with lower input, Nat Cell Biol 21(2) (2019)287-296
% 2008年4月12日修改
%%主函数
function main()
global chrom lchrom oldpop newpop varible fitness popsize sumfitness %定义全局变量
global pcross pmutation temp bestfit maxfit gen bestgen length epop efitness val varible2 varible1
global maxgen po pp mp np val1
length=18;
lchrom=30; %染色体长度
popsize=30; %种群大小
pcross=06; %交叉概率
pmutation=001; %变异概率
maxgen=1000; %最大代数
mp=01; %保护概率
%
initpop; % 初始种群
%
for gen=1:maxgen
generation;
end
%
best;
bestfit % 最佳个体适应度值输出
bestgen % 最佳个体所在代数输出
x1= val1(bestgen,1)
x2= val1(bestgen,2)
gen=1:maxgen;
figure
plot(gen,maxfit(1,gen)); % 进化曲线
title('精英保留');
%
% 产生初始种群
%
function initpop()
global lchrom oldpop popsize
oldpop=round(rand(popsize,lchrom)); %生成的oldpop为30行12列由0,1构成的矩阵
%其中popsize为种群中个体数目lchrom为染色体编码长度
%
%%产生新一代个体
%
function generation()
global epop oldpop popsize mp
objfun; %计算适应度值
n=floor(mppopsize); %需要保留的n个精英个体
for i=1:n
epop(i,:)=oldpop((popsize-n+i),:);
% efitness(1,i)=fitness(1,(popsize-n+i))
end
select; %选择 *** 作
crossover;
mutation;
elite; %精英保留
%
%%计算适应度值
%
function objfun()
global lchrom oldpop fitness popsize chrom varible varible1 varible2 length
global maxfit gen epop mp val1
a1=-3; b1=3;
a2=-2;b2=2;
fitness=0;
for i=1:popsize
%前一未知数X1
if length~=0
chrom=oldpop(i,1:length);% before代表节点位置
c=decimal(chrom);
varible1(1,i)=a1+c(b1-a1)/(2^length-1); %对应变量值
%后一未知数
chrom=oldpop(i,length+1:lchrom);% before代表节点位置
c=decimal(chrom);
varible2(1,i)=a2+c(b2-a2)/(2^(lchrom-length)-1); %对应变量值
else
chrom=oldpop(i,:);
c=decimal(chrom);
varible(1,i)=a1+c(b1-a1)/(2^lchrom-1); %对应变量值
end
%两个自变量
fitness(1,i)=4varible1(1,i)^2-21varible1(1,i)^4+1/3varible1(1,i)^6+varible1(1,i)varible2(1,i)-4varible2(1,i)^2+4varible2(1,i)^4;
%fitness(1,i) = 215+varible1(1,i)sin(4pivarible1(1,i))+varible2(1,i) sin(20pivarible2(1,i));
%一个自变量
%fitness(1,i) = 20cos(025varible(1,i))-12sin(033varible(1,i))+40 %个体适应度函数值
end
lsort; % 个体排序
maxfit(1,gen)=max(fitness); %求本代中的最大适应度值maxfit
val1(gen,1)=varible1(1,popsize);
val1(gen,2)=varible2(1,popsize);
%二进制转十进制
%
function c=decimal(chrom)
c=0;
for j=1:size(chrom,2)
c=c+chrom(1,j)2^(size(chrom,2)-j);
end
%
% 个体排序
% 从小到大顺序排列
%
function lsort()
global popsize fitness oldpop epop efitness mp val varible2 varible1
for i=1:popsize
j=i+1;
while j<=popsize
if fitness(1,i)>fitness(1,j)
tf=fitness(1,i); % 适应度值
tc=oldpop(i,:); % 基因代码
fitness(1,i)=fitness(1,j); % 适应度值互换
oldpop(i,:)=oldpop(j,:); % 基因代码互换
fitness(1,j)=tf;
oldpop(j,:)=tc;
end
j=j+1;
end
val(1,1)=varible1(1,popsize);
val(1,2)=varible2(1,popsize);
end
%转轮法选择 *** 作
%
function select()
global fitness popsize sumfitness oldpop temp mp np
sumfitness=0; %个体适应度之和
for i=1:popsize % 仅计算(popsize-np-mp)个个体的选择概率
sumfitness=sumfitness+fitness(1,i);
end
%
for i=1:popsize % 仅计算(popsize-np-mp)个个体的选择概率
p(1,i)=fitness(1,i)/sumfitness; % 个体染色体的选择概率
end
%
q=cumsum(p); % 个体染色体的累积概率(内部函数),共(popsize-np-mp)个
%
b=sort(rand(1,popsize)); % 产生(popsize-mp)个随机数,并按升序排列。mp为保护个体数
j=1;
k=1;
while j<=popsize % 从(popsize-mp-np)中选出(popsize-mp)个个体,并放入temp(j,:)中;
if b(1,j)<q(1,k)
temp(j,:)=oldpop(k,:);
j=j+1;
else
k=k+1;
end
end
%
j=popsize+1; % 从统一挪过来的(popsize-np-mp)以后个体——优秀个体中选择
for i=(popsize+1):popsize % 将mp个保留个体放入交配池temp(i,:),以保证群体数popsize
temp(i,:)=oldpop(j,:);
j=j+1;
end
%
%%交叉 *** 作
%
function crossover()
global temp popsize pcross lchrom mp
n=floor(pcrosspopsize); %交叉发生的次数(向下取整)
if rem(n,2)~=0 % 求余
n=n+1; % 保证为偶数个个体,便于交叉 *** 作
end
%
j=1;
m=0;
%
% 对(popsize-mp)个个体将进行随机配对,满足条件者将进行交叉 *** 作(按顺序选择要交叉的对象)
%
for i=1:popsize
p=rand; % 产生随机数
if p<pcross % 满足交叉条件
parent(j,:)=temp(i,:); % 选出1个父本
k(1,j)=i;
j=j+1; % 记录父本个数
m=m+1 ; % 记录杂交次数
if (j==3)&(m<=n) % 满足两个父本(j==3),未超过交叉次数(m<=n)
pos=round(rand(lchrom-1))+1; % 确定随机位数(四舍五入取整)
for i=1:pos
child1(1,i)=parent(1,i);
child2(1,i)=parent(2,i);
end
for i=(pos+1):lchrom
child1(1,i)=parent(2,i);
child2(1,i)=parent(1,i);
end
i=k(1,1);
j=k(1,2);
temp(i,:)=child1(1,:);
temp(j,:)=child2(1,:);
j=1;
end
end
end
%
%%变异 *** 作
%
function mutation()
global popsize lchrom pmutation temp newpop oldpop mp
m=lchrompopsize; % 总的基因数
n=round(pmutationm); % 变异发生的次数
for i=1:n % 执行变异 *** 作循环
k=round(rand(m-1))+1; %确定变异位置(四舍五入取整)
j=ceil(k/lchrom); % 确定个体编号(取整)
l=rem(k,lchrom); %确定个体中变位基因的位置(求余)
if l==0
temp(j,lchrom)=~temp(j,lchrom); % 取非 *** 作
else
temp(j,l)=~temp(j,l); % 取非 *** 作
end
end
for i=1:popsize
oldpop(i,:)=temp(i,:); %产生新的个体
end
%
%%精英选择%
%
function elite()
global epop oldpop mp popsize
objfun; %计算适应度值
n=floor(mppopsize); %需要保留的n个精英个体
for i=1:n
oldpop(i,:)=epop(i,:);
% efitness(1,i)=fitness(1,(popsize-n+i))
end;
%
%%最佳个体
%
function best()
global maxfit bestfit gen maxgen bestgen
bestfit=maxfit(1,1);
gen=2;
while gen<=maxgen
if bestfit<maxfit(1,gen)
bestfit=maxfit(1,gen);
bestgen=gen;
end
gen=gen+1;
end
%
早在1943 年,神经科学家和控制论专家Warren McCulloch 与逻辑学家Walter Pitts就基于数学和阈值逻辑算法创造了一种神经网络计算模型。其中最基本的组成成分是神经元(Neuron)模型,即上述定义中的“简单单元”(Neuron 也可以被称为Unit)。在生物学所定义的神经网络中(如图1所示),每个神经元与其他神经元相连,并且当某个神经元处于兴奋状态时,它就会向其他相连的神经元传输化学物质,这些化学物质会改变与之相连的神经元的电位,当某个神经元的电位超过一个阈值后,此神经元即被激活并开始向其他神经元发送化学物质。Warren McCulloch 和Walter Pitts 将上述生物学中所描述的神经网络抽象为一个简单的线性模型(如图2所示),这就是一直沿用至今的“McCulloch-Pitts 神经元模型”,或简称为“MP 模型”。
在MP 模型中,某个神经元接收到来自n 个其他神经元传递过来的输入信号(好比生物学中定义的神经元传输的化学物质),这些输入信号通过带权重的连接进行传递,某个神经元接收到的总输入值将与它的阈值进行比较,然后通过“激活函数”(亦称响应函数)处理以产生此神经元的输出。如果把许多个这样的神经元按照一定的层次结构连接起来,就可以得到相对复杂的多层人工神经网络。
http://blogcsdnnet/google19890102/article/details/50522945
交叉熵代价函数(Cross-entropy cost function)是用来衡量人工神经网络(ANN)的预测值与实际值的一种方式。与二次代价函数相比,它能更有效地促进ANN的训练。在介绍交叉熵代价函数之前,本文先简要介绍二次代价函数,以及其存在的不足。
1 二次代价函数的不足
ANN的设计目的之一是为了使机器可以像人一样学习知识。人在学习分析新事物时,当发现自己犯的错误越大时,改正的力度就越大。比如投篮:当运动员发现自己的投篮方向离正确方向越远,那么他调整的投篮角度就应该越大,篮球就更容易投进篮筐。同理, 我们希望:ANN在训练时,如果预测值与实际值的误差越大,那么在 反向传播训练 的过程中,各种参数调整的幅度就要更大,从而使训练更快收敛。 然而,如果使用二次代价函数训练ANN,看到的实际效果是,如果误差越大,参数调整的幅度可能更小,训练更缓慢。
以一个神经元的二类分类训练为例,进行两次实验(ANN常用的激活函数为sigmoid函数,该实验也采用该函数):输入一个相同的样本数据x=10(该样本对应的实际分类y=0);两次实验各自随机初始化参数,从而在各自的第一次前向传播后得到不同的输出值,形成不同的代价(误差):
实验1:第一次输出值为082
实验2:第一次输出值为098
在实验1中,随机初始化参数,使得第一次输出值为082(该样本对应的实际值为0);经过300次迭代训练后,输出值由082降到009,逼近实际值。而在实验2中,第一次输出值为098,同样经过300迭代训练,输出值只降到了020。
从两次实验的代价曲线中可以看出: 实验1的代价随着训练次数增加而快速降低,但实验2的代价在一开始下降得非常缓慢;直观上看,初始的误差越大,收敛得越缓慢 。
其实,误差大导致训练缓慢的原因在于使用了二次代价函数。二次代价函数的公式如下:
其中,C表示代价,x表示样本,y表示实际值,a表示输出值,n表示样本的总数。为简单起见,同样一个样本为例进行说明,此时二次代价函数为:
目前训练ANN最有效的 算法 是 反向传播算法 。简而言之,训练ANN就是通过反向传播代价,以减少代价为导向,调整参数。参数主要有:神经元之间的连接权重w,以及每个神经元本身的偏置b。调参的方式是采用梯度下降算法(Gradient
descent),沿着梯度方向调整参数大小。w和b的梯度推导如下:
其中,z表示神经元的输入,
表示激活函数。从以上公式可以看出,w和b的梯度跟激活函数的梯度成正比,激活函数的梯度越大,w和b的大小调整得越快,训练收敛得就越快。而神经网络常用的激活函数为sigmoid函数,该函数的曲线如下所示:
如图所示, 实验2的初始输出值(098)对应的梯度明显小于实验1的输出值(082),因此实验2的参数梯度下降得比实验1慢。这就是初始的代价(误差)越大,导致训练越慢的原因。 与我们的期望不符,即:不能像人一样,错误越大,改正的幅度越大,从而学习得越快。
可能有人会说,那就选择一个梯度不变化或变化不明显的激活函数不就解决问题了吗?图样图森破,那样虽然简单粗暴地解决了这个问题,但可能会引起其他更多更麻烦的问题。而且,类似sigmoid这样的函数(比如tanh函数)有很多优点,非常适合用来做激活函数,具体请自行google之。
2 交叉熵代价函数
换个思路,我们不换激活函数,而是换掉二次代价函数,改用交叉熵代价函数:
其中,x表示样本,n表示样本的总数。那么,重新计算参数w的梯度:
其中(具体证明见附录):
因此,w的梯度公式中原来的
被消掉了;另外,该梯度公式中的
表示输出值与实际值之间的误差。所以,当误差越大,梯度就越大,参数w调整得越快,训练速度也就越快。同理可得,b的梯度为:
实际情况证明,交叉熵代价函数带来的训练效果往往比二次代价函数要好。
3 交叉熵代价函数是如何产生的?
以偏置b的梯度计算为例,推导出交叉熵代价函数:
在第1小节中,由二次代价函数推导出来的b的梯度公式为:
为了消掉该公式中的
,我们想找到一个代价函数使得:
即:
对两侧求积分,可得:
而这就是前面介绍的交叉熵代价函数。
附录:
sigmoid函数为:
可证:
更系统的回答:
在之前的内容中,我们用的损失函数都是平方差函数,即
C=12(a−y)2
其中y是我们期望的输出,a为神经元的实际输出(a=σ(Wx+b)。也就是说,当神经元的实际输出与我们的期望输出差距越大,代价就越高。想法非常的好,然而在实际应用中,我们知道参数的修正是与∂C∂W和∂C∂b成正比的,而根据
∂C∂W=(a−y)σ′(a)xT∂C∂b=(a−y)σ′(a)
我们发现其中都有σ′(a)这一项。因为sigmoid函数的性质,导致σ′(z)在z取大部分值时会造成饱和现象,从而使得参数的更新速度非常慢,甚至会造成离期望值越远,更新越慢的现象。那么怎么克服这个问题呢?我们想到了交叉熵函数。我们知道,熵的计算公式是
H(y)=−∑iyilog(yi)
而在实际 *** 作中,我们并不知道y的分布,只能对y的分布做一个估计,也就是算得的a值, 这样我们就能够得到用a来表示y的交叉熵
H(y,a)=−∑iyilog(ai)
如果有多个样本,则整个样本的平均交叉熵为
H(y,a)=−1n∑n∑iyi,nlog(ai,n)
其中n表示样本编号,i表示类别编。 如果用于logistic分类,则上式可以简化成
H(y,a)=−1n∑nylog(a)+(1−y)log(1−a)
与平方损失函数相比,交叉熵函数有个非常好的特质,
H′=1n∑(an−yn)=1n∑(σ(zn)−yn)
可以看到其中没有了σ′这一项,这样一来也就不会受到饱和性的影响了。当误差大的时候,权重更新就快,当误差小的时候,权重的更新就慢。这是一个很好的性质。
3总结
当我们用sigmoid函数作为神经元的激活函数时,最好使用交叉熵代价函数来替代方差代价函数,以避免训练过程太慢。
不过,你也许会问,为什么是交叉熵函数?导数中不带σ′(z)项的函数有无数种,怎么就想到用交叉熵函数?这自然是有来头的,更深入的讨论就不写了,少年请自行了解。
另外,交叉熵函数的形式是−[ylna+(1−y)ln(1−a)]而不是
−[alny+(1−a)ln(1−y)],为什么?因为当期望输出的y=0时,lny没有意义;当期望y=1时,ln(1-y)没有意义。而因为a是sigmoid函数的实际输出,永远不会等于0或1,只会无限接近于0或者1,因此不存在这个问题。
4还要说说:log-likelihood cost
对数似然函数也常用来作为softmax回归的代价函数,在上面的讨论中,我们最后一层(也就是输出)是通过sigmoid函数,因此采用了交叉熵代价函数。而 深度学习 中更普遍的做法是将softmax作为最后一层,此时常用的是代价函数是log-likelihood cost。
In fact, it’s useful to think of a softmax output layer with
log-likelihood cost as being quite similar to a sigmoid output layer
with cross-entropy cost。
其实这两者是一致的,logistic回归用的就是sigmoid函数,softmax回归是logistic回归的多类别推广。log-likelihood代价函数在二类别时就可以化简为交叉熵代价函数的形式。
补充一个困扰我很久的问题:
https://mpweixinqqcom/s__biz=MzI1NTE4NTUwOQ==&mid=502840969&idx=1&sn=05b8d27dccf6efc3f85f47a74669e1c9#rd
总结:
softmax 损失函数,适合单标签多分类问题
欧式损失函数(就是均方误差),适合实数值回归问题
sigmod 交叉熵,适合多标签分类问题,这里上面说是主要用在二分类,暂时理解为多标签二分类问题。
contrastive loss,适合深度测度学习,就是siamese网络的相似度学习。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)