セーターの備忘録

大学編入やIT関連の内容を記していく予定です

データ分析・機械学習について学ぶゼミを運営した話

私は現在,知能システムに関する研究室に所属しています.担当教授と話す中で,後輩(3年生)のデータ分析に関して勉強する演習ゼミの運営を院生メインで行うことになりました.
この記事では,現状これといって正解のないデータ分析や機械学習の教え方について,どうやって教えていったのか,ゼミを運営していく中で感じたことなどについてまとめます.

現状と目標

現状

ゼミを運営していく上で,まず教える相手の現在の理解レベルについて把握する必要があります.弊学の場合,一般的な3年生では以下のような学習レベルになっています.

データ分析について勉強していくことを考えると少し厳しい状況ですが,世の中のデータ分析を学んでみたい人というのは割とこのレベルが多い気がします...

目標

演習ゼミは前期に週に二回,合計30回程度あるため,この中でできることとして以下のような目標を立てました.

  • 一般的な機械学習手法や関連技術について,名前とどのように使うかについてざっくり理解する
  • 数式レベルまでの理解は求めない(一応説明は行う)
  • 今後卒業研究を行う上で必要となる考え方について理解する

実際の取り組み

各回のゼミでは,基本的に以下の手順で運営を行いました.

  1. 教員や院生から技術について説明
  2. 演習
  3. 次回までの課題提示

教えた内容については,以下の順番で30回程度に分けて教えました.機械学習手法と関連技術を同時に紹介していくという手順です.
演習や課題として取り組んでもらったデータ分析では,UCI Machine learning repositorySIGNATEの練習問題を用いて分析を行ってもらいました.

  1. Jupyter notebookの使い方・Pythonになれる・線形回帰
  2. Support Vector Machine (SVM)・データの見方
  3. ロジスティック回帰・Cross Validation
  4. 決定木・ランダムフォレスト
  5. 単純パーセプトロン・前処理
  6. Neural Network (NN) フルスクラッチチャレンジ
  7. Convolutional Neural Network (CNN)
  8. 教師なし学習について
  9. 興味のあるテーマ調査・院生の研究紹介・外部講師講演など

やってみて見えた課題と良かったところ

課題

  • 1講義あたりの時間が短くてなかなか演習までいけず,時間内に収めるのが難しい
  • 教えるための資料作成に時間が取られ,自分の研究が止まりがちになる
  • 時系列データやRNN,LSTM,半教師あり学習強化学習については教えられていない
  • 一度単純パーセプトロンやNNの説明をしていても,NNのフルスクラッチを講義内で行うことは難しい

良かったところ

  • 一般的な手法や関連技術について知ってもらい,一回は使ったことがあるレベルまで上げることができた
  • データ分析に関する知識をある程度持ってもらった上で,今後取り組みたい研究テーマについて考えてもらうことができた
  • 毎回資料を作成するため,自分たちの復習になり,新たな発見なども得られる
  • 機械学習を人に教えるということを学ぶことができる

終わりに

半年間ゼミを運営してみて,とりあえず目標は達成することができたと考えています.
とにかくデータ分析が楽しいと感じてもらえるよう,SIGNATEにあるような現実的なデータを取り入れたりして演習を行いました.
また,演習を取り入れたことで,個人個人の理解度を把握することができ,受け身にならず考えながら取り組んでもらえるようにしました.
ゼミを受けた3年生からゼミをやってみてのアンケートも行いましたが,全体的に好印象のようで安心しました……
後期以降もアンケートや夏休み中に各自行ったことなどを参考にしつつ,試行錯誤しながら運営していこうと考えています.