PRAGMATIC4D: Mesin Canggih! Telah Teruji & Gampang Menang
CS224d(自然言語処理のための深層学習)はスタンフォード大のRichard Socherが2015年から教えている講義で、動画やスライドなどの講義資料と演習問題がウェブ上で無料で公開されています。 [CS224d: Deep Learning for Natural Language Processing] (http://cs224d.stanford.edu/) 会社の勉強会で週1回半年程度かけて講義動画と演習を終えたため、勉強したことを簡単にまとめてみたいと思います。 なぜ今なのか? 深層学習(Deep Learning)は2000年代後半のRBMやauto-encoderなどの教師なし学習から流行が始まりましたが、それらを教師あり学習の事前学習に使うアプローチは徐々に衰退し、2010年代前半には画像認識のための畳み込みネットワークがImageNetコンテストのおかげで爆発的に有
This tutorial covers the skip gram neural network architecture for Word2Vec. My intention with this tutorial was to skip over the usual introductory and abstract insights about Word2Vec, and get into more of the details. Specifically here I’m diving into the skip gram neural network model. The Model The skip-gram neural network model is actually surprisingly simple in its most basic form; I think
Doc2Vecで類似文章を検索してみたので、実装を紹介します。 Doc2Vecとは コンピュータが自然言語を処理するためには、まず人間の言葉をコンピュータで扱える値にする必要があります。 単語の意味をベクトル化する手法としてWord2Vecが存在します。 詳しくはリンク先がとてもわかりやすいのですが、ざっくり言うと前後n単語のリストでその単語を表現します。 こうすることで、例えば「犬」と「猫」は同じような文脈で使われるため、似た「意味」であると考えることができます。 Doc2VecはWord2Vecを応用し、文章をベクトル化するものです。 実装サンプル 今回Doc2Vecを用いて実現するのは、以下の2つの機能です。 単語で文章を検索 類似文章の検索 サンプルとして、青空文庫の文章を使用しました。 なお、この記事で使用するコードはGitHubで公開しています。 (学習に使用した文章もzipに
word2vec_cbow はさすがに GPU を使うだけあって元になった word2vec に比べて3倍以上高速になっています。 chainer は GPU を使うとだいぶマシになりますが、それでもかなり遅いです。ただ、 improve-word2vec ブランチの実装では、 Chainer 1.5 のものと比べて速度が1.5倍程度に改善されています(ここには示していませんが、条件によっては2倍以上の性能が出ることもありました)。残念ながらまだマージされていませんが、次のバージョンにはぜひ入ってほしいですね。 まとめ この結果を見る限り、速度に関する比較だけで言えば word2vec か gensim のどちらかを使っておけば良さそうです。 word2vec_cbow は速いですが、 GPU が必要なので動かせる環境が限定されてしまいます。逆にどうしても高速化したい場合には良い選択肢だと
単語の意味をベクトルで表現する手法であるword2vec。検索するといろんな方の解説が見つかります。その解説とソースコードを見比べながら、自分なりに勉強してみました。 今回はword2vecのC#実装であるWord2Vec.Netのソースで勉強しました。ロジックは元々のC言語による実装とほとんど同じなので、このソースで勉強しても問題ありません。また、この方がVisualStudioのデバッガが使えるので追いやすいです。 word2vecには学習アルゴリズムとして「C-BOW」と「Skip-gram」の2種類の手法が紹介されていますが、今回は「Skip-gram」について勉強しました。計算量を抑えるやり方としては「階層的ソフトマックス」と「Negative Sampling」の2種類がword2vecのプログラム中に実装されていますが、今回は「Negative Sampling」を勉強しまし
✔ Train large-scale semantic NLP models ✔ Represent text as semantic vectors ✔ Find semantically related documents from gensim import corpora, models, similarities, downloader # Stream a training corpus directly from S3. corpus = corpora.MmCorpus("s3://path/to/corpus") # Train Latent Semantic Indexing with 200D vectors. lsi = models.LsiModel(corpus, num_topics=200) # Convert another corpus t
Word2Vec というと、文字通り単語をベクトルとして表現することで単語の意味をとらえることができる手法として有名なものですが、最近だと Word2Vec を協調フィルタリングに応用する研究 (Item2Vec と呼ばれる) などもあるようで、この Word2Vec というツールは自然言語処理の分野の壁を超えて活躍しています。 実は Item2Vec を実装してみたくて Word2Vec の仕組みを理解しようとしていたのですが、Word2Vec の内部の詳細に踏み込んで解説した日本語記事を見かけることがなかったので、今更感はありますが自分の知識の整理のためにもブログに残しておきます。なお、この記事は Word2Vec のソースコードといくつかのペーパーを読んで自力で理解した内容になります。間違いが含まれている可能性もありますのでご了承ください。もし間違いを見つけた場合は指摘してもらえると
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く