深層学習を備えたニューラル ネットワーク。 深層学習による自動テキスト処理

この記事から、ディープラーニングとは何かを学びます。 この記事には、この分野を習得するために使用できるリソースも多数含まれています。

現代世界医療から製造に至るまで、ディープラーニングはあらゆるところで使用されています。 企業は、音声や物体認識、機械翻訳などの複雑な問題を解決するためにこのテクノロジーに注目しています。

今年の最も印象的な成果の 1 つは、AlphaGo が世界最高の囲碁プレイヤーに勝利したことです。 囲碁に加えて、チェッカー、チェス、リバーシ、ジェパディなど、他のゲームでも機械が人間に勝利しました。

おそらく、ボードゲームに勝つことは解決策には当てはまらないように思われます 本当の問題、しかし、まったくそうではありません。 囲碁は人工知能に負けないように設計されています。 これを行うには、このゲームで重要なことの 1 つ、つまり人間の直感を学ぶ必要があります。 この開発のおかげで、以前はコンピュータでは解決できなかった多くの問題を解決できるようになりました。

明らかに、ディープラーニングはまだ完璧には程遠いですが、すでに商業的に役立つ段階に近づいています。 たとえば、これらの自動運転車。 Google、Tesla、Uberなどの有名企業はすでに自動運転車を街路に導入しようとしている。

フォード、自動運転シェアの大幅な増加を予測 車両 2021年までに。 米国政府も彼らのための一連の安全規則を策定することに成功した。

ディープラーニングとは何ですか?

この質問に答えるには、機械学習、ニューラル ネットワーク、人工知能とどのように相互作用するかを理解する必要があります。 これを行うには、同心円を使用した視覚化方法を使用します。

外側の円は人工知能全般 (コンピューターなど) です。 その少し先には機械学習があり、その中心にあるのがディープラーニングと人工ニューラルネットワークです。

大まかに言えば、ディープ ラーニングは人工ニューラル ネットワークのより便利な名前にすぎません。 このフレーズの「深い」とは、ニューラル ネットワークの複雑さ (深さ) の程度を指しますが、多くの場合、それは非常に表面的なものになることがあります。

最初のニューラル ネットワークの作成者は、大脳皮質の構造にインスピレーションを受けました。 ネットワークの基本層であるパー​​セプトロンは、本質的に生物学的ニューロンの数学的類似物です。 そして、脳と同様に、ニューラル ネットワークでも、互いに交差するパーセプトロンが現れることがあります。

ニューラル ネットワークの最初の層は入力層と呼ばれます。 この層の各ノードは、入力として何らかの情報を受け取り、それを他の層の後続のノードに送信します。 ほとんどの場合、1 つの層のノード間には接続がなく、チェーンの最後のノードがニューラル ネットワークの結果を出力します。

中間のノードは、出力ノードや入力ノードのように外部との接続がないため、隠れノードと呼ばれます。 これらは、前のレイヤーがアクティブ化された場合にのみ呼び出されます。

ディープラーニングは本質的に、パターンを使用して複雑な問題 (音声認識など) を解決するために多くのレイヤーを使用するニューラル ネットワーク トレーニング手法です。 80 年代には、コストが高くデータ機能が限られていたため、ほとんどのニューラル ネットワークは単層でした。

機械学習を人工知能の分野または亜種と考えると、深層学習はそのような分野の特殊なタイプになります。

機械学習では、すぐには答えが得られないコンピューター インテリジェンスが使用されます。 代わりに、コードはテスト データ上で実行され、結果の正確さに基づいて進行状況を調整します。 このプロセスを成功させるには、通常、静的手法や線形代数を記述するさまざまなテクニック、特別なソフトウェア、コンピューター サイエンスが使用されます。

深層学習の手法

ディープラーニング手法は主に 2 つのタイプに分類されます。

  • 個別指導トレーニング
  • 教師なし学習

最初の方法では、特別に選択されたデータを使用して、 望ましい結果。 データを手動で選択する必要があるため、非常に多くの人の介入が必要になります。 ただし、分類と回帰には役立ちます。

あなたが会社の経営者で、部下の契約期間に対するボーナスの影響を判断したいと想像してください。 事前に収集されたデータを使用すると、教師あり学習方法が不可欠であり、非常に効果的になります。

2 番目の方法は、事前に用意された回答や作業アルゴリズムを意味しません。 データ内の隠れたパターンを特定することを目的としています。 通常、顧客を行動ごとにグループ化するなど、クラスタリングおよび関連付けタスクに使用されます。 Amazon の「彼らもこれで選ぶ」は関連付けタスクの変形です。

教師あり学習方法は多くの場合非常に便利ですが、より複雑なバージョンの方がさらに優れています。 ディープラーニングは、人間による監視を必要としないニューラル ネットワークであることが証明されています。

ディープラーニングの重要性

コンピューターは長い間、画像内の特定の特徴を認識するテクノロジーを使用してきました。 しかし、結果は成功とは程遠いものでした。 コンピューター ビジョンはディープ ラーニングに信じられないほどの影響を与えました。 現在、すべての認識問題を解決しているのは、これら 2 つの技術です。

特にFacebookはディープラーニングを用いて写真内の顔を認識することに成功しています。 これは単純なテクノロジーの進歩ではなく、これまでの考えをすべて変える転換点です。「人は、2 枚の異なる写真に同じ人物が写っているかどうかを 97.53% の確率で判断できます。 Facebook チームが開発したプログラムは、照明や人がカメラを直接見ているか横を向いているかに関係なく、97.25% の確率でこれを実行できます。」

音声認識も大きな変化を遂げました。 中国の大手検索エンジンの 1 つである Baidu のチームは、モバイル デバイス上でテキストを書く速度と精度において人間を上回る音声認識システムを開発しました。 英語と北京語で。

特に興味深いのは、2 つの完全に異なる言語に共通のニューラル ネットワークを作成するのに、それほど多くの労力が必要でなかったということです。「歴史的に、人々は中国語と英語を完全に 2 つであると考えていました」 さまざまな言語そのため、それぞれに異なるアプローチが必要でした」と、Baidu 研究センター所長の Andrew Ng 氏は言います。 「学習アルゴリズムは現在非常に一般化されており、 ただ学ぶ。"

Google はディープラーニングを使用して、自社のデータセンターのエネルギーを管理しています。 冷却資源のコストを 40% 削減することができました。 これはエネルギー効率が約 15% 向上し、数百万ドルの節約になります。

深層学習マイクロサービス

ここ 短いレビューディープラーニングに関連したサービス。

イラストタガー。 Illustration2Vec によって強化されたこのサービスでは、画像の内容を事前に理解するために、画像に「保護」、「疑わしい」、「危険」、「著作権」、「一般」の評価を付けることができます。

  • GoogleのTheanoアドオン
  • PythonとNumpyで編集可能
  • 特定範囲の問題を解決するためによく使用されます
  • 汎用ではありません。 マシンビジョンに焦点を当てる
  • C++で編集
  • Pythonのインターフェースがある

ディープラーニングに関するオンラインコース

Google と Udacity は提携して、Udacity 機械学習コースの一部としてディープ ラーニングに関する無料コースを作成しました。 このプログラムは、機械学習、特に深層学習の分野の開発を目指す経験豊富な開発者によって主導されています。

もう 1 つの人気のあるオプションは、Coursera と Stanford がサポートする Andrew Ng による機械学習コースです。

  1. 機械学習 - スタンフォード by Andrew Ng on Coursera (2010-2014)
  2. 機械学習 - カリフォルニア工科大学 by Yaser Abu-Mostafa (2012-2014)
  3. 機械学習 - カーネギーメロン、トム・ミッチェル著 (2011 年春)
  4. 機械学習用のニューラル ネットワーク – Coursera のジェフリー ヒントン (2012)
  5. ニューラルネットワーククラス– シャーブルック大学のヒューゴ・ラロシェル (2013)

