🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
深層学習

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

Kaggle

Kaggleは、機械学習モデルを構築するコンペティションのプラットフォームおよびその運営企業を指します。企業や政府といった組織とデータサイエンティスト・機械学習エンジニアを繋げるプラットフォームであり、単純なマッチングではなくコンペティションが特徴です。

機械学習

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

Q&A

解決済

2回答

3000閲覧

Kaggleで画像分類のコンペを行うとき、上位入賞する人は自作のモデルを作成しているのでしょうか?

faker

総合スコア51

深層学習

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

Kaggle

Kaggleは、機械学習モデルを構築するコンペティションのプラットフォームおよびその運営企業を指します。企業や政府といった組織とデータサイエンティスト・機械学習エンジニアを繋げるプラットフォームであり、単純なマッチングではなくコンペティションが特徴です。

機械学習

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

0グッド

0クリップ

投稿2020/11/23 18:08

Kaggleを使用したことがない初心者です。
画像分類のコンペというのはあくまで例と考えていただけると有り難いです。

これまでにいろいろな深層学習のモデルが提案されてきましたが、それらをそのまま使用することで上位を狙うことは難しいのでしょうか?
皆さん自分でモデルを考えているのでしょうか?そうだとすると、どのような流れや考え方でモデルを作成しているのでしょうか?
検討外れなことを聞いていたら申し訳ないです。回答よろしくお願いします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

画像系のコンペでは、自作というかよく使われるモデルをコンペ用にカスタマイズするといったことはよくあります。
画像なので、GBDTをなどを使う人はあまり(ほとんど?)見ません。
やはりCNN系が多いですね。

Kaggle のコンペサイトのDiscussion 内にはかならず、「1st place solution」「2nd place solution」 ... と上位者の解法が並んでいますのでそちらをご覧になられるといいかもしれません。

画像系コンペ例

投稿2020/11/24 02:16

編集2020/11/24 04:38
fkubota

総合スコア42

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

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

faker

2020/11/25 16:11

画像系でよく使用されるモデルとは、例えばVGG16とかResNetとかですか? 最終的に「この手法で行こう!」と思いつくまでの過程としてはどのようなものになるのでしょうか? 特徴量を新しくどんどん追加していき、学習して結果が良くなる特徴量のみ使う・・・みたいな考えくらいしか自分は思いつかないのですが、機械学習で結果を出す場合ってこのように試行錯誤的にやるものですか?
fkubota

2020/11/26 00:28

そうですねー。 最近では、基本的にResNet, EfficientNet などを計算コストを考えながら(初めの)モデルを決めることが多いかなと思います。 モデルを変更して極端に性能が良くなることはほとんどないため、その他の部分で勝負しなければなりません。 - 前処理 - データの水増し などなど... どれが効くかはコンペによります。 コンペの癖を見抜いてそれにあった手法をいろいろ試していくしかないと思います。 結局、やってみないとわからないことがほとんどだと思いますので、とにかくたくさん試すということが大事かなと思います。 僕としては、なんでもいいからコンペに取り組んだほうがいいと思います。 勉強して準備ができてから取り組もうとする人は多いですが、個人的な経験だと準備完了の日はなかなか訪れません。 参加して、公開されているノートブックを1行ずつ理解して、、、 というのを繰り返すといいと思います。 僕も初めにそれをしました。 試行錯誤の過程はコンペに参加すると徐々にわかると思います。 こういったところは本ではなかなか学べませんからね...
faker

2020/11/26 04:38

なるほど、ありがとうございます。 モデルよりも入力するデータが大切なんですね… 「計算コストを考える」というのは、コンペによって「リアルタイムな処理を行いたい」「実行時間を早くしてほしい」などの条件があったりするということですか? 自分としても頭でっかちになってる部分があると思ってるので、言われているようにまず手を動かしてみたいと思っているのですが、これだけでも教えていただけるとありがたいです・・・!
fkubota

2020/11/26 04:45

「計算コスト」というのは例えば時間です。 あるモデルは学習に4時間、あるモデルは2日かかるといった状況があります。 コンペ序盤であればたくさん実験したいので、軽いモデルで行なう。 後半は時間がかかってもより性能の良いモデルを使いたいので重いモデルを使うなどです。 あとは、クラウドのリソースを使う場合はお金が発生したりしますので、そのあたりも考慮してモデルを決めたりします。 このあたりも最初からあたりをつけるのではなく、とりあえず試してみて、状況に応じてもう少し、軽いモデル/重いモデルを使おうといった流れに自然になります。
faker

2020/11/26 05:10

考え方が分かりました、ありがとうございます。とても参考になりました。
guest

