見出し画像

ジェフリー・ヒントン「ニューラルネットワークの発明に50年かかった」

ここで基本的なことをお話しします。会場の中には、バックプロパゲーションアルゴリズムについてよく理解していない方もいらっしゃると思いますので、簡単に説明させていただきます。その後、いくつかの実例をお見せしますが、これらは少し古くなっているかもしれません。
コンピューターに何かをさせる従来の方法は、プログラムを書くことです。つまり、自分でどうするかを考え、細部にわたってコンピューターに正確に指示を出します。コンピューターは人間のようですが、より速いだけです。新しい方法では、コンピューターに学習アルゴリズムを持つニューラルネットワークのふりをさせます。これもプログラミングですが、その後、特定の問題を解決したい場合は、単に例を示すだけです。
例えば、画像のすべてのピクセルを与えます。ピクセルごとに色を表す3つの数字があり、合計で100万個くらいあるとします。そして、これら300万個の数字を、画像の内容を説明する単語の文字列に変換する必要があります。これは書くのが難しいプログラムです。AIの分野では50年間試みられましたが、近づくことさえできませんでした。しかし、今ではニューラルネットがそれを行うことができます。後でその方法をお見せします。つまり、そのプログラムを書く方法は分かりませんが、ニューラルネットはそれを行うことができるのです。
ニューラルネットを人工ニューロンで構成します。人工ニューロンには、感覚器官や他のニューロンからの入力線があります。各入力線には正または負の重みがあり、これらの重みの強さを変えることで適応します。その動作は、入力線の値を取り、各値に重みを掛け、すべてを足し合わせて総入力を得ます。そして、その総入力の非線形関数として出力を与えます。その関数は右側に示されています。総入力が十分に大きくない場合、沈黙したままですが、総入力が大きくなるとすぐに、総入力が大きくなるにつれて大きくなる応答を与え始めます。
30年間、私たちはうまく機能しない別の種類のニューロンを使っていました。そして、この種類を試したところ、より良く機能しました。これは、この分野の最先端の状況についてある程度の idea を与えてくれます。人々が探求していなかった非常に単純な変更が、物事をはるかに良く機能させるのです。
これらのユニットを複数の層を持つネットワークに接続し、すべての層のニューロンへの入力接続を学習させます。問題は解決されました。あとは、これらの接続を適応させる方法を見つければ、完了です。これらのネットワークは何でもできるからです。つまり、接続を変更する問題だけです。
進化を信じる人なら誰でも思いつく、非常に興味深くシンプルなアルゴリズムがあります。希望的には、皆さんのほとんどがそうだと思います。やり方は、接続の1つを取り、少量の訓練例の典型的なバッチを取り、それをネットワークに通して、ネットワークの性能を確認します。つまり、ネットワークの出力が、この訓練データに対して正しいと思われる答えにどれだけ似ているかを見ます。そして、その1つの重みを変更し、再びこのバッチを通して、それが改善されたかどうかを確認します。改善された場合は変更を保持し、改善されなかった場合は変更を保持せず、元のままにします。以上です。
このアルゴリズムは機能します。これは進化の非常に単純な見方ですが、機能します。突然変異だけを行っているのです。これを十分に長く続ければ、良いことを行うネットワークが得られます。問題は、各重みに対してネットワークを通して大量の例を実際に2回実行する必要があることです。そして、10億個の重みがある可能性があります。
私たちが望むのは、そのアルゴリズムを効率的に行うことです。そのアルゴリズムは、重みをいじり、変化をもたらすいじりだけを保持するという基本的なアルゴリズムです。しかし、それを効率的に行うのは難しいです。そこで、今度は微積分を使って同じことを効率的に行います。
ネットワークの重みを知っているため、または脳が脳の重みを知っているため、実際に重みをいじって効果を見る必要はありません。重みをいじったらどうなるかを想像し、効果を計算することができます。ネットワークのすべての重みを知っていれば、「これを変更したら、出力はこのように変化するだろう」と言えます。そしてそれが良いことなので、これを変更したいと思います。
したがって、出力の不一致を見て、望むものと得たものの不一致から、ネットワークを通して後方に情報を送ることができます。この計算を行い、すべての重みについて、その重みのわずかな変化が出力にどのように影響するか、つまり、その重みのわずかな増加が出力を改善するか悪化させるかを計算します。そして、これをすべての重みに対して並行して行うことができます。
突然変異アルゴリズムが1つの重みについて何をすべきかを理解するのと同じ時間で、すべての重みについて何をすべきかを理解することができます。100万個の重みがある場合、これは100万倍効率的です。100万倍効率的であれば、十分な違いを生み出すことができます。
バックプロパゲーションは大きな可能性を持っていましたが、1990年代までに機械学習の人々はそれを諦めていました。彼らは比較的小さなデータセットしか持っておらず、他のアルゴリズムの方がうまく機能したからです。さらに、これらの他のアルゴリズムについては何かを証明することができましたが、バックプロパゲーションについては機能することを証明できませんでした。また、異なる人々が実行すると異なる答えが得られました。したがって、正しい答えが1つしかないことと、それを得られることを証明できることに固執している場合、バックプロパゲーションはあなたのためのものではありません。実際、人生もそうではありません。
人々が興味を失った理由の1つは、深いネットワークでうまく機能しなかったことと、後で説明する再帰型ネットワークでうまく機能しなかったことです。
その後、カナダで、つまりトロントとモントリオールとニューヨークで、いくつかの技術的な進歩がありました。私たちはそれらの進歩の詳細についてとても気にしていますが、他の人にとってはそれほど重要ではありません。主なメッセージは、多くのラベル付きデータと多くの計算能力があれば、バックプロパゲーションは今や驚くほどうまく機能するということです。講演の残りの部分では、そのことを皆さんに納得してもらおうと努めます。
これが、バックプロパゲーションが大きな影響を与えた最初の実用的な問題です。これは完全に公平ではありませんが、これはトロントで行われたので、最初だったと言い張ります。実際、手書き数字認識では大きな影響を与えましたが、人々はそれは簡単な問題だと言いました。一方、音声認識は難しい問題だと言われました。
そこで、トロント大学の2人の大学院生が、私が取り組んでいたアルゴリズムを取り、音声認識に適用しました。音波を記述する係数を取り、それを複数の隠れ層を通して処理します。これらは多くの隠れユニットがあり、訓練例は数百万程度しかありませんでした。各層のペアの間には400万個のパラメータがあります。これは完全に接続されているためです。
統計学101を学んだ統計学者なら、これが不可能であることがわかるでしょう。訓練例よりもはるかに多くのパラメータがあるからです。統計学101を批判したい場合は、次のように言えるかもしれません。人生で約100億回の固視を行い、それに対して約1万倍多くのシナプスがあります。つまり、1回の固視につき約1万個のシナプスがあります。したがって、あなたも統計学101を満たしていません。
彼らはこれを音波で訓練し、どの音素のどの部分が言われているかを予測しようとしました。スペクトログラムの一部を想像してください。これは基本的に下部にあるものです。スペクトログラムのこの部分を見て、スペクトログラムの中央でどの音素のどの部分をこの人が言おうとしているかを言うのです。そして、確率的な答えを得ます。その後、それらの確率的な答えをすべて集めて、他のものと一緒に流して、もっともらしい発話を見つけます。
現在では、そのようなことはしません。現在行うのは、単に音波を入力し、転写を出力することです。唯一のものはニューラルネットワークです。つまり、現在のニューラルネットワークですが、当時はこれは単にシステムのフロントエンドでした。私たちは音声認識器のフロントエンドをこれに置き換え、それはより良く機能しました。わずかに良くなっただけでしたが、マイクロソフトのLi Dengのような優れた音声の専門家たちは、これがわずかに良く機能し、2人の大学院生が数ヶ月で行ったのであれば、既存の最先端技術を完全に一掃することになるとすぐに気づきました。実際、その後数年でそうなりました。
トロントの大学院生のNavan Jaitlyは、RIMに行ってこの技術を持っていきたいと本当に望んでいました。私はRIMと話をしましたが、彼らは音声認識に興味がないと言いました。彼らがどうなったかは知りません。
2012年までに、GoogleはAndroidでこれを使用していました。これが音声認識の性能が大幅に向上した最初の例でした。それは突然Siriよりも良くなりました。現在、すべての最高の音声認識システムがこのアルゴリズムを使用しています。ただし、より更新されたバージョンを使用しています。一部のシステムはエンドツーエンドで、一部のシステムには他の要素はありません。単にデータで訓練するだけです。発音の仕方や単語の内容などについては、すべて忘れてください。ネットワークがそのすべてを学習します。
2012年に、私の2人の大学院生がILSVRCコンペティションに参加しました。1つのクラスにつき1000枚、合計100万枚の画像があり、そのクラスの物体を認識する必要がありました。これは秘密のテストセットを持つ公開コンペティションだったので、不正はできませんでした。システムをテストセットで実行した人に会議で会いましたが、彼は結果を信じられなかったと言いました。彼は戻って再度実行し、それでも結果を信じられませんでした。性能結果を信じるまでに3回実行する必要がありました。なぜなら、他の人のものよりもはるかに優れていたからです。
2012年の結果を見てみましょう。ニューラルネットを使用しない従来のコンピュータビジョンシステムはすべて、約25%のエラー率で頭打ちになっていました。私たちのシステムはそれをほぼ半分にしました。音声認識と同様に、人々がスイッチを切り替えるとすぐに、何千人もの賢い大学院生と何千人もの経験豊富な開発者がこれを本当にうまく機能させるようになりました。
2015年までに、そのデータセットで人間レベルに達しました。Andrew Karpathyという1人の英雄が実際にこのタスクを自分で行い、多くの時間がかかりましたが、5%のエラー率を達成しました。現在では3%以下のエラー率になっています。つまり、以前のコンピュータビジョンシステムのエラー率の10分の1になっています。これは大きな影響を与えました。部分的には、音声はすでに機能していましたが、人々はそれがニッチだと考えていたからです。音声が最初に機能したのは、大きなラベル付きデータセットを持っていた人々がいたからです。これが機能したとき、人々は大いに興奮しました。そして、知的財産弁護士にとっては非常に良いことでした。
これらは画像の例です。注意してください。これらは1つのオブジェクトがきれいに中央に配置されているような画像ではありません。正規の視点からのものでもありません。チーターのほとんどが欠けています。赤いバーはシステムが最善の推測だと考えたものです。上位5つの推測の中に正解が含まれていれば正解とされます。なぜなら、正解が常に明確とは限らないからです。
新幹線は画像のごく一部しか映っていませんが、正解しています。ハンドグラスは間違えています。はさみだと思っています。他に何だと思っているかを見ると、聴診器やフライパンかもしれないと考えていることがわかります。なぜそう考えるのかがわかります。眼鏡が必要だということがわかります。重要なのは、何かの視覚的な外観を捉えているということです。間違った答えを見ると、正解を見るよりも多くのことがわかります。
次に、再帰型ネットワークに進みます。これらのフィードフォワードネットワークは、音声の音素や画像のオブジェクトを認識するのに非常に優れていました。しかし、シーケンスを扱うには再帰型ネットワークが必要です。現在使用されている再帰型ネットワークの種類は、1997年のHochreiとSchmidhuberの研究に基づいています。これについては説明しません。私は単純化して説明します。これらの再帰型ネットワークが実際にこれほど単純であればいいのですが、そうではありません。
再帰型ネットワークの動作は次のとおりです。ここに示されているような1つだけではなく、多くの入力ニューロンがあります。これは特定の時点でのデータを表しています。文章の単語や動画の画像を表す可能性があります。それが入力です。多くの隠れニューロンがあり、これらの隠れニューロンは自分自身に接続しています。
ここで2番目の時間スライス、2番目の列を見て、真ん中のユニットを見てください。それはシステムへの入力、つまり動画のフレームや単語からの入力を受け取ります。また、すべての隠れニューロンの前の状態からの入力も受け取ります。つまり、情報を記憶し、蓄積しているのです。これと同じものをバックプロパゲーションで訓練することができます。
やり方は、入力を供給し、隠れユニットに情報を蓄積させます。最後に到達したら、正しい答えを生成できるかどうかを確認します。できない場合は、情報をバックプロパゲートします。つまり、これらの矢印を通って後方に進むだけです。これらの矢印について1つ気づくことは、有向非巡回グラフを形成しているということです。つまり、矢印に従って円を描くことはできません。これは、バックプロパゲーションを行うことができるということです。基本的に、後方に進んでもこんがらがることはありません。
Ilya SutskeverとOriol VialsとQuoc Leがほぼ同時に、そしてモントリオールのYoshua BengioとDzmitry BahdanauとKyunghyun Choが、これらのアルゴリズムを機械翻訳に使用する方法を開発しました。最初はクレイジーに思えました。
私たちが行おうとしていることは、1つの言語で文章を読み取り、それを思考に変換するエンコーダーネットワークを持つことです。そして、その思考を取り、別の言語の文章に変換します。もちろん、そのためには思考が何であるかを知る必要があります。
AIの分野では、ほとんどの人々が、実際には今でもほとんどの人々が、非常に単純な間違いを犯しています。彼らは、シンボルの文字列が入力され、何かを言うときにシンボルの文字列が出力されるので、その間にあるものもシンボルの文字列のようなものでなければならないと考えています。これは、ピクセルが入力され、何かを印刷するときにピクセルが出力されるので、その間にあるものもすべてピクセルでなければならないと考えるのと同じくらい愚かです。
実際、シンボリックAIの人々は、その間のすべてがピクセルであるという見方を笑っていました。これは特にSteve Kosslyn という人の見方でした。彼らはそれを笑いましたが、彼らも全く同じ間違いを犯していました。彼らは、入ってくるものと出ていくもの、つまり外部から知ることができる唯一のものが、中間にあるものと同じ種類のものでなければならないと考えていました。脳の中にあるのは単に神経活動の大きなベクトルであり、そこにシンボルはないことを知っているにもかかわらずです。特に、シンボリックな表現はありません。そして、確かにシンボリックな表現を操作するためのルールもありません。少なくとも、高校で多くの年月を過ごした後には、それらのルールのいくつかを本当に上手く追うことができないかもしれませんが、それは事業を行う基本的な方法ではありません。
このエンコーダーネットワークに1つずつ単語を入力します。まず、それらの単語をベクトル表現に変換します。これは多くの特徴の集まりです。そしてそれを学習します。これらの接続はすべてバックプロパゲーションによって学習されます。基本的に、例えば「火曜日」のベクトルを「水曜日」のベクトルと非常に似たものにし、「しかし」のベクトルとは非常に異なるものにします。
単語が入ってくると、隠れユニットに情報を蓄積します。そして、上部の英語の文の最後に、隠れユニットの状態があります。これを私は思考と呼びます。これは冗談ではありません。これが私が思考だと信じているものです。思考とは、大量のニューロンの活動パターンであり、物事が起こるために検査される必要のない活動パターンです。それは物事を引き起こすのです。
例えば、「ジョンは『くそっ』と思った」とか「ジョンは『外は雪が降っている』と思った」と言うことができます。引用符の中に入れられるものなら何でも、ジョンは考えることができます。さらに重要なことに、ジョンはそれを言うことができます。ジョンが「外は雪が降っている」と思ったなら、彼はあなたに「外は雪が降っている」と言うかもしれません。
明らかに、思考にアクセスする方法、私が考えていることをあなたに伝える方法は、思考を引き起こした言葉か、思考が引き起こすであろう言葉のどちらかによってです。それは両端でつながっていますが、思考そのものは言葉のように見えません。それは完全に異なるものです。実際、それはこのように見えます。必ずしも赤である必要はありません。
その思考ベクトルを取り、デコーダーネットワークに与えます。デコーダーネットワークは「わかった、それが思考だった」と言います。英語からフランス語への翻訳を行っているとしましょう。「フランス語の最初の単語は何だろう」と考えます。思考を取り、「そうだ、最初の単語はおそらく『Le』だが、『La』かもしれないし、他のものかもしれない」と言います。すべての様々な単語の確率を与えます。
ネットワークが何を考えているかを見る一つの方法、思考をデコードする一つの方法、最良の方法ではありませんが、一つの方法は、「わかった、ネットワークがかなり可能性があると考えた単語を取り、それらの中から確率に応じて1つを選び、そしてネットワークに嘘をつきます。『はい、それが正解でした。正解を得ました。』では、次に何が来ると思いますか」と言うことです。そうすると、次の単語の予測を与えてくれます。「そう、それも正解でした。次は何が来ると思いますか」と言います。このようにして、最終的にピリオドを出すまで一連の単語を与えてくれます。そして、それが翻訳になります。
驚くべきことに、これは実際に機能します。バックプロパゲーションで全体を訓練すると機能するのです。Google翻訳は以前、巨大なフレーズテーブルを持っていました。英語のこのフレーズはフランス語のあのフレーズに対応する傾向があるというものです。そして、これらのテーブルをすべて組み合わせて、もっともらしいフランス語の文を作ろうとしていました。
しかし、言語学的知識を全く持たないシステムを使用する方が、はるかにうまく機能することがわかりました。実際には言語学的知識を持っていますが、それは人々によって入力されたものではありません。現在、Google翻訳は多くの言語ペアで、そしてまもんすべての言語ペアで、次のように機能します。
言語を取り、その言語の単語を自動的に32,000の断片に分割します。英語の断片には、「the」のような全体の単語、個々の文字、「in」や「ed」や「s」のようなものが含まれます。入力文字列を、この32,000シンボルのアルファベットから引き出された32のシンボルの文字列で表現します。
英語の文を入力し、大きな翻訳データベースを持ち、そしてフランス語の文を生成します。フランス語の文を生成する際、各時点で正しい単語に割り当てられた確率を見ます。そして「ネットワークに示されているすべての接続を通してバックプロパゲートし、その接続強度のわずかな変化が正しい単語の確率をどのように増加させるかを計算する情報を後方に送信しよう」と言います。それだけです。
ランダムな重みから始め、すべてのこの情報を送り返して、正しい単語の確率をわずかに増加させるように強度をわずかに変更します。これを多くのものに対して行います。そして、驚いたことに、それは最高の機械翻訳システムになります。
モントリオールの研究者たちによって行われた1つの大きな改善は、注意機構です。私が説明したシステムは英語を思考に変換し、その思考をフランス語に変換します。もちろん、実際の翻訳者はそのようには行動しません。そうすることもできますが、フランス語を生成しながら英語を振り返る方がうまくいきます。
そこで、彼らはネットワークに、英語の入力単語ではなく、英語の単語を受け取ったときの隠れ状態を振り返らせました。そして、どこを見るべきかを学習させました。これはかなり洗練されています。ネットワークに追加のモジュールがあり、フランス語の文を生成しながら英語の文のどこに注意を向けるべきかを学習しようとしています。そして、それは成功し、全体をより良く機能させ、はるかに少ないデータで訓練できるようになりました。これは1つの勝利です。
単語の断片については既に説明しました。単語を使用せず、単語の断片を使用します。実際、個々の文字を使用しても機能します。ここに驚くべきことがあります。中国語から英語に翻訳していて、次の選択肢があるとします。中国語のシンボルの大きなリストを持つことができます。なぜなら、全体の単語にシンボルがあるからです。または、中国語のシンボルのビットマップを与えることができます。入力として何を選びますか?
実際には、ビットマップを与える方が良く機能することがわかります。なぜなら、バックプロパゲーションは中国語のシンボルが実際に構成要素構造を持っていることを学習するからです。中国語のシンボルには、例えば家に走る人など、よくわかりませんが、その中の小さな部分が実際に形態素構造を持っています。それをビットマップから学習します。
これは言語学者にとってはかなり悪いニュースです。本当に良い音声認識システムを作るために必要な言語学者の数は0です。実際、これは完全に不公平です。よくキュレートされたデータセットが必要です。そして、言語学者はよくキュレートされたデータセットを得る方法について多くのことを知っているでしょう。しかし、ニューラルネットワークに何をすべきか教える必要はありません。
では、前に行った視覚と組み合わせてみましょう。ImageNetで訓練された、画像内のオブジェクトを認識するネットワークを取り、翻訳するときに思考を得て、その思考を言葉にすると言いました。では、英語を使って思考を得る代わりに、ImageNetのものを使って画像を見て思考を得て、その思考から出力を生成してみましょう。
ネットワークが持つ思考または知覚は、単に答えの直前、つまり最後の隠れ層のすべてのユニットの活動です。なぜなら、ネットワークが行ったのは、ピクセルを多くのオブジェクトに関連する活動に変換することだからです。しかし、それは画像内の多くのオブジェクトに関連しています。そして、オブジェクトの名前を言う前に、多くのオブジェクトに関連する情報を持っています。
その知覚をエンコーディングとして使用し、それをデコードします。そして、明らかに知覚を文章に変換するように訓練します。そのためには、いくつかの訓練が必要です。ImageNetの最後の層を取り、マイクロソフトが親切にも提供してくれた、数十万枚の画像とそれぞれに複数の可能なキャプションがついた大きなデータベースを使用します。デコーダーを訓練して、その知覚を文章に変換します。
そうすると、例えばこの画像を見せると、「人々が青空市場で買い物をしている」と言います。データベースによると、実際の正解は「人々が青空市場でしゃがみこんでいる」です。これはしゃがみこんでいる部分が含まれているので、より良いです。
そして、最初に見た例では、「子供がぬいぐるみを持っているクローズアップ」と言います。実際のキャプションは「ソファで眠っている少女がぬいぐるみのクマを抱きしめている」で、これはやや良いですが、私はこれが機能したことに完全に驚かされました。
GoogleのOriol VialsとSamy Bengio、そして他の研究者たちが、これが機能することを示してくれたとき、私は「これはAIの夢だ。画像を見て、そこに何があるかを言えること。これは基本的なAIだ。これができれば、本当に何かをつかんでいる」と思いました。そして、それは機能しました。その後約1週間で、他の多くの人々も同様のことを行いました。私たちのものがわずかに良かっただけです。
文書処理にはさまざまな意味合いがあります。文章を思考に変換し、それらの思考の構造をモデル化できれば、自然な推論を得ることができます。自然な推論を望まないかもしれません。なぜなら、ほとんどの人の自然な推論はあまり良くないからです。しかし、少なくともそれをモデル化することはできます。
これを適切に行うには、脳に匹敵する数のパラメータ、つまり100兆個が必要だと思います。現在のニューラルネットワークは数十億個のパラメータしか持っていません。ここにパズルがあります。数十億個の重みを使って、複数の言語ペア間で翻訳できます。これは脳のスキャンの1ボクセル未満です。したがって、脳が私たちがでみることよりも驚くほど優れているか、異なるアルゴリズムを使用しているか、またはバックプロパゲーションをやや非効率的に使用しているかのどれかです。私にはどれなのかわかりません。
医療画像では、非常に近い将来、放射線科医よりも優れるでしょう。既に皮膚がんについては、皮膚科医と同等のシステムがあります。これは約10万枚の画像で訓練されました。1000万枚で訓練すれば、かなり優れたものになるでしょう。
ここで念頭に置くべき1つのことは、医師がしばしば心配することですが、正解をどこから得るかということです。しかし、ここに興味深いことがあります。医師が生成したラベルでニューラルネットワークを訓練すると、ニューラルネットワークは医師よりもはるかに優れることができます。つまり、医師たちは皆意見が一致せず、70%の一致率しかありません。ニューラルネットワークは実際に何が起こっているかを理解し、訓練に使用したラベルよりもはるかに優れることができます。これは逆説的に思えますが、そうではありません。
実際には、真の答えを必要としません。真の答えに十分に関連したものがあれば、ニューラルネットワークは医師が理解できなかったことを理解できます。そして、より良い結果を得ることができます。
最後に、2009年の音声認識に関与した同じ学生、George Dahlについての話をしたいと思います。2012年か2011年だと思いますが、彼はKaggleのコンペティションにかなり遅れて参加しました。コンペティションは、数千の分子の特性が与えられ、その分子が何かに結合するかどうかを予測するというものでした。
製薬会社はこれを知りたがっていて、分子を合成せずにそれを行いたいと考えています。つまり、何かに結合するのに良い候補がどれかを予測したいのです。Georgeは基本的に、私たちの標準的なニューラルネットワーク、つまり複数層の正規化線形ユニットを使用しました。ここでは、訓練ケースの数よりもはるかに多くのパラメータを使用していました。おそらく15,000の訓練ケースに対して100万個のパラメータを使用していたでしょう。
そして、それは機能しました。他の方法と組み合わせましたが、実際には組み合わせる必要はありませんでした。他の方法と組み合わせなくても、コンペティションに勝っていたでしょう。そして、2万ドルの賞金がありました。GeorgeはMKに「賞金をください」と言いました。MKは「コンペティションの一部として、使用したQSARを教えてもらう必要があります」と言いました。Georgeは「QSARって何ですか」と言いました。
これは少し恥ずかしい話です。なぜなら、QSARという分野があるからです。QSARは定量的構造活性相関のことです。つまり、構造がどのように活性を引き起こすかということです。この分野は約20年続いており、専門誌があり、年次会議があり、多くの人々がこれを専門としています。そして、Georgeはその分野の名前さえ知らずに、彼らを一掃したのです。以上です。

この記事が気に入ったらサポートをしてみませんか?