深層学習に関する書籍

前のセクションのリソースはかなり広範な知識ベースに基づいていますが、Grokking Deep Learning は逆に初心者を対象としています。 著者が言うように、「11 年生を修了し、Python の書き方を大まかに理解している場合は、ディープラーニングを教えます。」

この本の代わりに人気があるのは、「Deep Learning Book」というわかりやすいタイトルの本です。 この分野に取り組むために必要な数学をすべて網羅しているので、特に優れています。

  1. 「ディープ ラーニング」ヨシュア ベンジオ、イアン グッドフェロー、アーロン クールヴィル著 (2015)
  2. 「ニューラルネットワークとディープラーニング」マイケル・ニールセン著 (2014)
  3. 「ディープ ラーニング」Microsoft Research (2013)
  4. モントリオール大学 LISA 研究所の「ディープ ラーニング チュートリアル」(2015 年)
  5. 「neuraltalk」アンドレイ・カルパシー著
  6. 「遺伝的アルゴリズム入門」
  7. 「人工知能への現代的なアプローチ」
  8. 「ディープラーニングとニューラルネットワークの概要」

ビデオと講義

Deep Learning Simplified は素晴らしい YouTube チャンネルです。 彼らの最初のビデオは次のとおりです。

』(マニング出版)。

この記事は、ディープ ラーニングに関してすでに十分な経験がある人 (たとえば、この本の第 1 章から第 8 章までをすでに読んだ人) を対象としています。 膨大な知識が想定されます。

深層学習: 幾何学的ビュー

ディープラーニングの最も驚くべき点は、そのシンプルさです。 10 年前には、勾配降下法でトレーニングされた単純なパラメトリック モデルを使用して、機械の認識問題で驚くべき結果が得られるとは誰も想像できませんでした。 今、私たちに必要なのは 十分な大きさトレーニングされたパラメトリック モデル 十分な大きさサンプルの数。 ファインマンはかつて宇宙について次のように述べました。 複雑ではない、ただ量が多いだけだ».

ディープラーニングでは、すべてがベクトルです。 ドット V 幾何学的な空間。 モデルの入力データ (テキスト、画像など) とそのターゲットは、最初に「ベクトル化」されます。つまり、入力として何らかの初期ベクトル空間に、出力としてターゲット ベクトル空間に変換されます。 深層学習モデルの各層は、そこを通過するデータに対して 1 つの単純な幾何学的変換を実行します。 モデル レイヤーのチェーンを組み合わせると、非常に複雑な 1 つの幾何学的変換が作成され、多数の単純な幾何学的変換に分割されます。 この複雑な変換では、点ごとに入力データ空間をターゲット空間に変換しようとします。 変換パラメータはレイヤーの重みによって決定され、モデルの現時点でのパフォーマンスに基づいて常に更新されます。 主な機能幾何学的変換 - あるべき姿 微分可能なつまり、勾配降下法を通じてそのパラメーターを見つけることができるはずです。 直観的には、これは幾何学的モーフィングがスムーズかつ連続的でなければならないことを意味しており、これが重要な制約です。

この複雑な幾何学的変換を入力データに適用するプロセス全体は、紙のボールの包装を解こうとしている人を描写することで 3D で視覚化できます。くしゃくしゃになった紙のボールは、モデルが処理を開始するさまざまな入力データです。 紙のボールを持った人の動きは、単一​​のレイヤーによって実行される単純な幾何学的変換のようなものです。 展開ジェスチャの完全なシーケンスは、モデル全体の複雑な変換です。 ディープラーニング モデルは、複雑で多様な多次元データを解明するための数学的マシンです。

それが深層学習の魔法です。値をベクトル、幾何学的空間に変換し、その後、ある空間を別の空間に変換する複雑な幾何学的変換を徐々に学習します。 必要なのは、元のデータにあるあらゆる関係を伝えるのに十分な大きさのスペースだけです。

ディープラーニングの限界

この単純な戦略を使用して解決できる問題の範囲はほぼ無限です。 しかし、それらの多くは依然として現在の深層学習技術では到達できません。 莫大な量手動で注釈が付けられたデータ。 たとえば、プロダクト マネージャーが作成したソフトウェア機能の英語の説明の数十万、さらには数百万のデータ セットと、それらの要件を満たすためにエンジニアのチームが開発した対応する基準年を収集できるとします。 このデータがあっても、単に製品の説明を読んで対応するコードベースを生成するように深層学習モデルをトレーニングすることはできません。 これは多くの例のうちの 1 つにすぎません。 一般に、プログラミングや科学的手法の適用、長期計画、アルゴリズム形式のデータ操作など、推論を必要とするものは、どれだけ多くのデータを投入しても、深層学習モデルの能力を超えています。 並べ替えアルゴリズムを実行するためにニューラル ネットワークをトレーニングするだけでも、信じられないほど難しい作業です。

その理由は、ディープラーニングモデルは「だけ」だからです。 単純で連続的な幾何学的変換のチェーン、あるベクトル空間を別のベクトル空間に変換します。 できることは、学習可能な X から Y への連続変換が可能であり、可用性があれば、あるデータ セット X を別のデータ セット Y に変換することだけです。 高密度のサンプルセットトレーニング データとしての X:Y 変換。 したがって、深層学習モデルはプログラムの一種と考えることができますが、 ほとんどのプログラムは深層学習モデルとして表現できません- ほとんどの問題では、問題を解決する実際に適切なサイズのディープ ニューラル ネットワークが存在しないか、存在する場合があります。 教えられないつまり、対応する幾何学的変換が複雑すぎるか、トレーニングに適したデータが存在しない可能性があります。

既存の深層学習技術をスケールアップして、より多くのレイヤーを追加し、より多くのトレーニング データを使用しても、これらの問題の一部は表面的にしか軽減できません。 深層学習モデルが表現できるものは非常に限られており、ほとんどのプログラムはデータ多様体の連続的な幾何学的モーフィングとして表現できないという、より根本的な問題は解決されません。

機械学習モデルを擬人化するリスク

現代の AI の非常に現実的なリスクの 1 つは、深層学習モデルがどのように機能するかを誤解し、その機能を誇張してしまうことです。 人間の心の基本的な特徴は「人間精神のモデル」、つまり目標、信念、知識を周囲のものに投影する傾向です。 石に笑顔の絵が描かれると、突然私たちは精神的に「幸せ」になります。 これを深層学習に適用すると、たとえば、画像のテキスト説明を生成するモデルのトレーニングに多かれ少なかれ成功できれば、モデルは画像の内容だけでなく画像の内容も「理解」していると考える傾向があることを意味します。生成された説明。 その後、トレーニング データに示されている一連の画像からのわずかな逸脱により、モデルがまったく不合理な記述を生成し始めたときに、私たちは非常に驚きます。

特に、これは「敵対的な例」で最も顕著です。これは、誤分類されるように特に選択された深層学習ネットワーク入力データのサンプルです。 入力データ空間で勾配上昇を実行して、たとえば特定の畳み込みニューラル ネットワーク フィルターの活性化を最大化するサンプルを生成できることはすでにご存知でしょう。これは、第 5 章で説明した視覚化テクニックの基礎です (注: 書籍) 「Python によるディープ ラーニング」)、第 8 章の Deep Dream アルゴリズムと同様です。同様の方法で、勾配上昇を通じて画像をわずかに変更して、特定のクラスのクラス予測を最大化できます。 パンダの写真を撮り、「テナガザル」の勾配を追加すると、ニューラル ネットワークにそのパンダをテナガザルとして分類させることができます。 これは、これらのモデルの脆弱性と、それが導く入力から出力への変換と私たち自身の人間の認識との大きな違いの両方を示しています。

