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

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

新規登録して質問してみよう
ただいま回答率
85.35%
深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

PyTorch

PyTorchは、オープンソースのPython向けの機械学習ライブラリ。Facebookの人工知能研究グループが開発を主導しています。強力なGPUサポートを備えたテンソル計算、テープベースの自動微分による柔軟なニューラルネットワークの記述が可能です。

機械学習

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

Python

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

Q&A

解決済

2回答

4136閲覧

LSTMのバッジによる学習では時系列が前後してしまうのではないでしょうか?

Mitsuki_0

総合スコア25

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

PyTorch

PyTorchは、オープンソースのPython向けの機械学習ライブラリ。Facebookの人工知能研究グループが開発を主導しています。強力なGPUサポートを備えたテンソル計算、テープベースの自動微分による柔軟なニューラルネットワークの記述が可能です。

機械学習

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

Python

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

0グッド

0クリップ

投稿2021/10/02 00:10

https://arakan-pgm-ai.hatenablog.com/entry/2017/09/03/080000
こちらのサイトではバッチは
ーーーーーーーーーーーーーーーーーーーーーーー
仮にそれを100件とした場合、学習時には1500件の中から100件のデータをランダムに選び出して学習をします。
ーーーーーーーーーーーーーーーーーーーーーーー
と書かれています。

時系列データの場合、ランダムに選び出したら時系列が前後してしまい、正しく学習できないのではないでしょうか?

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

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

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

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

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

guest

回答2

0

ベストアンサー

結論としては、時系列データであっても、ミニバッチ学習は問題ありません

質問者様が示したサイトは、画像を扱う例ですので、LSTMの例を探したほうがイメージがつかめると思います。

参考: Kerasで最短(?)LSTM実装

上記のサイトを参照したいただいた前提で説明します。
(ちなみに、このサイトの例では、batch_size = 20としており、しっかりとミニバッチ学習をしています)

まず、時系列データの学習とは、上記のサイトでの図の青い部分の情報をすべて学習に使い、ピンクの部分を逐次的に予測できるモデルを生成することです。そのため、青い部分の情報を使う順序は問題無く、ランダムにミニバッチが選択されても大丈夫です。一方、学習時点でピンクの部分は知らない前提ですし、推論時でも時系列順にしか知るすべはありません。このピンクの部分を予め知ってしまって学習に組み込むと「リーク」が発生し、正常な学習ができなくなります。

要するに、青い部分を「知ること」については時系列順序は意識する必要はなく、ピンクの部分を「知ること」については時系列順序を意識する必要がある、ということです。なお、これは「知ること」すなわち学習情報として使ってよいかについての話であり、モデルとして時系列を意識した(LSTM型の)ものにしておく話とは別です。

投稿2021/10/02 01:42

編集2021/10/02 01:45
toast-uz

総合スコア3266

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

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

Mitsuki_0

2021/10/02 02:33

回答ありがとうございます。 少し整理させて頂きたいのですが 仮に1000件のデータを持っていたとして 1~900件を学習用データ、901~1000件を検証用データに分け 学習用データでLSTMのモデル作成すれば「リーク」は発生しないかと思います。 ただ、バッジは1~900件の中をランダムに学習するので 時系列データではランダムに選んだデータの答えはその次のデータになるので、学習に支障をきたすのではないかと思うのですが、、、。 例)バッジサイズが「3」の場合 1~900の内、10番目・500番目・700番目のデータで学習することになり、その答えである11番目・501番目・701番目がない状態で学習するのではないでしょうか? toast-uz様は「知ること」と表現されておりますが、 学習用のデータを1~900件と定めていることで LSTMでは11番目・501番目・701番目を知った状態で 10番目・500番目・700番目のデータを学習している、という事になるのでしょうか?
toast-uz

2021/10/02 03:22 編集

window_size=1であれば、質問者様のご理解の通りです(window_sizeが変われば入力データが増えるだけなので、今回のリークの件とは無関係です)。学習とは、入力と出力(正解)をともに知った状態で、モデルを最適化することです。 もともと、青い部分の情報(質問者様の例では1〜900件)をすべて知った上で、グラフの傾向や周期などを学び取って、将来のピンクの部分(901〜1000件)を予測するのが、LSTMです。すべての情報(1〜900件)を使ってよいバッチ学習が理論的な前提であり、ミニバッチ学習で乱択するのは学習を効率化する手段に過ぎません。なので、乱択であちこちのデータをつまみ食いするのは、「知っていることになっているデータの範囲(1〜900件)」の中である限り、問題ありません。901〜1000件の情報を使わなければよいのです。
Mitsuki_0

2021/10/02 03:24

なるほど、理解しました! ありがとうございます。
guest

0

時系列が影響するデータならそうですし
画像認識なら問題ないです

投稿2021/10/02 00:34

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Mitsuki_0

2021/10/02 01:11

回答ありがとうございます。 時系列が影響するデータの場合はバッジサイズを「1」としておけば問題ないという事でしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問