Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆

1,070 views

Published on

第64回システム制御情報学会にて発表.

出典:

上田隆一: PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆, 第64回システム制御情報学会研究発表講演予稿集, pp.146-149, オンライン開催, 2020.

Published in: Education
  • Be the first to comment

  • Be the first to like this

PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆

  1. 1. PythonとJupyter Notebookを利用した 教科書「詳解確率ロボティクス」の 企画と執筆 千葉工業大学 上田 隆一 @ryuichiueda 第64回システム制御情報学会研究発表講演会(SCI'20)
  2. 2. 確率ロボティクス • 確率・統計を駆使したアルゴリズムで自律ロボットを 動かす研究分野 • 実世界の不確かさを克服するため 実用的な移動ロボット、 自動運転車を実現するために 重要な分野 2020/5/20 11:00 第64回システム制御情報学会研究発表講演会(SCI'20) 2
  3. 3. 発表者と確率ロボティクス • RoboCup(ロボットサッカー)のために勉強 (2000年、学部4年~) • ロボットを動かすために必須 • 当時最先端と知らぬまま勉強 (機械学習という言葉すら知らなかった) • リーグに同分野の世界的な研究者がたくさん • 教科書が出たので翻訳 • 大学を辞めて研究を中断するので恩返しに • 日本に定着するだろう 2020/5/20 11:00 第64回システム制御情報学会研究発表講演会(SCI'20) 3 自分の予想よりは学ぶ人は増えず
  4. 4. 確率ロボティクスの学習は大変 • ロボットを動かさないと必要性を実感できない • しかし、動かす機会が少ない • 動かすには準備とメンテナンス、公道利用の許諾などが必要 • シミュレータもバージョンアップ地獄 • 必要な知識が多い • 制御、ベイズ統計学、情報理論、信号処理、画像処理、 プログラミング言語、ミドルウェア、クラウド・・・ • ハードを作る場合はさらに 学習するだけでも準備が 大変な上に敷居が高い 公道や通行人のいる環境 で実験できるのは年数回 2020/5/20 11:00 第64回システム制御情報学会研究発表講演会(SCI'20) 4
  5. 5. どうすれば敷居が下がるのか • 千葉工大で講義を持ったときに考え出す • 2015年~ • 個人的な状況 • 研究者復帰までサラリーマン経験 • 「シェル芸」というシェルワンライナー普及活動 • 大学とは全く異なる方法での活動 • オープンソース文化に触れる • オープンソース文化 • ソフトがタダで使えるという単純な話ではない • (いろいろ書くことがあるが)一言でいうと、 「知識と道具は上から授けるものではなくシェアするもの」 2020/5/20 11:00 第64回システム制御情報学会研究発表講演会(SCI'20) 5 最近のシェル芸界隈の事件
  6. 6. 先行事例: Atsushi Sakaiさんのブログ • 次の3つが簡潔に掲載されておりとても分かりやすい • サンプルコード • コードを動かしたシミュレーションの動画 • 解説 • 発表者もサラリーマン生活で 完全忘却していたのでお世話に • 硬い教科書よりも入り口として有効 • 「知識のシェア」 • 大学にいたままだと素直にそう思えなかったかも 2020/5/20 11:00 第64回システム制御情報学会研究発表講演会(SCI'20) 6 講義に取り入れたい
  7. 7. Jupyter Notebook + GitHub の利用(2017年) • Jupyter Notebookで講義資料作成 • Pythonでアルゴリズムを記述 • 3要素(解説・コード・デモ)を配置 • GitHubに作りながら公開 • さっさと世に出す・隠さない • 次のような流れを90分で繰り返す 1. ノートの資料を読んで解説 2. コードを動かして見せる 3. コードを書いてもらう 2020/5/20 11:00 第64回システム制御情報学会研究発表講演会(SCI'20) 7 資料とコードを一体化 画像を出力
  8. 8. 講義の評価 • 評価 • 学生からはそこそこの評価 • 大学のFD委員会からも事例の紹介を依頼される • 自己評価: あまり手応えなし • ノートで講義はしにくい • 手を動かしてもらうには時間が短すぎる • 毎年同じ話をするのは非効率 • 講義の進め方がアドホックで方法論として弱い 2020/5/20 11:00 第64回システム制御情報学会研究発表講演会(SCI'20) 8 自宅で勉強して、講義でコードを書いてほしい (つまり反転授業を目指す)
  9. 9. 自習用ノートブックの作成 • 90分の講義用ではなく、もっと詳細な資料を作成 • 説明もコードも詳細に • コードについてはクラスにまとめる • 上から下に手続き的に進むコードには限界 • コードの順序が説明の順序に 合わなくなり、説明をpdfに分離 • Jupyter Notebookの良さがなくなりいまいち • pdfからコードを見に行くのが面倒 2020/5/20 11:00 第64回システム制御情報学会研究発表講演会(SCI'20) 9 自習用ノートブック(失敗作) コ ー ド が 肥 大 化
  10. 10. 書籍化 • 次のように改善すれば読むのが面倒にならない • Jupyter Notebook: 動くコードを掲載 • ドキュメント: 説明の下に動くコードを抜粋して掲載 • オープンなテキストにするか書籍化するか • これはプロに編集してもらったほうがいい • かなりの作業量なので印税はほしい • コードだけオープンに • Twitterで打診 • 翌日講談社さんから連絡 2020/5/20 11:00 第64回システム制御情報学会研究発表講演会(SCI'20) 10 書籍の形式
  11. 11. できた書籍: 詳解確率ロボティクス • 2019年10月出版 • 現在3刷 • 好評いただいております • Amazonの評価 • ☆4.4 / 16件 • レビューのあるものはすべて☆5 (2020年5月20日現在) 2020/5/20 11:00 第64回システム制御情報学会研究発表講演会(SCI'20) 11
  12. 12. 詳解確率ロボティクスの構成 • 12章構成 • ひとつの章でひとつのアルゴリズム、 あるいは問題を扱う • 各章では数式を導出してコードに するという繰り返し • コードは図番をつけず、 本文の流れの中に掲載 • コードにはGitHub上のノートブックの セル番号を明記 2020/5/20 11:00 第64回システム制御情報学会研究発表講演会(SCI'20) 12 コード 図 コード 本文 数式
  13. 13. Jupyter NotebookとGitHubの役割 • コードの閲覧場所 • 書籍から参照される • コードの書き始めから完成に向かって番号 • 動作確認用 • 番号が途中のものは、途中までちゃんと 動くように配慮 • シミュレータ 2020/5/20 11:00 第64回システム制御情報学会研究発表講演会(SCI'20) 13
  14. 14. Pythonである理由 • 疑似コードの代わりにしやすい • 主観だが、カッコがないのが重要 • ただし、数式の記号がそのまま使えないのは欠点 • ライブラリ • numpy, scipy.stats • matplotlib, nbagg • SymPyも使ってみたい 2020/5/20 11:00 第64回システム制御情報学会研究発表講演会(SCI'20) 14
  15. 15. 苦労した点1:コードをどう掲載するか • 一行一行が長い • 二つ方法がある • スクリーンショット: 解像度に問題 • 文字で渡して編集してもらう: 見た目が変わる • 最終的にスクリーンショット方式で • Macで高解像度のものを撮影 • サイズを揃えること、コードに 変更があるときの差し替えに苦労 • 文字の大きさはギリギリ 2020/5/20 11:00 第64回システム制御情報学会研究発表講演会(SCI'20) 15 コードと本文の字の大きさの違い(これはKindle版)
  16. 16. 苦労した点2: 気力が持たない • この問題については出版社側で楽にしていただいた • 事前に制約があまりないことを伝えられる • ページ数 • カラーの色数 • 締め切りが一度延長 • FastSLAM2.0、変分推論の部分を書かずに提出 →「せっかくだから書きましょう」と編集担当の横山さんに勧められ1か月延長 2020/5/20 11:00 第64回システム制御情報学会研究発表講演会(SCI'20) 16
  17. 17. 出版後の作業 • 教科書だけあっても反転授業にはならない • コロナのこともあり、現在撮影中 • 講義で流すビデオではない • あとは講義の中で出す課題を 準備すれば完成 • Jupyter Notebookで穴埋め問題 • 後期の講義に間に合わせる予定 2020/5/20 11:00 第64回システム制御情報学会研究発表講演会(SCI'20) 17 講義ビデオ 聞く、読む、(コードを)書く、動かす、 考える、と様々な学習手段を提供
  18. 18. まとめ • 詳解確率ロボティクス • 書いたのは1年弱だが構想や試作に3年 • 簡単ではないですが、自身の経験が踏み台になることを希望 • あまり言わないようにしているが、「上から授ける」に猛烈に反発して執筆 • 自身のシェル芸を通じたコミュニティー活動の経験から • 学会も元来、コミュニティーなのに(以下略) • 講義というものを再定義したい • Jupyter Notebookを用いた講義 • 講義で話ながら使う場合は、コードが少なくて済むなら有効 • 後期の講義に向け、ノートブックで問題を作る予定 2020/5/20 11:00 第64回システム制御情報学会研究発表講演会(SCI'20) 18

×