一般に、深層学習モデルは入力データを理解できません。 少なくとも、人間的な意味ではありません。 画像、音、言語に対する私たち自身の理解は、人間として、つまり物質的な地球上の存在としての感覚運動経験に基づいています。 機械学習モデルはそのような経験にアクセスできないため、人間のような方法では入力データを「理解」できません。 モデルをトレーニングするための多数の例に注釈を付けることで、その特定の例セットについてデータを人間の概念に還元する幾何学的変換を強制的に学習させますが、この変換は私たちの心の元のモデルの単純化されたスケッチにすぎません。身体エージェントとしての私たちの経験から開発されたものは、鏡の中のかすかな反射のようなものです。

機械学習の実践者として、このことを常に念頭に置いて、ニューラル ネットワークが実行しているタスクを理解していると信じる罠に決して陥ってはいけません。少なくとも私たちにとって意味のある方法では理解していません。 彼らは、私たちがトレーニングしたいものとは別の、より具体的なタスク、つまり入力学習パターンをターゲット学習パターンにポイントツーポイントで変換するだけでトレーニングされています。 トレーニング データと異なるものを見せれば、非常にばかげた方法で壊れるでしょう。

局所的な一般化と極端な一般化

深層学習モデルが行う入力から出力への直接的な幾何学的モーフィングと、人間の思考方法と学習方法との間には、根本的な違いがあるようです。 人は、一連のトレーニング サンプルを処理することによってではなく、身体的な経験から自分自身を学習するだけではありません。 学習プロセスの違いに加えて、根底にある信念の性質にも根本的な違いがあります。

人間は、ニューラルネットワークやおそらく昆虫のように、即時の刺激を即時の反応に変換する以上の能力を持っています。 人々は、現在の状況、自分自身、そして他の人々についての複雑で抽象的なモデルを頭の中に持ち、これらのモデルを使用してさまざまな予測を行うことができます。 可能なオプション将来を見据え、長期的な計画を実行します。 彼らは、既知の概念を組み合わせて、これまで知らなかったことを想像することができます。たとえば、ジーンズを履いた馬の絵を描いたり、宝くじに当たったら何をするかを想像したりすることができます。 仮説を立てて考える能力、私たちが直接経験したことをはるかに超えて精神空間のモデルを拡張する能力、つまり、実行する能力 抽象化そして 推論、おそらく人間の認知の決定的な特徴です。 私はこれを「究極の一般化」と呼んでいます。つまり、データをほとんどまたはまったく使用せずに、これまでに経験したことのない新しい状況に適応する能力です。

これは、私が「局所一般化」と呼ぶ深層学習ネットワークの動作とはまったく対照的です。つまり、新しい入力データがトレーニング中に遭遇したデータと少しでも異なる場合、入力データを出力データに変換することはすぐに意味を失います。 たとえば、月に着陸する予定のロケットの適切な発射パラメータを学習するという問題を考えてみましょう。 このタスクにニューラル ネットワークを使用し、教師付きまたは強化トレーニングを行う場合は、数千または数百万の飛行軌道を与える必要があります。 緻密な例のセット入力値空間で、入力値空間から出力値空間に確実に変換する方法を学びます。 対照的に、人間は抽象化の力を利用して物理モデル (ロケット科学) を作成し、わずか数回の試行でロケットを月に到達させる正確な解決策を導き出すことができます。 同様に、制御するニューラルネットワークを開発した場合、 人体彼女に車にひかれずに街を安全に歩く方法を学んでほしいと思っているのですが、ネットワークは毎晩何千回も停止する必要があります。 異なる状況 x 車が危険であると結論付け、それを避けるための適切な行動を身に付ける前に。 新しい都市に移動すると、ネットワークは知っていることのほとんどを再学習する必要があります。 その一方で、人々は決して死ぬことなく安全な行動を学ぶことができます。これもまた、仮説的な状況の抽象的なシミュレーションの力のおかげです。

したがって、機械の認識が進歩したにもかかわらず、私たちは人間レベルの AI からはまだ遠く離れています。私たちのモデルができるのは、 局所的な一般化、人間の精神の能力がある一方で、過去のデータに非常に近い必要がある新しい状況に適応します。 極端な一般化、まったく新しい状況にすぐに適応したり、遠い将来の計画を立てたりします。

結論

ここで覚えておく必要があるのは、これまでのところディープ ラーニングの唯一の本当の成功は、人間が注釈を付けた大量のデータを前提として、連続幾何学的変換を使用して X 空間を Y 空間に変換する機能だけです。 良い実行この課題は業界全体にとって革命的な進歩を表していますが、人間レベルの AI の実現にはまだ遠いです。

これらの制限の一部を取り除き、人間の脳と競争し始めるには、入力から出力への直接変換から離れ、 推論そして 抽象化。 コンピュータ プログラムは、さまざまな状況や概念を抽象的にモデル化するための適切な基盤となる可能性があります。 以前 (注: Python によるディープラーニングで) 機械学習モデルは「学習するプログラム」として定義できると述べました。 現時点では、可能なすべてのプログラムの狭い特定のサブセットのみをトレーニングすることができます。 しかし、各プログラムをモジュール式かつ反復的にトレーニングできたらどうなるでしょうか? どうすればそこに到達できるかを見てみましょう。

ディープラーニングの未来

深層学習ネットワークの仕組み、その限界、現状について私たちが知っていることを踏まえると、 科学研究、中期的に何が起こるかを予測できますか? この件に関する私の個人的な考えをいくつか紹介します。 私は予測のための水晶玉を持っていないので、私が期待していることの多くは実現しない可能性があることに注意してください。 これは完全な憶測です。 私がこれらの予測を共有するのは、将来完全に実現すると期待しているからではなく、興味深いものであり、現在にも当てはまるからです。

大まかに言うと、私が期待できる主な分野は次のとおりです。

  • モデルは、現在の微分可能な層よりもはるかに豊富なプリミティブの上に構築された汎用コンピューター プログラムに近づくでしょう。 推論そして 抽象化、これがないことが現在のモデルの根本的な弱点です。
  • これを可能にする新しい形式の学習が出現し、モデルが単なる微分可能な変換から脱却できるようになります。
  • モデルに必要な開発者の入力は少なくなります。ノブを常にひねるのはあなたの仕事ではありません。
  • 学習した機能とアーキテクチャがより体系的に再利用されるようになるでしょう。 再利用可能なモジュール式ルーチンに基づくメタ学習システム。
さらに、これらの考慮事項は、依然として機械学習の基礎である教師あり学習に特に適用されるものではなく、教師なし学習、教師あり学習、強化学習を含むあらゆる形式の機械学習にも当てはまります。 ラベルがどこから来たのか、学習サイクルがどのようなものであるかは、基本的には重要ではありません。 機械学習のこれらのさまざまな分野は、単に同じ構造の異なる側面にすぎません。

それでは、どうぞ。

プログラムとしてのモデル