0

「モデル」という言葉の意味にもよりますが、おそらく質問者様の言われている定義だと、回答は「違います」となります。なお、質問者様の要望通り、画像系も引き合いに出しながら、機械学習一般の範囲で回答しています。

機械学習の大きな流れは以下のようになります(強化学習といった分野は除く)。完全に直線的な流れではなく、状況によって前段階に戻って改善したりします。

  • 特徴量の作成
  • モデルの作成
  • モデルの評価
  • モデルのチューニング
  • アンサンブル

ここで最も上位陣で差がつくのは、最初の「特徴量の作成」の部分です。モデルの作成の段階では、基本的にはGBDTというモデルをほぼ選択します。GBDTとしては、以前はxgboost、最近はLightGBMが採用率が高いそうです。

よって、新しいモデルを開発したりすることはぼぼありません

ディープニューラルネットの層を工夫したり、といったレベルも質問者様の「自作のモデル」に該当するのであれば、時々はやっています。なお、ディープニューラルネットのフレームワークは「層を工夫したり」の表現力が高いため、工夫のレベルはさまざまです。パラメータや積み重ねの組み合わせを変えるレベルから、層そのものをカスタムしたり、複数の層のアウトプットを合流させたり、といろいろできます。CNNもRNNもLSTMも、乱暴に言えば「層を工夫したり、といったレベル」であり、どこからが「新しいモデル」かはあいまいです。Kaggleで作られた新たな「工夫」が、流行って名前がつけられ、新しいモデルとして認知されることも、ありえるでしょう

追記: 画像系はCNNがメインなので、上記の「ディープニューラルネットの層を工夫したり、といったレベル」が主流ですね。fkubota様の回答通りです。

おそらく、既存の工夫レベルを超えた、いわゆる「新しいモデル」を開発するといったことは、企業や大学等の研究機関が(まれに)行うことで、Kaggleのようなリソースと期間が限られている実践に近い場ではあまり行われないものと思います。

なお、回答にあたっては、書籍「Kaggleで勝つデータ分析の技術」、Qiita等のKaggle関連記事複数を参照して、回答者の解釈を一部入れて記述しています。ただし、Kaggleそのものを深く見ているわけではないため、最新の状態を正確に表現している保証はありません。

補足

三中信宏「統計思考の世界」では、「計算を考える前にデータを見ることが重要」「とにかくそのまま適当な統計ツールに食わせてその出力を排泄させてみることは、本書をもって全力で阻止したい愚行」(原文を回答者にて文意を損なわない範囲で一部短縮)と主張しています。「モデル」は単なる道具です。「何か素晴らしいモデルを開発することが機械学習のポイントである」というイメージは崩した方がよいと思います。

投稿2020/11/23 22:38

編集2020/11/24 22:58
toast-uz

総合スコア3266

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

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

faker

2020/11/25 06:46

なるほど、最初に使用する定番としてGBDTっていうのを使用するんですね。 モデルで差をつけるっていうよりは、まずデータを見て問題ごとにあった特徴量を作成することで差をつけるといったイメージでしょうか。 GBDTがうまく機能しなかった場合、他の方法を使用するなんてこともあるのでしょうか?殆どの場合はGBDTで解くことができるって認識でいいでしょうか?
toast-uz

2020/11/25 11:08 編集

画像とか音声とかの特殊領域以外はご理解の通りです。 書籍「Kaggleで勝つデータ分析の技術」によると、まずGBDTを選択し、内容によっては、ニューラルネットと線形モデル(いくつかのモデルの総称)を補完として使い、さらに精度を上げるための他のモデルも使う。最終的にいくつかのモデルを総合して予測を出すが、GBDTは外さない。といった記述になっています。またGBDTを効果的に使うには、可能性ある特徴量をどのように増やすかがポイントです。 日本の有名AIベンチャーであるPFN社は、今年になってGBDTに特化したモデルチューニング用のツールを発表しており、Kaggleや実利用の世界でGBDTが幅広く支持されていることがわかります。機械学習というとディープニューラルネットのイメージが強く、そこから勉強する場合も多いですが、実用の世界ではGBDTみたいです。(私も実用の世界にいるわけではないので、そうなんだ、というレベルですが) ですので、ここで紹介したLightGBMを使ってみると、機械学習を幅広くカバーした実力がつくと思います。ちなみにLightGBMはMicrosoftが開発しています。
faker

2020/11/25 15:56

なるほど、ありがとうございます! 何にしても一度GBDTを触ってみたいと思います。
faker

2020/11/25 16:13

書籍も教えていただきありがとうございます。 初心者には難しそうですが・・・流してでも読んでみようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問