ゞェネレヌティブモデリングずAI

前の章では、機械孊習における叀兞的な刀別モデルに぀いお説明し、そのようなモデルの最も単玔な䟋を芋おきたした。 ここで、より䞀般的な図を芋おみたしょう。











人工知胜のタスク



人工知胜AIは、人間ず同等以䞊のレベルの人々が通垞解決する問題を解決できるアルゎリズムです。 これには、芖芚画像の認識、テキストの理解ず分析、メカニズムの制埡、論理チェヌンの構築がありたす。 人工知胜システムは、こうした問題をすべお䞀床に効果的に解決できるシステムです。 この問題に察する解決策はただありたせんが、AI問題を解決するための最初のステップず呌ばれるさたざたなアプロヌチがありたす。



20䞖玀には、ルヌルベヌスのアプロヌチが最も人気がありたした。 圌の考えは、䞖界は、䟋えば物理孊や他の自然科孊によっお研究されおいる法則に埓うずいうこずです。 たた、AIで効果的に盎接プログラムできない堎合でも、十分な数のプログラムされたルヌルを䜿甚しお、コンピュヌタヌに基づくAIシステムがこれらのルヌルに基づいお䞖界に効果的に存圚し、任意の問題を解決できるず仮定するのは合理的です。 このアプロヌチでは、いく぀かのむベントの自然確率を考慮しおいたせん。 それを考慮するには、ランダムな入力デヌタを条件ずしお、確率的決定を行うためのこのルヌルのリストに確率モデルを構築する必芁がありたす。



䞖界を完党に説明するには、非垞に倚くのルヌルが必芁になるため、それらを手動で蚭定および保守するこずはできたせん。 これにより、珟実䞖界のむベントを十分に芳察し、これらの芳察から必芁なルヌルを自動的に導出するずいうアむデアが生たれたす。 このアむデアは、いく぀かの自然プロセスの実際の確率論ず、特定の決定論的プロセスに圱響を䞎える芁因が完党にはわからないずいう事実によっお生じる想像䞊の確率論の䞡方を即座にサポヌトしたす。 芳枬からのルヌルの自動導出は、機械孊習ず呌ばれる数孊のセクションによっお凊理されたす。これが珟圚、AIの最も有望な基盀です。



機械孊習AI



前の章では、機械孊習の叀兞的な問題分類ず回垰ず、それらを解決するための叀兞的な線圢手法ロゞスティック回垰ず線圢回垰に぀いお芋おきたした。 実際には、非線圢モデルは、通垞、決定朚たたはディヌプ人工ニュヌラルネットワヌクに基づいた耇雑な問題に䜿甚されたす。これらは、高レベルの冗長性を備えた高密床デヌタ画像、音声、テキストの凊理よりも優れおいたす。



これらの方法は、芳察に基づいおルヌルを自動的に導出するこずができ、商甚アプリケヌションで非垞にうたく適甚されたす。 ただし、AIシステムずしお䜿甚するには䞍十分であるずいう欠点がありたす。たずえば、画像内の猫ず犬を区別するなど、特定の高床に特殊化された問題を解決するように特別に蚭蚈されおいたす。 明らかに、画像を1぀の数倀に合蚈するモデルでは、倧量のデヌタが倱われたす。 画像内の猫を刀別するには、猫の本質を理解する必芁はありたせん。この猫の䞻な兆候を探す方法を孊ぶだけで十分です。 画像分類のタスクは、シヌンの完党な理解を意味するのではなく、シヌン内の特定のオブゞェクトの怜玢のみを意味したす。 少なくずも収集およびマヌクアりトが必芁な指数関数的に倧量の芳枬のため、オブゞェクトのすべおの可胜な組み合わせの接続のすべおの可胜な組み合わせの分類子を決定するこずはできたせん。 したがっお、特定のタスクが解決される匷化を䌎う叀兞的な機械孊習問題のアむデアは適切ではありたせん。 AIの堎合、機械孊習の問題を定匏化するための根本的に異なるアプロヌチが必芁です。



䞖界を理解する問題の確率論的声明



そのため、䞀連の芳察結果を生成するプロセスを理解するずいう意味で、芳察が必芁です。 この問題を確率的蚀語で再定匏化したす。 芳枬を確率倉数の実珟ずする 、䞀連の芳枬可胜なむベントがありたす 。 その埌、むベント党䜓の倚様性の「理解」を、分垃を埩元するタスクずしお定匏化できたす。 。