前に述べたように、機械学習の分野で期待できる必要な変革的発展は、純粋に機能するモデルからの移行です。 パターン認識そして次のことのみが可能です 局所的な一般化、可能なモデルに 抽象化そして 推論到達できるのは 究極の一般化。 基本的な推論を備えた現在の AI プログラムはすべて、人間のプログラマーによってハードコーディングされています。たとえば、検索アルゴリズム、グラフ操作、形式ロジックに依存するプログラムなどです。 たとえば、DeepMind の AlphaGo プログラムでは、画面上の「インテリジェンス」の多くは専門プログラマーによって設計され、ハードコーディングされています (モンテカルロ木検索など)。 新しいデータからの学習は、価値ネットワークとポリシー ネットワークという特殊なサブモジュールでのみ行われます。 しかし将来的には、そのような AI システムは人間の介入なしに完全に訓練される可能性があります。

これを達成するにはどうすればよいでしょうか? よく知られているタイプのネットワーク、RNN を例に挙げてみましょう。 重要なのは、RNN にはフィードフォワード ニューラル ネットワークよりも制限がわずかに少ないことです。 これは、RNN が単純な幾何学的変換にすぎないためです。 for ループ内で継続的に実行される。 for ループのタイミングは開発者によって指定されます。これはネットワークの組み込みの前提条件です。 当然のことながら、RNN が表現できるものには依然として制限があります。主な理由は、RNN が実行する各ステップが依然として微分可能な幾何学的変換であり、連続的な幾何学的空間 (状態ベクトル) 内の点を介して段階的に情報を伝達する方法であるためです。 ここで、for ループと同じ方法でプログラミング プリミティブを「増やす」ニューラル ネットワークを想像してください。ただし、幾何学メモリがステッチされた単一のハードコーディングされた for ループだけではなく、モデルが自由にアクセスできるプログラミング プリミティブの大規模なセットが含まれます。 if 分岐、whi​​le ステートメント、変数作成、長期メモリ用のディスク ストレージ、ソート演算子、リスト、グラフ、ハッシュ テーブルなどの高度なデータ構造などの処理機能を拡張します。 このようなネットワークが表現できるプログラムの空間は、既存の深層学習ネットワークが表現できるものよりもはるかに広く、これらのプログラムの中には優れた汎化能力を達成できるものもあります。

つまり、一方では「ハードコーディングされたアルゴリズム知能」(手書きソフトウェア)、もう一方では「訓練された幾何学的知能」(ディープラーニング)を持っているという事実から、私たちは遠ざかっていくのです。 代わりに、機能を提供する正式なアルゴリズム モジュールが混在することになります。 推論そして 抽象化、および機能を提供する幾何学的モジュール 非公式の直観とパターン認識。 システム全体は、人間の介入をほとんどまたはまったく行わずにトレーニングされます。

私が間もなく大きな進歩を遂げると思われる AI の関連分野は次のとおりです。 ソフトウェア合成、特にニューラル ソフトウェア合成。 プログラム合成は、可能性のあるプログラムの広い空間を探索するための検索アルゴリズム (おそらく遺伝的プログラミングのような遺伝的検索) を使用して単純なプログラムを自動的に生成することで構成されます。 要求仕様を満たすプログラムが見つかると、検索は終了します。要求仕様は、多くの場合、入出力ペアのセットとして提供されます。 ご覧のとおり、これは機械学習に非常に似ています。「トレーニング データ」は入出力ペアとして提供され、入力から出力への変換に対応し、新しい入力への一般化が可能な「プログラム」が見つかります。 違いは、ハードコーディングされたプログラム (ニューラル ネットワーク) でパラメーター値をトレーニングする代わりに、 ソース個別の検索プロセスを通じて。

今後数年のうちに、この分野に再び大きな関心が集まることは間違いありません。 特に、汎用言語でプログラムを生成するだけでなく、ニューラルネットワーク(幾何学的データ処理スレッド)を生成するディープラーニングとソフトウェア合成の関連領域の相互浸透を期待しています。 補足された for ループなどのアルゴリズム プリミティブの豊富なセットやその他多数。 これは、ソース コードを直接生成するよりもはるかに便利で有用なはずであり、機械学習を使用して解決できる問題の範囲、つまり適切なトレーニング データが与えられた場合に自動的に生成できるプログラムの範囲を大幅に拡大します。 記号AIと幾何AIの混合。 現代の RNN は、そのようなアルゴリズムと幾何のハイブリッド モデルの歴史的な祖先と考えることができます。


描画: トレーニングされたプログラムは、幾何学的プリミティブ (パターン認識、直感) とアルゴリズム プリミティブ (議論、検索、記憶) に同時に依存します。

バックプロパゲーションと微分可能層を超えて

機械学習モデルがよりプログラムに近づくと、それらはもはや微分可能ではなくなります。確かに、それらのプログラムは引き続き微分可能であるサブルーチンとして連続幾何学的レイヤーを使用しますが、モデル全体は微分可能ではなくなります。 その結果、固定のハードコーディングされたネットワークでバックプロパゲーションを使用して重み値を調整することは、今後もモデルのトレーニングに推奨される方法ではなくなる可能性があります。少なくとも、この方法だけに限定されるべきではありません。 微分不可能なシステムを最も効率的にトレーニングする方法を見つけ出す必要があります。 現在のアプローチには、遺伝的アルゴリズム、「進化戦略」、特定の強化学習法、ADMM (ラグランジュ乗数の交互方向法) が含まれます。 当然のことながら、勾配降下法は今後も存続します。勾配情報は、微分可能なパラメトリック関数を最適化するために常に役立ちます。 しかし、私たちのモデルは間違いなく、単なる微分可能なパラメトリック関数よりも野心的なものになるため、その自動開発 (「機械学習」における「トレーニング」) には逆伝播以上のものが必要になります。

さらに、バックプロパゲーションにはエンドツーエンドのフレームワークがあり、適切な連結変換を学習するのに適していますが、ディープ ネットワークのモジュール性を十分に活用していないため、計算効率が非常に非効率です。 何かの効率を上げるには、次のことが必要です。 普遍的なレシピ: モジュール性と階層を導入します。 したがって、階層的に編成された、分離された学習モジュールとそれらの間の同期メカニズムを導入することで、バックプロパゲーション自体をより効率的にすることができます。 この戦略は、「合成勾配」に関する DeepMind の最近の研究に部分的に反映されています。 近い将来、この方向でさらに多くの取り組みが行われることを期待しています。

勾配を適用しない効率的な検索プロセスを使用して、グローバルに微分不可能なモデル (ただし微分可能な部分を含む) が学習 - 成長 - する一方で、微分可能部分は、いくつかのより効率的な逆伝播バージョンを使用した勾配を使用してさらに高速に学習するという未来を想像することができます。

自動機械学習

将来の建築では、モデルはエンジニアが手書きするのではなく、学習によって作成されるようになるでしょう。 結果として得られるモデルは、より豊富なプリミティブおよびプログラムのような機械学習モデルのセットと自動的に組み合わせられます。

現在、ほとんどの場合、深層学習システムの開発者は、Python スクリプトを使用してデータを際限なく変更し、その後、動作するモデルを取得するために、または開発者が優れたモデルを取得するために、深層学習ネットワークのアーキテクチャとハイパーパラメータの調整に長い時間を費やします。とても野心的です。 言うまでもなく、これは最高ではありません より良い位置物事の。 しかし、AI はここでも役立ちます。 残念ながら、データの処理と準備の部分は、多くの場合、ドメインの知識と、開発者が達成したいことについての明確で高度な理解が必要なため、自動化するのが困難です。 ただし、ハイパーパラメータの調整は単純な検索手順であり、この場合、開発者が何を達成したいのかはすでにわかっています。これは、調整する必要があるニューラル ネットワークの損失関数によって決まります。 現在では、モデル設定の調整のほとんどを処理する基本的な AutoML システムをインストールすることが一般的になっています。 Kaggle コンテストで優勝するために自分でインストールしました。

