主要内容

使用神经网络预测蛋白质二级结构

这个例子显示了一个二级结构预测方法,利用前馈神经网络的功能深度学习工具箱™。

这是一个简化的例子旨在说明的步骤建立一个神经网络预测蛋白质二级结构的目的。它的配置和培训方法不一定意味着问题的最佳解决方案。

介绍

神经网络模型试图模拟发生在大脑的信息处理和广泛用于各种应用,包括自动模式识别。

Rost-Sander数据集[1]由蛋白质的结构跨度相对广泛的域类型、组成和长度。该文件RostSanderDataset.mat包含此数据集的一个子集,每个残留报告的结构赋值为每个蛋白质序列。

负载RostSanderDataset.matN =元素个数(allSeq);id = allSeq .Header (7)%给定蛋白质序列的注释seq = int2aa (allSeq (7) . sequence)%的蛋白质序列str = allSeq .Structure (7)%结构赋值
id = ' 1 cse-icomplex (SERINEPROTEINASE-INHIBITOR) 03-JU seq =“KSFPEVVGKTVDQAREYFTLHYPQYNVYFLPEGSPVTLDLRYNRVRVFYNPGTNVVNHVPHVG”str =“CCCHHHCCCCHHHHHHHHHHHCCCCEEEEEECCCCEECCCCCCEEEEEEECCCCEECCCCEEC”

在这个例子中,您将构建一个神经网络学习结构状态(螺旋,单或线圈)的残留在给定的蛋白质,结构模式的基础上观察到在一个训练阶段。由于一些措施的随机性质在下列方法中,数值结果可能稍微不同的每次训练网络模拟或预测。确保结果的再现性,我们重置全球随机发生器的保存的状态包括加载文件,如下所示:

rng (savedState);

定义网络体系结构

为当前的问题,我们定义了一个神经网络具有一个输入层、一个隐藏层和一个输出层。输入层编码一个滑动窗口在每个输入氨基酸序列,并预测了结构状态中央残留的窗口。我们选择一个窗口的大小之间的统计相关性发现17基于给定的位置和残留的二级结构预测点的两侧8残留[2]。每个窗口位置编码使用二进制数组的大小,有一个元素为每个氨基酸类型。在20国集团(g20)输入,相对应的元素氨基酸类型在给定的位置设置为1,而其他所有输入都设置为0。因此,输入层由R = 17 x20的输入单元,即17组20输入。

在以下代码中,我们为每个蛋白质序列首先确定所有可能的子序列对应的滑动窗口大小W通过创建一个汉克尔矩阵,第i个列表示的子序列开始在第i个位置在原始序列。然后对于每一个在窗口中的位置,我们创建一个数组大小20,我们将j元素设置为1,如果残留在给定的位置有一个数字表示法等于j。

