GAN(A)中のタンパク質の設計の応用

すぐに修理をテストすることをいとわないします

あなたは上司に研究提案書を提出する必要があり、

家庭教師の前の予想によると、研究のマスター相は、タンパク質GANの設計への応用に焦点を当てました

だから、彼の多忙なスケジュールの中で検討することと数学のコースは、ああ、計画し、新しい肝臓を勉強しなければならないと、

これは、WGANについて学ぶために、古典的なGANで始まり、その後、この点で自分のアイデアを検討し始めました。

BOTH

  GANは、主に次の2つの部分、発電機、弁別器の構成します。

  ジェネレータの入力はジェネレータが、実際のデータによって訓練され、データのランダムなサンプルやノイズで出力が、我々が生成したいターゲットであるように。

  弁別器は、実際のターゲットの分類器が戻っ0を生成した偽の目標のために1を返します。

  、弁別目標を生成するジェネレータが混乱することができますが、弁別器はできるだけ偽のターゲット世代を識別するために、

互いに最終的に、反復的及び進化的発生に対する弁別器によって2つのモデル定数対立における等価、および発電機

あなたは十分な本物の目標を生成することができます。

1.GAN原理

  まず、任意の実際のデータ・セットのために、私たちは真の分布Pターゲット知ることができるデータ(X-)を、Xは-される実際のデータは、例えば、我々は、実際のベクトルデータを想像することができます

この分布ベクトルはPであるデータ(X)。ジェネレータの目標は、私たちが今、ジェネレータが分布Pを生成することができます持っていると仮定し、この分布に従う新しいベクトルのシリーズを生成することであるG、|(θX-を)

θは、この分布を制御するための一連のパラメータである、私たちの目標は、実際のデータ配信Pに沿って発生した可能アーティファクト作る訓練θによって発電を行うことができるようにすることですデータ(X-)を。

  そうジェネレータトレーニングのために、我々は最初の本当のデータ{X = Dの一連集める。1、X 2、...、XのM }、パラメータθ及び特定の実データXのためのIを、ジェネレーターは、データXを生成私はさ同時確率密度関数P G(X I  |θ)、

我々は、次に、X {缶。1、X 2、...、Xのmは、すなわち}尤度を算出する最尤関数θ値を作ることによって得られた発電機を訓練します。

 

 

                                                                          

 

    派生上記の一連のことで、私たちはその結果、ジェネレータ生成リアルタイム配信データに最も近い最大尤度関数を見ることができます。これは、発電機をできる限り実際のデータを生成してみましょう。だから我々は、θを探す必要があります* P作るためにGを近づけPへのデータ我々は、Pと仮定G次にG(Zにより、ランダムなベクトルZを生成し、NNは|(θX)はデータXを生成)= Xこのネットワーク。それ同じの真の分布かどうかのデータを生成するために、G()分布を比較するには?基Zとして採取された試料は、Gによってつのプロファイルに準拠基Zは、()別の分布Pの後に生成することができるG Pと、G P真の分布とデータと比較しました。

  我々はすべて知っているようにNNは限り非線形関数があるとして任意の関数にフィットするように活性化することができ、その後、分布も非常に複雑な分布に深さを学ぶために、等の正規分布、ガウス分布によってサンプリングすることができます。

                       

 

    成果物の分布を得るために、つまり、生成モデル生成配布を通じて取得し、分布と実際のデータの分布が非常に似ています。GANは、パラメータθを変化させることにより、実際の分布と、これは非常に近い見つけるために役割を探ることです。次のようにGAN式は次のとおりです。

 

                                        (G =ジェネレータ、D =弁別器)

 

    私たちの目的は、実際のデータ分布としてジェネレータGを生成するのに十分なレベルを見つけることです*、同時に、Gのすべてのバージョン与えられたため、D Gは、データを異なる実際のデータを生成して検索している必要があり

したがって、各世代のG * = D弁別のための最適ながあるでしょうし、その後全体のGとDの進化を見て、あなたは最適を見つけることができます

  今、私たちはその後、V(G、D)は、次のように書かれたエキスパンドした後、最適なDを解決、Gを修正します: 

 

 

 

 

   ここで、D(x)は、我々は次のことを必要とするこの関数の最大値に対応し、積分記号を任意の値を取ることができると仮定

 

 

 

 

 

  置換によって元の式は、Dの関数として求めることができる:; D誘導体であることが、最大関数値Dをとる場合に得ることができます。

                                                                       

 

それは、次のとおり、所定のG、D *は、この最適に得られるために。Dに置換しました*

                                                                                          

 

   ジェンセン - シャノン発散と呼ばれる新たな発散の出現の最後は、もし2つの完全独立(無交差点)の分布、二つの異なる分布間の差を測定するために使用されます