最も基本的なレベルでは、このようなシステムは、スタック内のレイヤーの数、その順序、各レイヤーの要素またはフィルターの数を単純に調整します。 これは通常、第 7 章で説明した Hyperopt のようなライブラリを使用して行われます (注: 書籍「Deep Learning with Python」)。 ただし、さらに進んで、最小限の制限を設けて、適切なアーキテクチャを最初から学習してみることもできます。 これは、たとえば強化学習や遺伝的アルゴリズムを使用することで可能になります。

AutoML の開発におけるもう 1 つの重要な方向性は、モデルの重み付けと同時にモデル アーキテクチャをトレーニングすることです。 モデルをゼロからトレーニングすることにより、毎回わずかに異なるアーキテクチャを試すことになりますが、これは非常に非効率的です。そのため、非常に強力な AutoML システムがアーキテクチャの進化を管理しながら、モデルのプロパティがトレーニング データのバックプロパゲーションによって調整されるため、すべての計算オーバーヘッドが排除されます。 私がこれらの行を書いている時点で、同様のアプローチがすでに適用され始めています。

こうしたことがすべて起こり始めても、機械学習システムの開発者は仕事をせずに取り残されることはなく、バリュー チェーンのより高いレベルに移行することになります。 彼らは、ビジネス上の問題を真に反映する複雑な損失関数の作成により多くの労力を注ぎ始め、自社のモデルが自社が運営するデジタル エコシステム (たとえば、モデル予測を使用してデータを生成する顧客など) にどのような影響を与えるかについて深い理解を深めていくでしょう。そのトレーニング) - 現在、最大手の企業だけが考慮できる問題。

モジュール式ルーチンの生涯学習と再利用

モデルがより複雑になり、より豊富なアルゴリズム プリミティブに基づいて構築される場合、この複雑さの増加により、新しいタスクや新しいデータ セットを取得するたびにモデルを最初からトレーニングするのではなく、タスク間でより集中的な再利用が必要になります。 最終的には、多くのデータセットには、新しい複雑なモデルを一から開発するのに十分な情報が含まれていないため、以前のデータセットの情報を使用することが必要になります。 新しい本を開くたびに英語を学び直すことはありません。それは不可能です。 さらに、新しい問題ごとにモデルを最初からトレーニングすることは、現在の問題と以前に発生した問題との間にかなりの重複があるため、非常に非効率的です。

さらに、 ここ数年いくつかの疎結合タスクを実行するように同じモデルをトレーニングすると、パフォーマンスが向上するという注目すべき観察が繰り返し行われています。 これらのそれぞれのタスクで。 たとえば、同じニューラル ネットワークを英語からドイツ語、フランス語からイタリア語に翻訳するようにトレーニングすると、これらの言語ペアのそれぞれでより優れたモデルが得られます。 単一の畳み込みベースを使用して画像分類モデルを画像セグメンテーション モデルと同時にトレーニングすると、両方のタスクでより優れたモデルが得られます。 等々。 これは非常に直感的です。常に存在します。 いくつかの種類これら 2 つの一見異なるタスク間で重複する情報が含まれるため、モデル全体は、その特定のタスクのみでトレーニングされたモデルよりも、個々のタスクに関するより多くの情報にアクセスできます。

さまざまなタスクでモデルを再利用するときに実際に行うことは、抽出などの共通の機能を実行するモデルに事前トレーニングされた重みを使用することです。 視覚的な兆候。 これについては、第 5 章で実際に説明しました。将来、この手法のより一般的なバージョンが一般的に使用されることを期待しています。以前に学習した特徴 (サブモデルの重み) だけでなく、モデル アーキテクチャとトレーニング手順も使用します。 モデルがよりプログラムらしくなると、再利用が始まります。 サブルーチン、通常のプログラミング言語の関数やクラスと同様です。

今日のソフトウェア開発プロセスがどのようなものかを考えてみましょう。エンジニアは、特定の問題 (たとえば、Python での HTTP リクエスト) を解決すると、それを再利用のために抽象ライブラリとしてパッケージ化します。 将来同様の問題に遭遇したエンジニアは、既存のライブラリを探してダウンロードし、独自のプロジェクトで使用するだけです。 同様に、将来的には、メタ学習システムは、高レベルの再利用可能なブロックのグローバル ライブラリを選別することによって、新しいプログラムを組み立てることができるようになります。 システムがいくつかの異なるタスクに対して同様のルーチンの開発を開始すると、そのルーチンの「抽象」再利用可能なバージョンがリリースされ、それがグローバル ライブラリに保存されます。 このプロセスにより、次のような機会が開かれます。 抽象化、「究極の一般化」を達成するために必要なコンポーネント: 多くの問題や領域に役立つルーチンは、意思決定の一部の側面を「抽象化」すると言えます。 この「抽象化」の定義は、ソフトウェア開発における抽象化の概念ではないようです。 これらのルーチンは、幾何学的 (事前トレーニングされた表現を備えた深層学習モジュール) またはアルゴリズム (現代のプログラマーが使用するライブラリに近い) のいずれかになります。

描画: 再利用可能なプリミティブ (アルゴリズムおよび幾何学的) を使用してタスク固有のモデルを迅速に開発し、それによって「究極の一般化」を達成できるメタ学習システム。

要点: 長期的なビジョン

つまり、機械学習に対する私の長期的なビジョンは次のとおりです。
  • モデルはよりプログラムに近くなり、現在私たちが扱っているソース データの連続的な幾何学的変換をはるかに超えた機能を持つようになるでしょう。 おそらく、これらのプログラムは、人々が環境や自分自身について抱く抽象的なメンタルモデルにはるかに近くなり、そのアルゴリズムの性質により、より強力な一般化が可能になるでしょう。
  • 特にモデルは混在します アルゴリズムモジュール形式的推論、検索、抽象化の能力を備えている - そして 幾何学的モジュール非公式の直観とパターン認識を備えています。 AlphaGo (集中的な手動プログラミングとアーキテクチャが必要なシステム) は、記号 AI と幾何 AI の融合がどのようなものかを示す初期の例を提供します。
  • 彼らはそうするだろう 育つ再利用可能なルーチンのグローバル ライブラリのモジュラー パーツを使用して、(人間のプログラマーが手作業で記述するのではなく) 自動的に実行されます。このライブラリは、何千もの以前の問題やデータ セットからの高性能モデルを同化して進化したライブラリです。 メタルラーニング システムが一般的な問題解決パターンを特定すると、それらは再利用可能なルーチン (最新のプログラミングにおける関数やクラスと同様) に変換され、グローバル ライブラリに追加されます。 こうやって能力が発揮されるんですね 抽象化.
  • グローバル ライブラリと関連するモデル成長システムは、人間のような何らかの形の「究極の一般化」を達成できるようになります。新しいタスクや新しい状況に直面したとき、システムは次のコマンドを使用してそのタスク用の新しい作業モデルを組み立てることができます。 1) 豊富なプログラムのようなプリミティブがよく一般化し、2) 同様の問題を解決する豊富な経験のおかげで、データはほとんどありません。 人が新しい複雑なビデオ ゲームをすぐに習得できるのと同じように、人は他の多くのゲームの経験があり、以前の経験からのモデルは単純に刺激をアクションに変換するのではなく抽象的でプログラムに似ているためです。
  • 基本的に、この継続的に学習してモデルを成長させるシステムは、強力な人工知能として解釈できます。 しかし、ある種の特異なロボット黙示録が起こるとは期待しないでください。それは純粋なファンタジーであり、知能とテクノロジーの理解における深い誤解の長いリストから生まれました。 しかし、この批判はここでは居場所がありません。

