🐥

【AI_15日目】自然言語処理_3冊目

2024/10/09に公開

こんにちは投資ロウトです。

背景

AI開発ができるために自然言語処理について理解を深めていきます。

以下の記事のStep2として、「BERT・GPTモデルについての本を読む」3選が書かれているので、そちらをやっていきたいと思います。

https://nlpillustration.tech/?p=4419#rtoc-7

進捗状況

少しずつ進めていっていますが、現在の進捗は以下になっています。

①要件定義:1冊
②設計:1冊
③システムビジネススキル:3冊 + 1冊目(keycloakが進行中(未マスト))
④インフラ:3冊
⑤フロントエンド:0冊、1冊(TailwindCSSが進行中(未マスト))
⑥AI:3冊
⑦テスト:0冊(単体テストが進行中)

自然言語処理

・自然言語処理の領域でブレイクスルー・・・BERTと呼ばれるGoogleが開発したモデルで、GLUEという英語の言語理解を評価するタスクで、最先端モデルを大きく上回るスコアを出したのがきっかけ。

・BERT・・・今は標準的なモデルとなっており、比較的少数のデータからでも高い性能を出すことが知られている。

・言語モデル・・・文章の自然さを確立で表現する数理モデル

・文書分類・・・文章を与えられたカテゴリーに分類する

・文章生成・・・与えられた文章に続く文章を生成する

・文章校正・・・文中の表記ミスを修正する

・ニューラル言語モデル・・・文章からの特徴量抽出を自動的に行える様になる。また文章や単語を密なベクトルに変換できる。

スキル

・PyTorch・・・深層学習のフレームワーク

・Transformers・・・BERTで処理を行うためのライブラリ

・PyTorch Lightning・・・学習や性能評価を効率的に行うためのライブラリ

その他

・BERTで日本語のWikipediaの全ての事前学習したものが利用できる。

・BERTは言語の特徴をよく捉えた特徴抽出器としての役割を果たすため、ファインチューニングでBERTのパラメータを特に変える必要がないとのこと。

前処理

・トークン化・・・重要な前処理で、文を適当な単位に分割する。

・トークナイザ・・・トークン化を実現するツール

・単語分割・・・文章を意味のある最小単位に分割する方法

・文字分割・・・文章を1文字ごとに分割する方法
※単語分割よりトークン数が増えてしまうため、ニューラルネットワークの計算量が増えてしまうというデメリットがあるとのこと。

・サブワード分割・・・単語をさらに部分文字列に分割するような方法のこと
※「##ラーメン」など色々な未知語に強い性質があるとのこと。

ニューラル言語モデル

・言語モデル・・・文章の出現しやすさを確率によってモデル化したもの

・埋め込み層・・・トークンを意味ある入力にするために、密なベクトル表現に変換を行う層

・分散表現 or 埋め込み表現・・・トークンに対応づけられたベクトル

訓練データを作るための日本語コーパスはWikipediaが古くから使われていたとのことです。

また巨大なCommonCrawlデータセットも使われているとのことです。

https://note.com/kan_hatakeyama/n/nf5b102271f82

・分散表現がトークンの言語的特徴をとらえる・・・人間が似ていると思うトークンは似たような分散表現を持つということ。
→これが実現されるために、学習を進める過程で似た様な分散表現を持つように調整されるとのことです。

https://qiita.com/hi-ku/items/8140a06c381479c16304

Word2Vec

・Word2Vec・・・トークンに対して文脈に依存せず一意な表現を与えるモデルの代表

・加法構成性・・・数値の加減算と意味的な加減算が一致するような性質のこと

・問題点・・・各単語に対して一意に分散表現を与える性質は、多義語の際に問題になるとのこと。

ELMo

・ELMo・・・トークンに対して文脈に応じた表現を与えるモデルの代表

・RNN・・・再帰型ニューラルネットワークのこと

・RNNの短所・・・入力された情報を長期間保持できない

・LSTM・・・RNNの長時間情報を保持できないという問題を改善するために提案されたモデル

と一旦以上で学習を区切りたいと思います。ご精読ありがとうございました。

Discussion