目次:
- トーチのテンソルライブラリの紹介
- 計算グラフと自動分化
- ディープラーニングビルディングブロック:アフィンマップ、非線形性、および目的
- 最適化とトレーニング
- Pytorchでネットワークコンポーネントを作成します
- 例:ロジスティック回帰バッグオブワードテキスト分類器
- 単語埋め込み:語彙セマンティクスのエンコード
- 例:N-GRAM言語モデリング
- 運動:単語の埋め込みを学習するための連続語の袋
- シーケンスモデリングと長期タームメモリネットワーク
- 例:スピーチの一部のタグ付けのLSTM
- 演習:文字レベルの機能でLSTMタガーを増強します
- Advanced:動的ツールキット、動的プログラミング、およびbilstm-crf
- 例:名前付きエンティティ認識のためのBI-LSTM条件ランダムフィールド
- 演習:識別タグ付けのための新しい損失関数
このチュートリアルは何ですか?
私はこのチュートリアルを書いています。なぜなら、他にもたくさんのチュートリアルがありますが、それらはすべて3つの問題のいずれかを抱えているようです。
- 彼らはコンピュータービジョンとコンブネットに多くのコンテンツを持っていますが、これはほとんどのNLPでは無関係です(ただし、Conv NetsはNLPの問題にクールな方法で適用されています)。
- Pytorchは真新しく、NLPチュートリアルの多くの深い学習は古いフレームワークにあり、通常はまったく異なるフレーバーを持つPytorchのような動的なフレームワークではありません。
- この例は、RNN言語モデルを超えて移動するものではなく、舌構造予測を実行しようとするときにできる素晴らしいことを示しています。 Pytorchの動的グラフは構造予測をその最大の強みの1つにするため、これは問題だと思います。
具体的には、ジョージア工科大学の自然言語処理クラスのこのチュートリアルを執筆しています。問題セットでは、いくつかの高度な手法を使用しています。このチュートリアルの意図は、学生が問題セットのより挑戦的な側面に集中できるように、基本をカバーすることです。目的は、基本から始めて、言語構造の予測に移動することです。これは、他のPytorchチュートリアルではほぼ完全に存在しないと感じています。一般的な深い学習の基本には、短い説明があります。トピックNLP固有のトピックは、より詳細な議論を受けましたが、私は他の情報源に言及し、完全な説明がホイールを再発明し、スペースを取りすぎていると感じました。
依存関係解析の問題セット
上記のように、Pytorchに高性能の依存関係パーサーの実装を介して進行する問題セットを以下に示します。クラスに固有のものを無視していれば、ここにリンクを追加したかったのです。いくつかのメモ:
- 多くのコードがあるため、問題セットの始まりは、主に、私のコードが関連するデータと使用する必要があるインターフェイスを表す方法に人々を慣れさせることでした。問題セットの残りの部分は、実際にパーサーのコンポーネントを実装することです。以前にクラスで深い学習をしていなかったので、私はそれを書くときに膨大な量のコメントとヒントを提供しようとしました。
- Nosetestsで実行できるすべての成果物の単体テストがあります。
- クラスでセットされたこの問題を使用しているため、ソリューションを公開しないでください。
- 同じリポジトリには、問題セットを補完するための書面によるソースを探している場合、シフトレデュース依存関係のセクションを含むいくつかのメモがあります。
- 上記のリンクは、新しい学期の開始時に削除された場合、機能しない場合があります。
参考文献:
- 私は、CMUのChris DyerとGraham NeubigとBar Ilan UniversityのYoav Goldbergによって与えられた、Dynetに関するこのチュートリアルから、EMNLP 2016で深い構造予測について多くのことを学びました。 Dynetは、特にC ++を使用して動的なタイピングを避けたい場合は、優れたパッケージです。最終的なBilstm CRF演習とキャラクターレベルの機能エクササイズは、このチュートリアルから学んだことです。
- 構造予測に関する素晴らしい本は、ノア・スミスによる言語構造予測です。深い学習は使用しませんが、それは大丈夫です。
- 私が知っている最高のディープラーニングブックは、ディープラーニングです。これは、NLPの焦点はありませんが、この分野への主要な貢献者であり、非常に包括的な学習です。オンラインで無料ですが、棚に持っている価値があります。
演習:
チュートリアルには、人気のあるモデル(CBOW)を実装するか、私のモデルの1つを拡張するためのいくつかの演習があります。特にキャラクターレベルの機能は非常に重要ではありませんが、非常に便利です(正確な数字を引用することはできませんが、以前に実験を実行しましたが、通常、キャラクターレベルの機能は精度を2〜3%増加させます)。それらは簡単なエクササイズではないので、すぐに自分で実装し、レポに追加します。
提案:
間違いが見つかった場合、または追加するのに役立つ特定のモデルがあると思われる場合は、GitHubの問題を開きます。