スマートロボットの来るべき革命は、1950 年代以来 10 年ごとに予測されてきました。 しかし、それは決して起こりませんでした。 分野の進歩 人工知能開催は不確実で、時には退屈で、多くの愛好家に失望をもたらしました。 目に見える成功 - 1990年代半ばにIBMによって開発され、1997年にチェスでガルリ・カスパロフに勝利したディープ・ブルー・コンピューターや、1990年代後半の電子翻訳機の登場 - は、転送というより「大まかな」計算の結果であった。メカニズムの 人間の認識コンピュータのコンピューティングプロセスについて。

しかし、失望と失敗の物語は今、劇的に変わりつつあります。 わずか 10 年前、コンピューター ビジョンと物体認識アルゴリズムは、無地の背景に対して球またはボックスを識別できました。 彼らは現在、複雑で自然な背景に対しても、人間と同じように人間の顔を区別できるようになりました。 半年前、Googleは20以上のテキストを翻訳できるスマートフォン向けアプリケーションをリリースした。 外国語写真、道路標識、手書きの文字から単語を読み取ってみましょう。

これらすべては、ニューラルネットワークの分野におけるいくつかの古いアイデアが、「生命」を追加することによってわずかに変更された場合、つまり、 人間や動物の知覚の詳細を投影すると、誰も予想しなかった驚くべき結果が得られることがあります。 今度は、人工知能革命が本当に現実のものになったようです。

機械学習の分野におけるニューラル ネットワークの研究は、ほとんどの場合、常に新しい認識技術の探索に注がれてきました。 さまざまな種類データ。 したがって、カメラに接続されたコンピュータは、画像認識アルゴリズムを使用して、低品質の画像の中で人間の顔、一杯のお茶、または犬を区別できなければなりません。 しかし、歴史的には、これらの目的でニューラル ネットワークを使用することには大きな困難が伴いました。 小さな成功であっても人間の介入が必要でした - 人々はプログラムの決定を支援しました 重要な機能画像の境界線や単純な幾何学的形状などの画像。 既存のアルゴリズムは、これを行う方法を自ら学習することができませんでした。

いわゆる制度の創設のおかげで状況は劇的に変化しました 深層学習を備えたニューラルネットワーク、人間とほぼ同じ効率で画像を分析できるようになりました。 このようなニューラル ネットワークは、最初のレベルの「ニューロン」への入力として低品質の画像を使用し、その「画像」を非線形接続を通じて次のレベルのニューロンに送信します。 ある程度のトレーニングの後、より高いレベルの「ニューロン」は、画像のより抽象的な側面を使用して認識できるようになります。 たとえば、画像の境界や空間内の位置の特徴などの詳細を使用できます。 驚くべきことに、このようなネットワークは、人間の助けなしで画像の最も重要な特徴を推定する方法を学習することができます。

深層学習ニューラル ネットワークを使用する好例は、異なる角度または異なる姿勢で撮影された同一のオブジェクトを認識することです (場合によっては)。 私たちが話しているのは人や動物について)。 ピクセルごとのスキャンを使用するアルゴリズムは、次の 2 つがあると「考え」ます。 さまざまなイメージ一方、「賢い」ニューラルネットワークは、同じ物体が目の前にあることを「理解」します。 またその逆も同様です。同じポーズで撮影された異なる品種の 2 匹の犬の画像は、以前のアルゴリズムでは同じ犬の写真として認識される可能性がありました。 深層学習ニューラル ネットワークは、動物を区別するのに役立つ画像の詳細を識別できます。

深層学習技術、神経科学の高度な知識、現代のコンピューターの力を組み合わせることで、まだ評価すらできない人工知能の可能性が開かれます。 真実は、心が生物学的な性質だけを持ち得るわけではないということはすでに明らかです。

このガイドの一部は、機械学習に興味はあるがどこから始めればよいかわからない人を対象としています。 記事の内容は幅広い読者を対象としており、非常に表面的なものになります。 しかし、本当に気にする人はいるでしょうか? どうやって より多くの人機械学習に興味を持つとなお良いでしょう。

深層学習を利用した物体認識

この有名な xkcd コミックをすでに見たことがあるかもしれません。 3 歳児なら誰でも鳥の写真を認識できるという冗談がありますが、それをコンピュータに認識させるには、最高のコンピュータ科学者が 50 年以上かかり、ここ数年で、オブジェクトに対する適切なアプローチがついに見つかりました。を使用した認識 ディープ畳み込みニューラル ネットワーク。 これはウィリアム ギブソンの SF 小説から出てきた造語のように聞こえますが、1 つずつ理解していけば意味がわかるでしょう。それでは、鳥を認識するプログラムを作成してみましょう。

シンプルに始めましょう

鳥の絵を認識する方法を学ぶ前に、もっと単純なもの、つまり手書きの数字「8」を認識する方法を学びましょう。

ディープラーニングはテキストを扱うパラダイムを変えていますが、計算言語学者やデータサイエンティストの間で懐疑的な見方を引き起こしています。 ニューラル ネットワークは強力ですが簡単な機械学習ツールです。

03.05.2017 ドミトリー・イルボフスキー、エカテリーナ・チェルニャク

ニューラル ネットワークを使用すると、テキスト内の隠れたつながりやパターンを見つけることができますが、これらのつながりを明示的に示すことはできません。 ニューラル ネットワークは強力ではありますが、非常に簡単なツールであるため、データ分析の分野で産業用ソリューションを開発している企業や主要な計算言語学者の間で懐疑的な見方を引き起こしています。

ニューラル ネットワーク テクノロジとディープ ラーニングに対する一般的な関心は、コンピュータ言語学、つまり自然言語によるテキストの自動処理を無視してはいません。 計算言語学協会 ACL の最近の会議では、主な 科学フォーラムこの分野では、レポートの大部分が、既知の問題を解決するためと、標準の機械学習ツールでは解決できない新しい問題を探索するためのニューラル ネットワークの使用に当てられていました。 ニューラル ネットワークに対する言語学者の注目が高まっているのには、いくつかの理由があります。 ニューラル ネットワークの使用により、まず、一部のソリューションの品質が大幅に向上します。 標準タスクテキストとシーケンスを分類すると、第 2 に、テキストを直接操作する際の労働力が軽減され、第 3 に、新しい問題を解決できるようになります (チャット ボットの作成など)。 同時に、ニューラル ネットワークは、言語問題を解決するための完全に独立したメカニズムであると考えることはできません。

最初の作業 ディープラーニング(ディープラーニング)の歴史は 20 世紀半ばにまで遡ります。 1940 年代初頭、ウォーレン・マカロックとウォルター・ピッツは正式なモデルを提案しました。 人間の脳- 人工ニューラル ネットワーク、そして少し後にフランク ローゼンブラットが自分たちの研究を要約し、コンピューター上でニューラル ネットワーク モデルを作成しました。 逆伝播アルゴリズムを使用したニューラル ネットワークのトレーニングに関する最初の研究は 1960 年代に遡ります (アルゴリズムは予測誤差を計算し、確率的最適化手法を使用して予測誤差を最小化します)。 しかし、脳をシミュレートするというアイデアの美しさと優雅さにもかかわらず、「従来の」ニューラルネットワークのトレーニングには長い時間がかかり、小さなデータセットでの分類結果は、より単純な方法で得られる結果と同等であることが判明しました。 、サポート ベクター マシン (SVM) など)。 その結果、ニューラル ネットワークは 40 年間忘れ去られていましたが、今日では大量の非構造化データ、画像、テキストを扱う際に再び需要が高まっています。