この問題を解決するには、いく぀かのアプロヌチがありたす。 最も䞀般的な方法の1぀は、朜圚倉数の導入です。 特定の衚珟があるず仮定したす 芳察 。 このビュヌは、モデル芳察の「理解」に぀いお説明したす。 たずえば、コンピュヌタゲヌムのフレヌムの堎合、そのような理解は、ゲヌムワヌルドの関連する状態ずカメラの䜍眮になりたす。 その堎合 。 修正 分垃のサンプリングが簡単になるように、次のモデルを取埗したす。 そしお ニュヌラルネットワヌクで近䌌できたす。 暙準的な深局孊習方法でこのモデルを教えるこずができたす 䞊蚘の匏に埓っお、その埌、確率的掚論で䜿甚できたす。 そのようなモデルのより正確な定匏化は埌続の郚分で䞎えられたすが、ここでは、そのようなモデルの耇雑なバヌゞョンは、耇雑な蚈算䞍可胜な積分の近䌌を必芁ずするこずに泚意する必芁がありたす。 建物 それからサンプルを抜出するこずは、生成モデリングのタスクず呌ばれたす。



別の方法で問題にアプロヌチできたす。 実際、明瀺的に蚈算したす 、耇雑な積分を近䌌する必芁はありたせん。 1぀のアむデアは、モデルが䞖界を「想像」できる堎合、それがどのように機胜するかを理解するこずを意味するずいうこずです。 たずえば、人をさたざたなポヌズや角床で描くこずができる堎合、その人䜓の解剖孊ず遠近法が䞀般的にどのように配眮されおいるかがわかりたす。 モデルによっお生成されたオブゞェクトを実際のオブゞェクトず区別できない堎合、モデルは、この珟象たたはその珟象がどのように機胜するかを理解し、正盎に「理解」するこずができたした。 このアむデアは、暗黙的な生成的モデリングの開発を促したす -有限個の芳枬倀を持ち、それらを䞀般化し、実際の芳枬倀ず区別できない新しい芳枬倀を生成できるモデルの開発。 ず仮定する 、たたはサンプリング甚の他の単玔な分垃。 次に、かなり䞀般的な条件䞋で、関数が存圚したす そのような 。 この堎合、我々は取埗したせん 明瀺的にですが、モデルには暗黙的にそれに関する情報が含たれおいたす。 回埩の代わりに 埩元できる 続いおからのサンプル ずしお入手できたす 。 確率的掚論に盎接䜿甚するこずはできたせんが、第䞀に、垞に必芁なわけではありたせん。第二に、必芁な堎合は、サンプルを取埗するだけのモンテカルロ法を䜿甚できたす。 次のパヌトで孊習する生成的敵察ネットワヌクモデルも、このタむプのメ゜ッドに属したす。



䞻成分分析



単玔な生成モデルを芋おみたしょう。 いく぀かの芳枬可胜な量がありたしょう 。 たずえば、人の身長やピクセル画像などです。 この倀は、隠された朜圚的な倀によっお完党に説明されるず仮定したす。 。 私たちの類掚では、これは人や物䜓の重量ず画像䞊での向きです。 今、隠された量のために 、芳枬倀は通垞のノむズに線圢に䟝存したす。 。 このモデルは確率的䞻成分分析PPCAず呌ばれ、実際、叀兞的な䞻成分分析 PCAモデルの確率的再定匏化です。 朜圚倉数に線圢に䟝存 ノむズなし。



期埅の最倧化



期埅倀最倧化EMは、朜圚倉数を持぀モデルをトレヌニングするためのアルゎリズムです。 詳现は専門文献で芋぀けるこずができたすが、アルゎリズムの䞀般的な本質は非垞に簡単です



  1. パラメヌタヌの初期倀でモデルを初期化したす。
  2. E-ステップ。 朜圚倉数を珟圚のモデルの期埅倀で埋めたす。
  3. Mステップ。 朜圚倉数が固定されたモデルの尀床を最倧化したす。 たずえば、パラメヌタの募配降䞋。
  4. 朜圚倉数の期埅倀が倉化しなくなるたで、2、3を繰り返したす。


M-ステップが最埌たで尀床を最倧化せず、最倧に向かっお䞀歩しか螏み出さない堎合、これは䞀般化EMGEMず呌ばれたす。



EMを䜿甚したPCA゜リュヌション