次いでIOG2 JSDの値である場合、二つの同一の、次いでJSDの分布の値= 0プリム、それがG、所与

 

 

   するとときの時間、G = G *

   同时,为了得到G*和D*我们需要找到Loss Function以方便我们通过Gradient Descent来找到G*和D*

  GAN的训练过程及Generator和Discriminator的loss function如下图:

 

 

   其中,得到D*可能需要多次Gradient Descent才能到达max点,而对于G,如果更新后的Gnew比之前的Gold有V(Gold,Dold)<V(Gnew,Dnew),

避免这种情况的办法就是每次少更新一点G,于是就有了上图所示的,D更新多次,而G只更新一次,并且,我们无法保证Gradient Descent之后的点是全局最值点,

只能确定它是局部最值点。

 

 2.经典GAN存在的问题

 log(1-D(x))是G在训练时的loss function,但是通过观察函数图像,可以发现,D(x)在接近于0的时候,函数的梯度很小,这样会导致在刚开始时G的收敛变得十分缓慢,我们可以改变这个loss function,将其修改为这样这个loss function的趋势就变成了上面的那条曲线,趋势不变,但函数在刚开始训练时梯度很大,而在最后快收敛时梯度很小,这与我们训练时的想法是相吻合的。

 

 

                                                     

 

  另一个问题:因为我们在GAN的训练中使用的是两个分布的Sampling,所以我们在对D进行训练时会发现,无论我们有如何powerful的G,因为数据来源于采样,所以P和 Pdata 完全没有交集,以至于我们的Discriminator总是能分辨出那些artifacts,如下图所示,Discriminator总能找出分辨P和 Pdata的方法:

 

 

 

 

    这时我们就想到是否能让Discriminator更弱一点,但又想让它能够区分出假图片,所以就产生了矛盾。还有一种可能,假设两个分布都是很窄的(例如线),那么JSD=log2,也就相当于没有交集,这样子无法对Generator进行Gradient Descent,有一种解决办法就是添加噪声,让两个分布变得很宽,这样就可以计算出JSD,但随着时间变化,需要减小噪声,使得两个分布趋同。

    还有一个问题,叫做Mode Collapse,这个是因为Generator在很多情况下无法生成具有多样性的分布(例如生成多个高斯分布),这就与我们想象中的训练过程产生了偏差,我们希望Generator能够生成尽可能和真实分布一样的分布,但是Generator往往只能够生成真实分布的其中一种情况,比如说我们用猫狗牛羊这几种动物的图片去训练一个GAN,希望它也能够生成这几种动物的图片,但是GAN最后得出的结果是只能够生成狗的图片。

                                                                      

 

 

    对于左边的分布,当Pdata有值而PG没有取值时,KLD会趋向于无穷大,因此为了不让KLD趋向无穷大Generator要在每个有Pdata的地方都有一个PG,而鉴于它本身的特性,它无法生成多个高斯分布,所以只能够尽可能地去覆盖Pdata的分布曲线,所以就造成了左图的情形。这样虽然不是Mode Collapse,但是会产生许多无意义的样本,训练结果效果很差。

    对于右边的分布,当PG有值时,Pdata也一定要有取值,否则Generator将面临一个非常大的惩罚,因此为了避免惩罚,Generator趋向于在确定正确的分布内生成数据,而不去尝试在别的分布内产生不一样的数据,这样就造成了Mode Collapse,我们的Generator对于一个多个高斯分布叠加的真实分布,只会去产生其中一个高斯分布的数据。

3.对于经典GAN的总结

     终于把GAN给看完了,说说我自己的感想,确实是个很不错的思想,但是仔细一想,有非常多的缺点,直接把经典的GAN拿来解决现实问题很可能不会有很好的效果。具体来说,经典GAN大概有以下缺点:

    (1)训练困难(2)生成器和判别器的loss无法指示训练进程(3)生成样本缺乏多样性等

    对于经典的GAN的这些缺点,有各种论文提出了各种改进,比较著名的有通过Wasserstein距离进行改进的WGAN,解决了GAN训练不稳定,基本解决了mode collapse问题,并且有一个类似于交叉熵的量来表示训练的进程和结果的好坏,这个量越小代表生成的样本质量越好。

    近来还有把强化学习与GAN进行结合的seq-GAN,我自己的初步想法也是探索一下seq-GAN在蛋白质设计方面有没有什么用武之地,第一部分先写这些内容吧,下一步学习一下WGAN和seq-GAN然后看看有没有已经做出一些成果的大佬,来探求一下将seq-GAN运用在蛋白质设计方面的可能性。

 

おすすめ

転載: www.cnblogs.com/MemoryOfStars/p/11755693.html