W = 17;%滑动窗口大小% = = =输入的二值化i = 1: N seq =双(allSeq(我). sequence);%当前序列赢得=汉克尔(seq (1: W), seq (W:结束);%所有可能的滑动窗口项目= 0 (20 * W,大小(赢,2));%输入矩阵电流序列k = 1:尺寸(赢,2)指数= 20 * (0:w1) +赢得(:,k);%为每个位置输入数组k项目(指数(k) = 1;结束allSeq(我)。P =项目;结束

神经网络的输出层包括三个单元,考虑结构的一个为每个州(或类),这是使用二进制编码方案。神经网络的创建目标矩阵,我们首先获得,从数据,所有可能的子序列的结构分配相应的滑动窗口。然后我们考虑每个窗口中的中心位置,变换相应的结构分配使用下面的二进制编码:线圈1 0 0,0 1 0,0 0 1螺旋。

cr =装天花板(W / 2);%残中央位置% = = =二值化的目标i = 1: N str =双(allSeq(我).Structure);%当前结构赋值赢得=汉克尔(str (1: W), str (W:结束);%所有可能的滑动窗口我= false(3、大小(赢,2));我(1)=双赢(cr:) = = (“C”);我(2)=双赢(cr:) = = (“E”);我(3)=双赢(cr:) = = (“H”);allSeq(我)。T =我;结束

您可以执行输入的二值化和目标矩阵描述在上面的两个步骤以更简洁的方式通过执行下面的等效代码:

% = = =简洁的输入和目标的二值化i = 1: N seq =双(allSeq(我). sequence);赢得=汉克尔(seq (1: W), seq (W:结束);%并发输入(滑动窗口)% = = =二值化的输入矩阵allSeq(我)。P= kron(win,ones(20,1)) == kron(ones(size(win)),(1:20)');% = = =目标的二值化矩阵allSeq(我)。T= allSeq(i).Structure(repmat((W+1)/2:end-(W-1)/2,3,1)) ==repmat ((“甚至”),1,长度(allSeq(我).Structure) - w + 1);结束

一旦我们定义输入和目标为每个序列矩阵,我们创建一个输入矩阵,P和目标矩阵,T,代表的编码序列送入网络。

% = = =构造输入和目标矩阵P =双([allSeq.P]);%的输入矩阵T =双([allSeq.T]);%的目标矩阵

创建一个神经网络

二级结构预测的问题可以被认为是一个模式识别问题,网络的训练来识别结构的中央残渣最有可能发生在特定的残基在给定的滑动窗口。我们创建一个模式识别神经网络使用上面定义的输入和目标矩阵和指定一个隐藏层的大小3。

hsize = 3;网= patternnet (hsize);net.layers {1}%隐藏层net.layers {2}%输出层
ans =神经网络层的名字:“隐藏”维度:3 distanceFcn:(一)distanceParam:(一)距离:[]initFcn:“initnw”netInputFcn:“netsum”netInputParam:(一)职位:[]范围:[3 x2双)大小:3 topologyFcn:(一)transferFcn:“tansig”transferParam:(一)用户数据:(定制信息)ans =神经网络层的名字:“输出”维度:0 distanceFcn:(一)distanceParam:(一)距离:[]initFcn:“initnw”netInputFcn:“netsum”netInputParam:(一)职位:[]范围:[]大小:0 topologyFcn:(一)transferFcn:“softmax”transferParam:(一)用户数据:(定制信息)

训练神经网络

模式识别网络使用默认了共轭梯度算法进行训练,但其他算法可用(参见深度学习工具箱文档可用函数)的列表。在每一个训练周期,提出了训练序列通过滑动窗口上面定义网络,一次一个渣。每个隐藏单元将接收到的信号从输入层通过传递函数logsig产生一个输出信号之间,接近0或1,模拟神经元的放电[2]。权重调整,观察每个单元的输出之间的误差和所需的输出指定的目标矩阵是最小化。

% = = =使用日志乙状结肠作为传递函数net.layers {1}。transferFcn =“logsig”;% = = =训练网络(净,tr) =火车(净、P、T);

在训练过程中,训练工具窗口打开并显示进度。培训细节等算法,性能标准,误差考虑的类型,等等。

使用的函数视图生成一个神经网络的图形视图。

视图(净)

发生在神经网络训练的一个常见的问题是过度拟合数据,网络往往记忆训练例子没有学习如何推广新的情况。默认的方法提高泛化称为早期停止,由可用的训练数据集划分成三个子集:(i)训练集,用于计算梯度和更新网络权重和偏见;(2)验证集,在培训过程中监控是谁的错误,因为它会增加当数据是overfitted;和(iii)测试集,其误差可用于评估的质量部门的数据集。

当使用这个函数火车,默认情况下,数据随机划分,这样被分配到训练集样本的60%,20%,验证集和测试集的20%,但其他类型的分区可以应用通过指定属性net.divideFnc(默认dividerand)。的结构成分残留的三个子集是可比的,从以下调查:

(i, j) =找到(T (:, tr.trainInd));Ctrain = (i = = 1)之和/长度(我);Etrain = (i = = 2) /长度总和(我);Htrain = (i = = 3) /长度总和(我);(i, j) =找到(T (:, tr.valInd));Cval = (i = = 1)之和/长度(我);Eval = (i = = 2) /长度总和(我);Hval = (i = = 3) /长度总和(我);(i, j) =找到(T (:, tr.testInd));ct长度= sum (i = = 1) /(我); Etest = sum(i == 2)/length(i); Htest = sum(i == 3)/length(i); figure() pie([Ctrain; Etrain; Htrain]); title(“训练数据集结构作业”);传奇(“C”,“E”,“H”图()派()[Cval;Eval;Hval]);标题(“验证数据集结构作业”);传奇(“C”,“E”,“H”图()派()[ct;浓度梯度法;ht]);标题(“测试数据集结构作业”);传奇(“C”,“E”,“H”)

这个函数plotperform显示趋势的培训、验证和错误训练迭代通过测试。

图()plotperform (tr)

培训过程停止时的条件之一(见net.trainParam)是满足。例如,在培训,培训过程停止时指定的验证错误增加迭代次数(6)或达到允许的最大数量的迭代(1000)。

% = = =显示训练参数net.trainParam% = = =情节验证检查和梯度图()plottrainstate (tr)
ans =函数参数的trainscg显示培训窗口反馈显示窗口:显示命令行反馈showCommandLine:假命令行频率显示:25最大时期时代:1000最大训练时间时间:正性能目标的目标:0最小梯度min_grad: 1 max_fail e-06最大验证检查:6σσ:5 e-05λλ:5 e-07

分析了网络响应

分析网络响应,我们检查混淆矩阵通过考虑训练网络的输出和比较预期的结果(目标)。

O = sim(净,P);图()plotconfusion (T O);

对角线细胞显示剩余头寸的数量被正确分类为每个结构性类。非对角的细胞显示剩余头寸的数量被错误归类(如螺旋位置预测盘位置)。正确的对角线对应于观测细胞分类。观测的数量和总数量的百分比的观察每个单元所示。列在最右边的图显示了所有例子的比例预测属于每个类的正确和错误分类。这些指标通常被称为精度(或阳性预测值)和错误发现率,分别。行底部的情节显示所有属于每个类的示例的百分比是正确和错误分类。这些指标通常被称为召回(或真阳性率)和假阴性率,分别。细胞在情节的右下角显示的整体精度。

我们也可以考虑接受者操作特征(ROC)曲线,一块真正的阳性率(灵敏度)和假阳性率(1 -特异性)。

图()plotroc (T O);

改进的神经网络更准确的结果

我们已经定义的神经网络是相对简单的。为了实现一些改进预测精度我们可以尝试下列之一:

  • 增加培训向量的个数。增加专门的训练序列的数量需要大策划蛋白质结构的数据库,一个适当的分配盘、螺旋和表元素。

  • 增加输入值的数量。增加窗口大小或添加更多的相关信息,如生化特性的氨基酸,是有效的选择。

  • 使用不同的训练算法。不同的算法不同的内存和速度的要求。例如,按比例缩小的共轭梯度算法是相对较慢但记忆效率,而Levenberg-Marquardt更快更要求的记忆。

  • 增加隐藏的神经元。通过添加更多的隐藏单元我们通常获得一个更复杂的网络潜在的更好的性能,但我们必须小心不要overfit数据。

我们可以指定更多的隐藏层或增加隐层大小创建模式识别网络时,如下所示:

hsize = [3 4 2];net3 = patternnet (hsize);hsize = 20;net20 = patternnet (hsize);

我们也可以分配网络初始权重随机值在-0.1到0.1范围建议[2]的研究报告通过设置net20.IWnet20.LW属性如下:

% = = =分配随机值范围内。1和1。重量net20.IW{1} = -.1 + (.1 + .1) .* rand(size(net20.IW{1})); net20.LW{2} = -.1 + (.1 + .1) .* rand(size(net20.LW{2}));

一般来说,更大的网络(20或更多隐藏的单位)取得更好的准确性在训练集的蛋白质,但更糟糕的是准确性的预测准确性。因为20-hidden-unit网络涉及近7000重量和偏见,网络通常是能够适应训练集密切但失去概括的能力。强化训练和预测精度之间的妥协是神经网络的基本局限性之一。

net20 =火车(net20、P、T);O20 = sim (net20 P);numWeightsAndBiases =长度(getx (net20))
numWeightsAndBiases = 6883

您可以显示的混淆矩阵训练,验证和测试子集在训练工具窗口中单击相应的按钮。

评估网络性能

你可以评估结构详细预测通过计算预测质量指标[3],这表明一个特定状态预测和是否overprediction underprediction发生。我们定义索引pcObs (S)状态S (S = {C、E、H})残留物的数量准确的预测在国家年代,除以残留物的数量在国家美国类似的,我们定义索引pcPred (S)国家年代残留物的数量正确预测在国家年代,除以残留物的数量预计在国家年代。

(i, j) =找到(专业(O));[u, v] =找到(T);% = = =计算分数的正确预测在给定状态pcObs(1) =总和(i = = 1 & u = = 1) / (u = = 1)之和;% C状态pcObs(2) =总和(i = = 2 & u = = 2) / (u = = 2)之和;国家E %pcObs(3) =总和(i = = 3 & u = = 3) / (u = = 3)之和;% H状态% = = =计算分数的正确预测在给定状态预测pcPred(1) =总和(i = = 1 & u = = 1) / (i = = 1)之和;% C状态pcPred(2) =总和(i = = 2 & u = = 2) /笔(i = = 2);国家E %pcPred(3) =总和(i = = 3 & u = = 3) /笔(i = = 3);% H状态% = = =比较预测的质量指标图()酒吧([pcObs ' pcPred '] * 100);ylabel (“正确地预测位置(%)”);甘氨胆酸ax =;斧子。XTickLabel = {“C”;“E”;“H”};传奇({“观察”,“预测”});

这些质量指标对预测精度的解释是有用的。事实上,在这种情况下,预测技术往往overpredict /低估了给定的状态,一个高/低的预测准确性可能只是一个工件,不提供一定程度的质量技术本身。

结论

这里介绍的方法预测给定的蛋白质残渣的结构状态基于其邻国的结构状态。然而,有进一步约束时预测蛋白质结构元素的内容,比如每个结构元素的最小长度。具体地说,一个螺旋分配给任何群四个或更多连续的残留物,和一张被分配给任何两个或两个以上连续的残留物。将这种类型的信息,可以创建一个额外的网络,这样第一个网络预测氨基酸序列的结构状态,和第二网络预测结构元素的结构状态。

引用

[1]罗斯特,B。,和Sander, C., "Prediction of protein secondary structure at better than 70% accuracy", Journal of Molecular Biology, 232(2):584-99, 1993.

[2]华立,L.H. Karplus, M。,"Protein secondary structure prediction with a neural network", PNAS, 86(1):152-6, 1989.

[3]Kabsch, W。,和Sander, C., "How good are predictions of protein secondary structure?", FEBS Letters, 155(2):179-82, 1983.