PCA EMモデルの最適なパラメヌタヌの怜玢にアルゎリズムず最尀法を適甚したす モデル。 芳枬可胜なパラメヌタず朜圚的なパラメヌタの結合尀床は、次のように蚘述できたす。







どこで 任意の分垃です。 次に、匏を容易にするためにパラメヌタヌ分垃の芏則を省略したす。



















倧きさはどこですか 呌ばれた 分垃間の盞違 そしお 。 䟡倀 ゚ントロピヌず呌ばれる 。 パラメヌタに䟝存しない 、最適化䞭にこの甚語を無芖できたす。

























䟡倀 非負でれロの堎合 。 この点で、次のEMアルゎリズムを定矩したしょう。



  1. E 。 これにより、2番目の甚語が無効になりたす 。
  2. M最初の項を最倧化する 。


PPCAは線圢モデルであるため、分析的に解決できたす。 しかし、代わりに、最倧化が最埌たで実行されず、募配䞊昇が最適に向かっお1ステップしかない堎合、䞀般化されたEMアルゎリズムの助けを借りおそれを解決しようずしたす。 さらに、確率的募配䞊昇を䜿甚したす。 圌のステップは、平均的にのみ最適化ぞのステップになりたす。 デヌタはiidなので、







フォヌムの匏に泚意しおください 数孊的な期埅です 。 それから







単䞀のサンプルは数孊的な期埅の公平な掚定倀であるため、次の等匏をほが曞き留めるこずができたす。







合蚈、眮換 私達は埗る

























たたは







フォヌミュラ1. PPCAモデルのデヌタの尀床に比䟋する損倱関数。



どこで -芳枬された倉数の次元 。 それでは、PPCAのGEMアルゎリズムを曞きたしょう。 、そしお 。 GEMアルゎリズムは次のようになりたす。



  1. パラメヌタを初期化する 合理的なランダム初期近䌌。
  2. サンプリング -デヌタからのミニバッチのサンプリング。
  3. 朜圚倉数の期埅倀を蚈算したす たたは 。
  4. 代甚 匏1で そしお、パラメヌタの募配䞊昇のステップを螏みたす。 芚えおおくこずが重芁です 入力ずしお取埗し、その内郚の゚ラヌの逆䌝播を蚱可しないでください。
  5. デヌタの尀床ずコントロヌルの可芖倉数の朜圚倉数の期埅倀が倧きく倉わらない堎合、トレヌニングを停止したす。 それ以倖の堎合は、手順2に進みたす。


モデルがトレヌニングされた埌、モデルからサンプルを生成できたす。









PCA問題の数倀解



暙準のSGDを䜿甚しおPPCAモデルをトレヌニングしたしょう。 すべおの詳现を理解するために、おもちゃの䟋を䜿甚しおモデルの動䜜を再床調べたす。 完党なモデルコヌドに぀いおは、 こちらをご芧ください 。この蚘事では、重芁な点のみを取り䞊げたす。



眮く -察角共分散行列を䜿甚した2次元正芏分垃。 -1次元の通垞の朜圚衚珟。









図 1.分垃の点の95が入る䞭倮付近の楕円 。



そのため、最初に行うこずはデヌタの生成です。 サンプルを生成したす 



def normal_samples(batch_size): def example(): return tf.contrib.distributions.MultivariateNormalDiag( [5, 10], [1.2, 2.4]).sample(sample_shape=[1])[0] return tf.contrib.data.Dataset.from_tensors([0.]) .repeat() .map(lambda x: example()) .batch(batch_size)
      
      





次に、モデルパラメヌタヌを決定する必芁がありたす。



 input_size = 2 latent_space_size = 1 stddev = tf.get_variable( "stddev", initializer=tf.constant(0.1, shape=[1])) biases = tf.get_variable( "biases", initializer=tf.constant(0.1, shape=[input_size])) weights = tf.get_variable( "Weights", initializer=tf.truncated_normal( [input_size, latent_space_size], stddev=0.1))
      
      





その埌、可芖倉数のサンプルの朜圚衚珟を取埗できたす。



 def get_latent(visible, latent_space_size, batch_size): matrix = tf.matrix_inverse( tf.matmul(weights, weights, transpose_a=True) + stddev**2 * tf.eye(latent_space_size)) mean_matrix = tf.matmul(matrix, weights, transpose_b=True) # Multiply each vector in a batch by a matrix. expected_latent = batch_matmul( mean_matrix, visible - biases, batch_size) stddev_matrix = stddev**2 * matrix noise = tf.contrib.distributions.MultivariateNormalFullCovariance( tf.zeros(latent_space_size), stddev_matrix) .sample(sample_shape=[batch_size]) return tf.stop_gradient(expected_latent + noise)
      
      





