Advertisement

[最新版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」

Associate Professor at Osaka University
Jun. 7, 2018
Advertisement

More Related Content

Slideshows for you(20)

Similar to [最新版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」 (20)

Advertisement
Advertisement

[最新版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」

  1. "深層学習時代の" ゼロから始める自然言語処理 大阪大学大学院情報科学研究科 荒瀬由紀 1
  2. Disclaimer 深層学習を使った自然言語処理に •初めてふれる方 •ざっくりと様子を知りたい方 が対象です。 ※詳細な技術的解説や最新モデルの紹介は ありません。 2
  3. 自然言語処理でできること(代表例) • 基礎 • 単語分割 • 構文解析 • 固有表現抽出 • パラフレーズ etc. • 応用 • テキスト分類(ラベル予測) • 知識抽出 • 要約 • 翻訳、対話 3 俺は海賊王に なるすごい かっこいい https://news.yahoo.co.jp/pickup/6284525 →IT
  4. Agenda 1. 深層学習によるNLP 2. 単語のベクトル化 3. 文のベクトル化 4. 系列変換モデル 5. 学習データが、ない 6. 実はとても重要な前処理 7. もっと詳しく知りたい方に 4
  5. Agenda 1. 深層学習によるNLP 2. 単語のベクトル化 3. 文のベクトル化 4. 系列変換モデル 5. 学習データが、ない 6. 実はとても重要な前処理 7. もっと詳しく知りたい方に 5
  6. ざっくり深層学習 入力:入力データを表現する ベクトル 𝑊𝑊1, 𝒃𝒃1 𝑊𝑊𝑘𝑘, 𝒃𝒃𝑘𝑘 … 出力:各出力候補 𝑦𝑦 のスコアが並んだ ベクトル 𝑦𝑦0 𝑦𝑦𝑁𝑁… 6
  7. ざっくり深層学習 入力:入力データを表現する ベクトル 𝑊𝑊1, 𝒃𝒃1 𝑊𝑊𝑘𝑘, 𝒃𝒃𝑘𝑘 … 出力:各出力候補 𝑦𝑦 のスコアが並んだ ベクトル 𝑦𝑦0 𝑦𝑦𝑁𝑁… 7
  8. テキスト分類 入力:ニュース本文を表現する ベクトル 出力:ニュースのカテゴリの スコア(≒確率) スポーツ IT… https://news.yahoo.co.jp/pickup/6284525 𝑊𝑊1, 𝒃𝒃1 𝑊𝑊𝑘𝑘, 𝒃𝒃𝑘𝑘 … 8
  9. 口コミの☆予測 入力:口コミを表現するベクトル 出力:☆~☆☆☆☆が付く スコア(≒確率) ☆ ☆☆☆☆… http://www.cosme.net/product/product_id/10142888/top 𝑊𝑊1, 𝒃𝒃1 𝑊𝑊𝑘𝑘, 𝒃𝒃𝑘𝑘 … 9
  10. 深層学習によるNLPの課題 入力:入力データを表現する ベクトル 𝑊𝑊1, 𝒃𝒃1 𝑊𝑊𝑘𝑘, 𝒃𝒃𝑘𝑘 … 出力:各出力候補 𝑦𝑦 のスコアが並んだ ベクトル 𝑦𝑦0 𝑦𝑦𝑁𝑁… 10
  11. Agenda 1. 深層学習によるNLP 2. 単語のベクトル化 3. 文のベクトル化 4. 系列変換モデル 5. 学習データが、ない 6. 実はとても重要な前処理 7. もっと詳しく知りたい方に 11
  12. 言語は「記号」 •言語(単語)=人間がある事象や概念を表すため に創り出した「記号」 Cf. 画像のRGB値=物理量 •文は可変長かつ構造をもつ •物理量で表現したい 12
  13. 単語のベクトル化 •Word embedding, word vector, 分散表現, 単語埋め込み, 単語ベクトル •単語を200~500次元程度のベクトルで表現 •分布仮説に基づき、単語ベクトルを学習 13
  14. 分布仮説(Distributional hypothesis) 「単語の意味はその単語が出現したときに周辺に 現れる単語(共起する単語)によって決まる」 お誕生日に食べたくなっちゃうケーキですよ! 誕生日やお祝いに美味しいスイーツをプレゼントしたい。 がんの検査の内容は症状によって異なります。 病気の治療に症状にあった薬の使用が必要です。 14
  15. CBoWとskip-gram •深層学習による分布仮説の自然なモデル化 •word2vecに実装されている2つのモデル • CBoW (Continuous Bag-of-Words ) • skip-gram •“king-man+woman=queen” の例でおなじみ 15
  16. CBoWとskip-gram 内積 スイーツ 美味しい を プレゼントに CBoW : 周辺単語からある単語を 予測 Skip-gram : ある単語から周辺単語を 一つずつ予測 CBoWの特殊ケース スイーツ 美味しい 内積 16
  17. Skip-gramにズームイン 美味しい … 𝑁𝑁 𝑉𝑉 … … … … … 𝑉𝑉 one-hot ベクトル: “美味しい” のインデックスに1、 他は0 “美味しい”→”スイーツ”の スコアが高くなるように学習 スイーツ 美味しい 内積 17
  18. https://sites.google.com/site/iwanamidatascience/vol2/ word-embedding 18
  19. (現状の)単語ベクトルは万能ではない •共起単語が近いと似たベクトルをもってしまう • 出現頻度の高い単語:have, take, etc. • 対義語 •一単語一ベクトル • 多義語 19
  20. 定番の学習済み単語ベクトル •word2vec https://code.google.com/archive/p/word2vec/ gensim https://radimrehurek.com/gensim/ •GloVe (Stanford University) https://nlp.stanford.edu/projects/glove/ 20
  21. 「単語」が最適? •伝統的に「単語」が最小単位。解釈も容易。 •単語分割が必要。でも「単語」の単位って? • 最適な単語の単位はアプリケーション依存 • Web検索:「大阪大学」→「大阪」「大学」として検索 した方が多くのドキュメントにマッチしやすい • 翻訳:「大阪大学」は「Osaka University」と訳したい •未知語(Unknown word)の問題 21
  22. サブワードの台頭 • 「単語」に捕らわれないユニット • 単語より小さな単位を含むため、未知語の低減に効果 • 機械翻訳ではスタンダードな手法 お誕生日 → お 誕生 日 食べたくなっちゃう → 食べ た くなっちゃう employer → employ er 22
  23. サブワードの抽出手法 BPE (Byte Pair Encoding) • データ圧縮のため提案された手法 • 頻出する文字列を新たな記号(サブワード)とする 手法 • データからサブワードを抽出、分割 • アプリケーションにおいて最適な分割かどうかは 不明 • 分割における曖昧性が存在 23 employer →employ er; em p loyer; e m p l o y e r
  24. サブワード抽出のツール SentencePiece https://github.com/google/sentencepiece 24
  25. Agenda 1. 深層学習によるNLP 2. 単語のベクトル化 3. 文のベクトル化 4. 系列変換モデル 5. 学習データが、ない 6. 実はとても重要な前処理 7. もっと詳しく知りたい方に 25
  26. 単語から文のベクトルへ 1. 単語ベクトルの平均 2. 系列を考慮:Recurrent neural net 3. 文法構造を考慮:Recursive neural net アクティブな研究分野 26
  27. Simple is best:単語ベクトルの平均 •文を構成する単語 のベクトルの要素 の平均 •IDF値を使って重み をつけたりもする •シンプルだが結構 高性能 美味しい スイーツ を プレゼント 美味しいスイーツを プレゼント 27
  28. IDF (Inverse Document Frequency) あるドキュメントに集中して現れる単語は、特徴 的な単語 𝐼𝐼 𝐼𝐼 𝐼𝐼 𝑡𝑡 = log 全ドキュメント数 単語𝑡𝑡が現れるドキュメント数 IDF 大:単語𝑡𝑡は様々なドキュメントに現れる (冠詞、前置詞) 28
  29. 系列を考慮 単語の順番には意味がある A dog bit John. John bit a dog. 29
  30. 再帰型ニューラルネットワーク (RNN, recurrent neural network) 任意の長さの文を入力可能 𝑤𝑤0 𝑤𝑤1 𝑤𝑤2 … 30
  31. 双方向RNN •前の文脈だけでなく、後ろの文脈も考慮したい 𝑤𝑤0 𝑤𝑤1 𝑤𝑤2 … … 31
  32. 記憶力の改善 遠く離れた時刻(単語)を記憶する能力の付加 •LSTM (Long-Short-Term-Memory) • 長期記憶、短期記憶のバランス •GRU (Gated Recurrent Unit) • LSTMよりも少ない計算量、使用空間量 32
  33. InferSent •SNLI (Stanford Natural Language Inference) で学習 • 2つの文に含意関係があるか、矛盾しているか、 どちらでもないかを予測 •あらゆるアプリケーションで高い性能を発揮する、 汎用的な文ベクトルを生成 美味しいスイーツをプレゼント 人気スイーツを購入 https://github.com/facebookresearch/InferSent 33
  34. InferSent 双方向RNN (LSTM) +max-pooling https://github.com/facebookresearch/InferSent 𝑤𝑤0 𝑤𝑤1 𝑤𝑤2 … … 34
  35. 木構造再帰ニューラルネットワーク •RvNN (Recursive neural net) •文の文法構造に従ってNNを展開 a eats traditionalrabbit New Year ‘s soup NP NP NP NP NP VP S 35
  36. 木構造再帰ニューラルネットワーク •葉ノード(単語ベクトル)からボトムアップに 計算 New Year ‘s soup New Year ‘s soup NP NP NP 36
  37. 木構造再帰ニューラルネットワーク 基本単位は左・右の子 ノードのベクトルを入 力とするRNN •単語ベクトル or 子 ノードの出力 •左の子、右の子の 区別あり 37
  38. https://nlp.stanford.edu/sentiment/treebank.html?na=7&nb=10&sd=1838
  39. STS Benchmark •2つの文の類似度を0~5の6段階でラベル付け •人間のラベルと、自動的に推定した類似度の相関 により、文ベクトルの性能を評価 •Webサイトで最新の手法の性能がチェックできる http://ixa2.si.ehu.es/stswiki/index.php/STSbenchmark 手法 Pearson correlation ×100 GloVeの平均 40.6 InferSent 75.8 Tree-LSTM 71.9 39
  40. CNNによるベクトル化 •CNN (Convolutional Neural Network) も文のベクトル化 に利用される • 局所的な変換に対して頑健 • 並列化しやすく、高速 40
  41. CNNによるベクトル化 •感情分析 •テキスト分類 で良い性能を発揮 商品 が すぐ 壊れ た に 商品 が すぐ 壊れ た に 同じ! 商品がすぐに壊れた すぐに商品が壊れた 41 Max pooling
  42. マルチモーダルなデータ処理 画像・音声・センサデータなど、多様なデータと テキストを融合 this is a dark blue bird with white eyes and a small beak this bird has wings that are brown and black and has a white belly 42
  43. Agenda 1. 深層学習によるNLP 2. 単語のベクトル化 3. 文のベクトル化 4. 系列変換モデル 5. 学習データが、ない 6. 実はとても重要な前処理 7. もっと詳しく知りたい方に 43
  44. (Recap) 口コミの☆予測 入力:口コミを表現するベクトル 出力:☆~☆☆☆☆が付く スコア(≒確率) ☆ ☆☆☆☆… http://www.cosme.net/product/product_id/10142888/top 𝑊𝑊1, 𝒃𝒃1 𝑊𝑊𝑘𝑘, 𝒃𝒃𝑘𝑘 … 44
  45. 系列変換モデル •Seq2seq (Sequence-to-Sequence), Encoder-Decoder •Transformer •入力から「系列」を生成する柔軟なモデル • 英語文を入力として、日本語文を生成→翻訳 • 発話を入力として、返事を生成→対話 • 画像を入力として、説明文を生成→キャプション 45
  46. Seq2seq 甘くて 美味しい スイーツ <s> Sweet and tasty candies Sweet and tasty … 46
  47. Seq2seq 甘くて 美味しい スイーツ <s> Sweet and tasty candies Sweet and tasty … “甘くて美味しいスイーツ” のベクトル表現 Encoder 47
  48. Seq2seq 甘くて 美味しい スイーツ <s> Sweet and tasty candies Sweet and tasty … 自身の一つ前の出力を考慮 しながら単語を生成 Decoder 48
  49. Decoderの出力層 ボキャブラリ中の各単語 について、出力するスコア (≒確率)を計算 スイーツペン … … 猫 … 49
  50. 注意機構 (Attention mechanism) •LSTMを使っても、やっぱり昔のことは 忘れてしまう •(全部の情報を見なくても)ピンポイント で参照したい部分がある 例)翻訳する単語 •注意機構で直接的にその情報を利用 50
  51. Seq2seqにおけるソフト注意機構 甘くて 美味しい スイーツ <s> Sweet and tasty candies Sweet and tasty … 𝛼𝛼𝑖𝑖 = exp(Ω(𝒄𝒄𝑖𝑖)) ∑ exp(Ω(𝒄𝒄𝑗𝑗)) 51
  52. 注意機構はジェネラルな手法 𝑤𝑤0 𝑤𝑤1 𝑤𝑤𝑛𝑛 … 𝑤𝑤1 52
  53. Transformer 53 https://ai.googleblog.com/2017/08/transformer-novel-neural-network.html
  54. NLPでよく使われるNNパッケージ •PyTorch https://pytorch.org/ • PyTorch Forum https://discuss.pytorch.org/ •Chainer https://chainer.org/ •TensorFlow https://www.tensorflow.org/ •Torch (Lua) http://torch.ch/ 54
  55. 有名な系列変換モデルの実装 •OpenNMT http://opennmt.net/ •Pytorch examples https://github.com/pytorch/examples •Chainer examples https://github.com/chainer/chainer/tree/mast er/examples 55
  56. 再現実験は大変 •実装にはたくさんの選択肢が存在 • LSTMのデザインは複数存在、ライブラリによって サポートしているものが違う • Attentionの計算方法 • Linear layer はさむ?はさまない? •著者が公開している実装、前処理のスクリプト を使う •第三者が公開している実装を使うときは、信頼で きそうな人のものを使う 56
  57. Agenda 1. 深層学習によるNLP 2. 単語のベクトル化 3. 文のベクトル化 4. 系列変換モデル 5. 学習データが、ない 6. 実はとても重要な前処理 7. もっと詳しく知りたい方に 57
  58. 深層学習には大量の学習データが必要 •学習データ:入力と、正解がペアになったもの • ニューステキストとカテゴリ • 日本語とその英訳 •深層学習には多数の学習データが必要 • Seq2seq:100万文ペア以上 • 分類問題:数万~数十万 58
  59. 学習データが「ちょっと」あるとき 例)一般ドメインの英日対訳データは大量にある 医療ドメインの英日対訳データは少ししかない •Pre-training • 大量にある一般ドメインのデータで単語ベクトルを 学習 •Fine-tuning • 大量にある一般ドメインのデータでseq2seqを訓練 • 学習したパラメータを初期値として、少量の医療ド メインデータを使ってseq2seqを再訓練 59
  60. 学習データが「ちょっと」あるとき •Pre-trainされたモデル(e.g., 単語ベクトル)で 特徴量を生成 •利用できる学習データを使って、SVMやRandom forestなどを訓練する 60
  61. そもそもデータがない 契約するか買うか自分でクローリングするか 6/6(水)13:20-15:00 鳥海 不二夫先生 「計算社会科学におけるWebマイニング」 https://www.slideshare.net/toritorix/ web-100905271 61
  62. 学習データがないとき: クラウドソーシング •Web上で様々なアノテーションを依頼できる •簡潔なタスクについては非常にパワフルな仕組み •日本でも各種サービスが利用可能 6/8(金)14:00-15:40 馬場 雪乃 先生 「ヒューマンコンピュテーションと クラウドソーシング」 62
  63. 学習データがないとき: 目的を置き換えてみる •InferSent 精度良い文のベクトル化→ 2文の含意・矛盾・それ以外を予測するタスク 美味しいスイーツをプレゼント 人気スイーツを購入63
  64. 学習データがないとき: 目的を置き換えてみる •quick thoughts (Logeswaran & Lee 2018) 文を上手くベクトル化できていれば、周辺の文を 判別できるはず Logeswaran & Lee: An efficient framework for learning sentence representations, ICLR 2018. 美味しいスイーツをプレゼント RNN 商品がすぐに壊れた RNN ケーキと一緒にコーヒーを飲んだ RNN いい天気ですね RNN Classifier 2 64
  65. 学習データがないとき: 目的を置き換えてみる Doersch, Gupta, and Efros. Unsupervised visual representation learning by context prediction. in Proc. of ICCV 2015. ※図は論文より引用 65
  66. Agenda 1. 深層学習によるNLP 2. 単語のベクトル化 3. 文のベクトル化 4. 系列変換モデル 5. 学習データが、ない 6. 実はとても重要な前処理 7. もっと詳しく知りたい方に 66
  67. 定番の前処理 •HTMLタグなどタグの除去 •スペース記号の除去 •(不要な)改行記号の除去 •文ごとに分割 •単語分割 67
  68. ノイズ除去、テキスト正規化 68
  69. よくあるノイズ •URL •非文(@mention,hashtag,商品コード,etc.) •アクセント記号:ã,ä,é •対象以外の言語データ •記号のバリエーション --﹣ ‐ - ⁃ ˗ − ➖ ‒ – ~ ~ ∼ ˜ ˷ ∽ ∾ ∿ 〜 〰 ﹏ •謎のUnicode文字 69
  70. ノイズ除去 • URL・非テキスト・記号のバリエーション →データに頻繁に出現するパターンを観察してルール で除去 • アクセント記号 →文字コードに注意すれば大丈夫 HTMLでは特殊記号に置き替えられるので置換 • 対象言語以外 →Unicodeの範囲指定である程度何とかなる • 謎のUnicode文字 →テキストをまずデコード、失敗したものは排除 70
  71. テキスト正規化 • 顔文字、絵文字の正規化や除去 • 連続した長音符、記号の除去 • 全角数字・アルファベットの半角数字への統一 • 数値表現(年、月、日、金額、etc. )のタグ置き換え 例)2018年6月3日→ $date ※必要かどうかはアプリケーション依存 ※顔文字・絵文字は感情表現として重要 71
  72. 未知語への対処 •単語ベクトルはあるが、モデルの語彙にない • seq2seqは語彙サイズに制限 • 単語ベクトルの最も近い語に置き換える (Li et al. 2016) • サブワードを使う •単語ベクトルにない • <unk> タグを学習しておく • 「適当」に作る • 文字単位の分散表現から近似する Li, Zhang, and Zong. Towards zero unknown word in neural machine translation. in Proc. of IJCAI 2016. 72
  73. 文字単位の分散表現から単語ベクトルの 近似 •文字ベクトルを逐次的 に双方向LSTMに入力 •順方向LSTMと逆方向 LSTMそれぞれの出力を 連結 LSTM LSTM LSTM LSTM 買 い 73
  74. Agenda 1. 深層学習によるNLP 2. 単語のベクトル化 3. 文のベクトル化 4. 系列変換モデル 5. 学習データが、ない 6. 実はとても重要な前処理 7. もっと詳しく知りたい方に 74
  75. もっと詳しく知りたい方に •出た本 深層学習による自然言語処理 (機械学習プロフェッショ ナルシリーズ) 坪井 祐太、海野 裕也、鈴木 潤 (著) •青本 深層学習 (機械学習プロフェッショナルシリーズ) 岡谷 貴之 (著) 75
  76. ACL Anthology https://aclanthology.coli.uni-saarland.de/ 76
  77. 言語処理学会 論文誌発行、年次大会(3月) http://www.anlp.jp/ 77
  78. 情報処理学会NL研 年4回研究会開催中 https://nl-ipsj.or.jp/ 78
  79. NLP若手の会 NLPおよび関連分野の若手研究者・若手技術者の 交流を促進 http://yans.anlp.jp/ 79
  80. NLP若手の会 •大学をまたいだ学生の交流 •企業と大学研究者、企業と学生の橋渡し 2018年シンポジウム:8/27-29@香川 80
Advertisement