質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

Q&A

解決済

1回答

952閲覧

gensimでのdoc2vec

kohekoh

総合スコア140

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

0グッド

0クリップ

投稿2018/05/23 05:35

gensimを使ってdoc2vecをしています

そこで学習をさせる際に次元数を決めることができると思うのですが
この次元数は多ければ多いほどいいという考えであってますか?
ちなみに、学習データが多い場合は次元数も多くしていく必要があるのですかね?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

大きすぎてもあまり良いことはありません。

  • 後ろの処理が大変になる

次元が低いほうが何かと楽、という考え方があります

  • 学習させるのが大変

中間層が大きい方がモデルの表現力は増えるのですが、それだけ落ち着くまでが大変になります(たくさんデータ突っ込んでたくさんループ回さないとうまく収束しない)。

  • スパースにしすぎると「意味」を学習できなくなる

直感的な説明は難しいのですが、そんな傾向です。
学校の試験で、ノート1冊分のカンペの持ち込みを許可すると、過去問の答えを写してくるだけなので生徒の理解は深まらない。小さい紙ペラ一枚だけにすると、頑張ってまとめるので理解が深まる・・・という感じでしょうか。
あえて狭い領域に押し込んでやることで、限られた次元数で効率よく表現できるようなモデルにします。

だからって小さければ良いというものでもなく、表現するには適当な次元数が必要です。よく言われている200次元とか。


NNは割とロバストなので、200次元を300次元に変えたってどうということはないかもしれませんし、もしかしたら1000次元くらいまでは問題なくいけるかもしれません。
性能の良し悪しもけっきょくタスク依存な話なので、やってみて実測するしか確認する手段はありません。

投稿2018/05/23 09:05

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hayataka2049

2018/05/24 01:00

微妙。タスク依存な話ですし・・・>この評価ってどのくらい信用できると思いますか? 評価方法としてはとりあえずNNの収束を見たいところですが、gensimだとあるようなないような微妙な感じだったり・・・ https://github.com/RaRe-Technologies/gensim/issues/999 実際的には、とにかく使うタスクで性能が出るようになるまでepochを回すことになるのかと思います
kohekoh

2018/05/24 01:52

性能がでてるかどうかの判断がよくわからないんですよね… 文章の類似度を見ているのですが 直感的な判断が主になってしまって、定量的には評価しにくいですし… epochは回せば回すほどいいんですかね? ちなみに、「NNの収束を見たいところですが、gensimだとあるような…」というのはどういうことですか?評価をする関数がないということですかね?
hayataka2049

2018/05/24 02:15 編集

基本的にNNは妖しい技術なので、評価指標が定まらないような定性的な分析には用いない、ということも大切だと思います。それか、ちゃんと定量的に評価する方法を考える。 >ちなみに、「NNの収束を見たいところですが、gensimだとあるような…」というのはどういうことですか?評価をする関数がないということですかね? それは上記URLを見てください。要約すると、昔からずっと「あった方が便利」「技術的な問題があって実装するの面倒くさいし~」という話が続いていて、word2vecの方のモデルでは現在使えるようになっていますが(compute_lossオプションで)doc2vecはまだ、という状況のようです。原理的にはNNなので、training lossがあるんだけど・・・
kohekoh

2018/05/24 02:24

なるほどですね… traininglossがあるんだけど、実装がめんどくさいとかってことですかね?
hayataka2049

2018/05/24 02:26

そんなところです。あとオーバーヘッドもあると困るね、みたいな話があったりとか
kohekoh

2018/05/24 04:19

なるほどです ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問