ここでは、tf.stop_gradient...に泚意する必芁がありたす。 この関数は、入力サブグラフ内のパラメヌタヌ倀がこれらのパラメヌタヌに関しお募配に圱響を䞎えるこずを蚱可したせん。 それが必芁です EMアルゎリズムが正しく機胜するために必芁なMステップの間、固定されたたたでした。



損倱関数を曞きたしょう Mステップでの最適化



 sample = dataset.get_next() latent_sample = get_latent(sample, latent_space_size, batch_size) norm_squared = tf.reduce_sum((sample - biases - batch_matmul(weights, latent_sample, batch_size))**2, axis=1) loss = tf.reduce_mean( input_size * tf.log(stddev**2) + 1/stddev**2 * norm_squared) train = tf.train.AdamOptimizer(learning_rate) .minimize(loss, var_list=[bias, weights, stddev], name="train")
      
      







したがっお、モデルはトレヌニングの準備ができおいたす。 モデルの孊習曲線を芋おみたしょう。







図 2.曲線孊習モデルPPCA。



モデルはかなり定期的か぀迅速に収束するこずがわかりたす。これはモデルの単玔さをよく反映しおいたす。 孊習した分垃パラメヌタヌを芋おみたしょう。













図 3.原点からのオフセットのグラフパラメヌタヌ 



それが芋られる 分析倀に迅速に収束 そしお 。 オプションを芋おみたしょう 







図 4.パラメヌタ倉曎のスケゞュヌル 。



倀が芋られたす 1.2に収束、぀たり 予想どおり、入力分垃のより小さい偏差軞に。













図 5.パラメヌタヌ倉曎のグラフ 。



、順番に、おおよその倀になりたした 。 これらの倀をモデルに代入するず、次のようになりたす 、これはデヌタの分垃を埩元したこずを意味したす。



デヌタの分垃を芋おみたしょう。 朜圚倉数は1次元であるため、1次元分垃ずしお衚瀺されたす。 可芖倉数は2次元ですが、䞎えられた共分散行列は察角です。぀たり、その楕円䜓は座暙軞ず敎列しおいたす。 したがっお、座暙軞䞊の分垃の2぀の投圱ずしお衚瀺したす。 これは、䞎えられ孊習された分垃がどのように芋えるかです 最初の座暙軞ぞの投圱









図 6.特定の分垃の予枬 最初の座暙軞䞊。









図 7.孊習した分垃の予枬 最初の座暙軞䞊。



そしお、䞎えられお孊習された分垃は次のようになりたす 2番目の座暙軞ぞの投圱







図 8.特定の分垃の予枬 2番目の座暙軞ぞ。









図 9.孊習した分垃の予枬 2番目の座暙軞ぞ。



したがっお、分析および孊習分垃は次のようになりたす 



図 10.タヌゲット配垃 。





図 11.孊習した分垃 。



孊習されたすべおの分垃は、タスクによっお䞎えられた分垃に非垞に類䌌した分垃に収束するこずがわかりたす。 これを最終的に確認するために、モデルトレヌニングのダむナミクスを芋おみたしょう。









図 12. PPCAモデルの孊習プロセス。孊習された分垃 デヌタ分垃に収束 。



おわりに



指定されたモデルは、線圢モデルである叀兞的なPCAモデルの確率的解釈です。 元の蚘事の数孊を䜿甚し、その䞊にGEMアルゎリズムを構築し、簡単な䟋を䜿甚しお、結果のモデルが分析解に収束するこずを瀺したした。 もちろん、問題がある堎合 正垞ではありたせんでした。モデルはそれほどうたくいかなかったでしょう。 PCAが特定の超平面にないデヌタを完党に凊理しないのず同じように。 分垃を近䌌するより耇雑な問題を解決するには、より耇雑で非線圢のモデルが必芁です。 そのようなモデルの1぀である生成的敵察ネットワヌクに぀いおは、次の蚘事で説明したす。



謝蟞



テキストをレビュヌしおくれたOlga Talanovaに感謝したす。 この蚘事のレむアりトを手䌝っおくれたAndrei Tarashkevichに感謝したす。



All Articles