質問: 現在, 機械学習でデータの分類を行なっています. ここで学習を行なっている段階で疑問となったことについてです. 現在、モデルに学習データをミニバッチ学習させています. しかし, 知り合いからk分割交差検証の方が良いと言われました. 自分の中での認識としては... <ミニバッチ学習> 1 epoch内で学習データ(1000枚)をバッチサイズ(10枚)で100回学習させること だと思っています. 1 epoch内でデータ(1000枚)を10分割に分けて1セット(100枚)を検証データに. 残り9セット(900枚)を1epoch内で学習させること だと思っています. ミニバッチ学習とk分割交差検証の併用でできるのでしょうか? 上記の例でいうと, 10分割交差検証で分割したうちの9セット(900枚)に対して,さらに10枚ずつに分けてミニバッチ学習を行なっていくのでしょうか? そして,最後に検証データ1セット(100枚)に対して検証を行う. 間違った認識をしているかもしれません. 回答宜しくお願いします. 使用環境: python (keras)
回答: ミニバッチ学習はNNの最適化の際のテクニックです。また、k分割交差検証はモデル評価の方法です。 全く違うレイヤのものなので、併用できるのかという質問自体に対してはイエス。その場合は質問文の「上記の例でいうと~」の方法でやります(当然それを10回やって、評価指標を計算する訳ですが)。 「ミニバッチ学習をk分割交差検証に置き換える」という文に意味があるかどうかという質問に対しては、ノー。知り合いの方と質問者さんの、互いにまたはどちらかに誤解があると思うので、よく確認してみてください。 なお、深層学習の学習は計算コストが高いので、そもそもk分割交差検証しない場合も多いと思います(ホールドアウト検証で済ませるなど。データは潤沢にある前提なので、それでも学習データとテストデータを十分な数用意できる)。