正式な観点から見ると、ニューラル ネットワークは特定のアーキテクチャの有向グラフであり、その頂点またはノードは次のように呼ばれます。 ニューロン。 グラフの最初のレベルには入力ノードが含まれ、最後のレベルには出力ノードが含まれます。出力ノードの数はタスクによって異なります。 たとえば、2 つのクラスに分類するには、1 つまたは 2 つのニューロンをネットワークの出力層に配置できます。k つのクラスに分類するには、k 個のニューロンを配置できます。 ニューラル ネットワーク グラフ内の他のすべてのレベルは通常、隠れ層と呼ばれます。 あるレベルにあるすべてのニューロンはエッジによって次のレベルのすべてのニューロンに接続されており、各エッジには重みがあります。 各ニューロンには、生物学的ニューロンの動作をモデル化する活性化関数が割り当てられています。入力信号が弱いときはニューロンは「沈黙」し、その値が特定のしきい値を超えると発火して、入力値をネットワークに沿ってさらに送信します。 例 (つまり、オブジェクトと正解のペア) からニューラル ネットワークをトレーニングするタスクは、正解を最もよく予測するエッジの重みを見つけることです。 それがアーキテクチャ、つまりニューラル ネットワーク グラフの構造のトポロジーであることは明らかです。 最も重要なパラメータ。 「ディープ ネットワーク」の正式な定義はまだありませんが、多数の層で構成されているか、「非標準」層 (たとえば、選択された接続のみを含む、または他の接続との再帰を使用するなど) を持つすべてのニューラル ネットワークであることが一般に受け入れられています。層) は深いとみなされます。

これまでのところニューラル ネットワークの最も成功した使用例は画像分析ですが、ニューラル ネットワーク テクノロジはテキスト データの処理も根本的に変えました。 以前は、テキストの各要素 (文字、単語、文) を、さまざまな性質 (形態論、構文、意味論など) の多くの特徴を使用して記述する必要がありましたが、現在では多くのタスクで複雑な記述の必要がなくなりました。 ニューラル ネットワーク テクノロジの理論家や実践者は、「表現学習」についてよく話します。つまり、単語と文のみに分解された生のテキストで、ニューラル ネットワークは依存関係とパターンを見つけて、独立して特徴空間を構成できます。 残念ながら、そのような空間では人は何も理解できません。トレーニング中、ニューラル ネットワークは、テキストの各要素に、発見された「深い」関係を表す特定の数値で構成される 1 つの密なベクトルを割り当てます。 テキストを扱うときの重点は、特徴のサブセットの構築や外部ナレッジ ベースの検索から、データ ソースの選択と、その後のニューラル ネットワークのトレーニング用のテキストのマークアップに移ります。これには、標準的な方法と比較してはるかに多くのデータが必要です。 ランダム フォレストやサポート ベクター マシンなどの他の十分に確立された学習アルゴリズムとは異なり、ニューラル ネットワークが実際の産業規模のアプリケーションで需要がないのは、大量のデータを使用する必要があることと、解釈可能性が低く予測不可能であるためです。 それにもかかわらず、ニューラル ネットワークは多くの自動テキスト処理タスクで使用されています (図 1)。

ニューラル ネットワークの最も一般的なアプリケーションの 1 つは、分布意味論の分野に関連する単語のベクトルの構築です。単語の意味は、その文脈の意味や周囲の単語によって理解できると考えられています。 確かに、テキスト内のいくつかの単語に馴染みのない場合は、 既知の言語, そうすれば、ほとんどの場合、その意味が推測できます。 単語のベクトルは、単語の意味の数学的モデルとして機能します。つまり、かなり大きなテキストのコーパスから構築された大きな「単語コンテキスト」マトリックスの行です。 隣接する単語、特定の単語と同じ構文または意味構造に含まれる単語などは、特定の単語の「コンテキスト」として機能できます。頻度 (その単語が 1 回の単語内に出現する回数) をそのようなマトリックスのセルに記録できます。特定のコンテキストでの出現がどの程度非ランダムであるかを示す、正のペアごとの相互情報量係数 (Positive Pointwise Mutual Information、PPMI) がよく使用されます。 このような行列は、単語のクラスタリングや、検索単語に意味が近い単語の検索に非常にうまく使用できます。

2013 年、Tomas Mikolov は、ニューラル ネットワークを使用して単語ベクトルをトレーニングすることを提案した論文を発表しました。ただし、より小さな次元では、タプル (単語、コンテキスト) を使用して、最も単純なアーキテクチャのニューラル ネットワークがトレーニングされ、出力ではそれぞれのword には 300 要素のベクトルが割り当てられました。 そのようなベクトルは、単語の意味上の近さをよりよく伝えることが判明しました。 たとえば、意味の加算と減算の算術演算を定義し、次の方程式を取得できます。「パリ - フランス + ロシア = モスクワ」。 「王 – 男性 + 女性 = 女王」。 または、「リンゴ、洋ナシ、チェリー、子猫」というシリーズの追加の単語を見つけてください。 この研究では、skip-gram と CBOW (Continuous Bag of Words) という 2 つのアーキテクチャが一般名 word2vec で提示されました。 後で示すように、word2vec は、PPMI 重みを使用した単語コンテキスト行列の因数分解にすぎません。 現在では word2vec を深層学習ではなく分散セマンティクスとして分類するのが通例ですが、このモデル作成の最初のきっかけはニューラル ネットワークの使用でした。 さらに、word2vec ベクトルは単語の意味の便利な表現として機能し、テキスト分類に使用されるディープ ニューラル ネットワークへの入力として供給できることがわかりました。

テキスト分類のタスクは、特に製品やサービスに対する消費者の意見や態度を分析する場合、マーケティング担当者にとって最も差し迫ったタスクの 1 つであるため、研究者はソリューションの品質を向上させるために常に取り組んでいます。 ただし、意見分析はテキストではなく文章を分類するタスクです。 正のフィードバックユーザーは 1 つまたは 2 つの否定的な文を書くことができますが、それらを識別して分析できることも重要です。 文を分類する際のよく知られた問題は、入力の可変長にあります。テキスト内の文は任意の長さになる可能性があるため、それらをニューラル ネットワークの入力にどのように送信するかは明確ではありません。 1 つのアプローチは画像解析の分野から取り入れられたもので、畳み込みニューラル ネットワーク (CNN) の使用が含まれます (図 2)。

畳み込みニューラル ネットワークの入力は、各単語がすでにベクトル (ベクトルのベクトル) で表されている文です。 通常、単語をベクトルとして表すには、事前トレーニングされた word2vec モデルが使用されます。 畳み込みニューラル ネットワークは、「深い」畳み込み層と通常の隠れ層の 2 つの層で構成されます。 畳み込み層は、フィルターと「サブサンプリング」層で構成されます。 フィルターは、テキスト内を移動し、特定の数の単語を順番に選択するウィンドウを使用して入力が形成されるニューロンです (たとえば、長さが「3」のウィンドウでは、最初の 3 つの単語、2 番目から 4 番目の単語、 3 番目から 5 番目など)。 フィルターの出力では、それに含まれる単語のすべてのベクトルを集約した 1 つのベクトルが形成されます。 次に、提案全体に対応する単一のベクトルがサブサンプリング層で生成され、すべての出力フィルター ベクトルのコンポーネントごとの最大値として計算されます。 畳み込みニューラル ネットワークは、トレーニングと実装が簡単です。 それらをトレーニングするには、標準的なバックプロパゲーション アルゴリズムが使用されます。また、フィルターの重みが均一に分散される (ウィンドウから i 番目の単語の重みはどのフィルターでも同じです) ため、パラメーターの数は畳み込みニューラル ネットワークは小さいです。 コンピュータ言語学の観点から見ると、畳み込みニューラル ネットワークは分類のための強力なツールですが、その背後に言語的直観がまったくないため、アルゴリズム エラーの分析が大幅に複雑になります。

シーケンス分類は、各単語に 1 つのラベルを割り当てる必要があるタスクです。形態素解析 (各単語に品詞が割り当てられます)、固有表現抽出 (各単語が人名、地名などの一部であるかどうかを判断します)。シーケンスを分類するとき、単語の文脈を考慮した方法が使用されます。前の単語が人の名前の一部である場合、現在の単語も名前の一部である可能性がありますが、名前の一部である可能性は低いです。組織の名前。 リカレント ニューラル ネットワークは、前世紀末に提案された言語モデルのアイデアを拡張し、この要件を実際に実装するのに役立ちます。 古典言語モデルは、単語 i が単語 i-1 の後に出現する確率を予測します。 言語モデルを使用して、次の単語を予測することもできます。つまり、この単語の後にどの単語が表示される可能性が最も高いか?

言語モデルをトレーニングするには、大規模なコーパスが必要です。トレーニング コーパスが大きければ大きいほど、モデルが「知っている」単語のペアが多くなります。 ニューラル ネットワークを使用して言語モデルを開発すると、保存されるデータの量が削減されます。 単語 i-2 と i-1 が入力され、出力でニューラル ネットワークが単語 i を予測する単純なネットワーク アーキテクチャを想像してみましょう。 隠れ層の数とその上のニューロンの数に応じて、トレーニングされたネットワークは比較的小さい次元の多数の密な行列として保存できます。 言い換えれば、トレーニング コーパスとすべての単語のペアの代わりに、少数の行列と一意の単語のリストのみを保存できます。 ただし、このような神経言語モデルでは、単語間の長いつながりを考慮することはできません。 この問題はリカレント ニューラル ネットワーク (図 3) によって解決されます。リカレント ニューラル ネットワークでは、新しい単語が入力に到着した後に隠れ層の内部状態が更新されるだけでなく、次のステップにも渡されます。 したがって、リカレント ネットワークの隠れ層は、前のステップでの隠れ層の状態と新しい単語という 2 種類の入力を受け入れます。 リカレント ニューラル ネットワークが文を処理する場合、隠れ状態により文内の長い接続を記憶し、送信することができます。 リカレント ニューラル ネットワークは文中の主語の性別を記憶し、文を生成するときに正しい代名詞 (彼女 - 彼女、彼 - 彼) を選択することが実験的に繰り返し検証されていますが、この種の情報がどのように正確に保存されるかを明示的に示しています。ニューラルネットワークやその使い方はまだ成功していません。

リカレント ニューラル ネットワークはテキストの分類にも使用されます。 この場合、中間ステップからの出力は使用されず、ニューラル ネットワークの最後の出力が予測されたクラスを返します。 今日では、隠れ層に数十のニューロンを持つ双方向 (隠れ状態を「右」だけでなく「左」にも送信する) リカレント ネットワークが、テキストとシーケンスの分類の問題を解決するための標準ツールとなっています。テキスト生成だけでなく、本質的に他のアルゴリズムを置き換えました。

リカレント ニューラル ネットワークの開発は Seq2seq タイプのアーキテクチャになり、接続された 2 つのリカレント ネットワークで構成されます。そのうちの 1 つは入力 (たとえば、ある言語での質問や文) の表現と分析を担当し、もう 1 つは入力を生成する役割を果たします。出力 (別の言語での回答または文章) 。 Seq2seq ネットワークは、最新の質問応答システム、チャットボット、機械翻訳システムを支えています。

畳み込みニューラル ネットワークに加えて、いわゆるオートエンコーダーがテキスト分析に使用されます。これは、たとえば、Photoshop や Instagram で画像にエフェクトを作成するために使用され、言語学の次元削減の問題 (射影の探索) に応用されています。テキストを表すベクトルを低次元の空間に投影します)。 2 次元空間への投影により、テキストを平面上の点として表現できるようになり、テキストの集合を点の集合として視覚的に表現できるようになります。つまり、クラスタリングや分類の前の予備分析の手段として機能します。テキスト。 分類タスクとは異なり、次元削減タスクには明確な品質基準がありませんが、オートエンコーダーを使用して得られる画像は非常に「説得力がある」ように見えます。 数学的な観点から見ると、オートエンコーダーは学習する教師なしニューラル ネットワークです。 一次関数 f(x) = x であり、エンコーダとデコーダの 2 つの部分で構成されます。 エンコーダは、ニューロンの数が減少する複数の隠れ層を備えたネットワークです。 デコーダは、ニューロンの数が増加した同様のネットワークです。 それらは隠れ層によって接続されており、この層には、より低い次元の新しい空間に存在すべき次元と同じ数のニューロンがあり、次元を減らす役割を担うのはこの層です。 畳み込みニューラル ネットワークと同様、オートエンコーダーには言語解釈がないため、分析ツールではなくエンジニアリング ツールと考えることができます。

素晴らしい結果にもかかわらず、ニューラル ネットワークはテキスト分析 (言語のパターンの検索) のための独立したツールとみなされ、ましてやテキストを理解するためのものとは見なされません。 確かに、ニューラル ネットワークを使用すると、単語間の隠れたつながりを見つけたり、テキスト内のパターンを発見したりすることができます。しかし、これらのつながりが解釈可能な形式で提示されるまでは、ニューラル ネットワークはかなり単純な機械学習ツールのままです。 さらに、ディープラーニングはデータの準備に不当なコストがかかり、結果が予測できないため、産業用分析ソリューションではまだ需要がありません。 研究コミュニティ内でも、ニューラル ネットワークを普遍的なツールにしようとする試みに対して批判があります。 2015 年、スタンフォード大学の計算言語学グループの責任者であり、ACL の社長である Chris Manning 氏は、ニューラル ネットワークの適用可能性について明確に概説しました。 その中には、テキスト分類、シーケンス分類、次元削減のタスクが含まれていました。 しかし、ディープラーニングのマーケティングと普及のおかげで、計算言語学そのものとその新しい応用への注目が高まっています。

文学

  1. トーマス・ミコロフら アル。 ベクトル空間における単語表現の効率的な推定、arxiv.org。 URL: http://arxiv.org/pdf/1301.3781.pdf
  2. レヴィ・オメル、ヨアヴ・ゴールドバーグ、イド・ダガン。 単語の埋め込みから学んだ教訓により、分布の類似性を改善します。 計算言語学協会論文誌 3. - 2015. - P. 211–225. URL: https://www.transacl.org/ojs/index.php/tacl/article/view/570/124 (アクセス日: 2017 年 5 月 18 日)。
  3. パベル・ヴェリホフ。 自然言語理解のための機械学習 // Systems.DBMS を開きます。 - 2016. - No. 1. - P.18–21. URL:(アクセス日:2017/05/18)。
  4. クリストファー・マニング。 計算言語学と深層学習。 計算言語学。 - 2016。URL: http://www.mitpressjournals.org/doi/full/10.1162/COLI_a_00239#.WQH8MBhh2qA (アクセス日: 05/18/2017)。

ドミトリー・イルボフスキー ([メールで保護されています]) - 国際知能システム構造解析研究所の職員、 エカテリーナ・チェルニャク ([メールで保護されています]) - 国立研究大学経済学部(モスクワ)コンピュータサイエンス学部継続教育センターの教師。 作業はプログラムの枠組み内で実施されました 基礎研究国立研究大学高等経済学部。



エラー:コンテンツは保護されています!!