Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
慶應義塾大学 機械学習基礎02 コーディング
Search
Semantic Machine Intelligence Lab., Keio Univ.
PRO
October 12, 2023
Technology
99k
119
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
慶應義塾大学 機械学習基礎02 コーディング
Semantic Machine Intelligence Lab., Keio Univ.
PRO
October 12, 2023
More Decks by Semantic Machine Intelligence Lab., Keio Univ.
See All by Semantic Machine Intelligence Lab., Keio Univ.
[Journal club ] PHyCLIP: 𝒍𝟏-Product of Hyperbolic Factors Unifies Hierarchy and Compositionality in Vision-Language Representation Learning
keio_smilab
PRO
0
38
[Journal club] ReMEmbR: Building and Reasoning Over Long-Horizon Spatio-Temporal Memory for Robot Navigation
keio_smilab
PRO
0
100
[Journal club] ReLaGS: Relational Language Gaussian Splatting
keio_smilab
PRO
0
97
[Journal club] Flow as the Cross-Domain Manipulation Interface
keio_smilab
PRO
0
90
Mobi-𝜋: Mobilizing Your Robot Learning Policy
keio_smilab
PRO
0
160
A Gentle Introduction to Transformers
keio_smilab
PRO
16
6.8k
FlowAR: Scale-wise Autoregressive Image Generation Meets Flow Matching
keio_smilab
PRO
0
58
[Journal club] VLA-Adapter: An Effective Paradigm for Tiny-Scale Vision-Language-Action Model
keio_smilab
PRO
0
140
[Journal club] Improved Mean Flows: On the Challenges of Fastforward Generative Models
keio_smilab
PRO
0
200
Other Decks in Technology
See All in Technology
作って終わりにしない タイミーのセマンティックレイヤー育成の現在地
chanyou0311
4
2.3k
2026TECHFRESH畢業分享會 - Lightning Talk - E起 See See : 電商推薦讀心術? 數據說了算
line_developers_tw
PRO
0
930
"何を作るか"を任される エンジニアは、どう育つのか
yutaokafuji
1
660
Agent Skills設計で柔軟性と硬さのバランスが難しい話
nassy20
0
130
プロダクト開発から業務改善コンサルまで。事業全体へ「染み出す」ことで広がるエンジニアの可能性
ham0215
0
120
SONiCの統計情報を取得したい
sonic
0
110
Chainlitで作るお手軽チャットUI
ynt0485
0
230
Building applications in the Gemini API family.
line_developers_tw
PRO
0
3.2k
AWSシリコン最前線 〜AI時代のチップ選択を読み解く〜
htokoyo
2
560
RAG を使わないという選択肢
tatsutaka
1
220
10倍の生産性を実現するAI駆動並列エージェントのすべて
kumaiu
5
1.4k
2026.06.13_AI時代に事業会社が「SIer出身エンジニア」を求める理由 / Why Businesses Seek Engineers with a System Integrator Background in the AI Era
jumtech
0
1.1k
Featured
See All Featured
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
Into the Great Unknown - MozCon
thekraken
41
2.6k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
160
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
330
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
Amusing Abliteration
ianozsvald
1
200
Un-Boring Meetings
codingconduct
0
310
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
250
GitHub's CSS Performance
jonrohan
1033
470k
Embracing the Ebb and Flow
colly
88
5.1k
Automating Front-end Workflow
addyosmani
1370
210k
Transcript
情報工学科 教授 杉浦孔明
[email protected]
慶應義塾大学理工学部 機械学習基礎 第2回 機械学習の基礎(1):コーディング
本講義の到達目標と今回の授業の狙い - - 2 本講義の到達目標 ▪ DNNの基礎理論と実装の関係を理解する ▪ 種々のDNNをコーディングできる 今回の授業の狙い
▪ ChatGPTを用いたコーディング習得方法を学ぶ ▪ 出席確認: K-LMS上の機械学習基礎のMainページへアクセス
ChatGPTを用いて コーディングを習得する - - 3
何でも聞ける「個人チューター」の必要性 - - 4 これまでの「機械学習基礎」受講者の意見 ▪ 「Pythonのオブジェクト指向に関する記法に馴染みがない」 ▪ 「調べ方がわからない」 「個人チューター」の背景
▪ プログラミング入門者には個人チューターが効果的だが、受講者に対 してTAが少なすぎる(40:1) ▪ 上級者であっても、初めて使うライブラリには説明が必要
ChatGPT [OpenAI, 2022/11/30] - - 5 ▪ ChatGPT:大規模言語モデル(Large Language Model;
LLM)を用い たチャットボット ▪ 言語モデル:単語列の生成確率を推定するモデル ▪ 「ChatGPT」はサービス名であるが、口語では大規模言語モデルを 指すことが多い ▪ 以前のチャットボット ▪ 数十年前から何度も盛り上がるものの、 キラーアプリに欠けるため必需品とならず ▪ 関連技術を今後の授業で紹介
ChatGPTを 個人チューターとして使おう - - 6 ▪ おそらく本科目が日本で初めて ChatGPTを用いたコーディング習得 を大学科目で正式に開始 (2023/1/6)
▪ 将来的に当然のスキルになるはず
ChatGPTとの対話例 - - 7 1. ChatGPTと会話することでPyTorchを学んでみたいと思います。私はPython初心者 です。オブジェクト指向プログラミングもわかりません。まずはPyTorchの初心者 用プログラムについて教えてください。 2. PyTorchをインストールしました。MNIST画像データセットをダウンロードするに
はどうすれば良いですか? 3. ダウンロードできました。データを加工して、モデルに入力する形にするにはど うすれば良いですか? 4. 変換できました。次に多層パーセプトロンで画像分類を行うにはどうすれば良い ですか? 5. 最初の行にあるピリオドはどういう意味ですか?
杉浦が監修した「Newton別冊 ChatGPT徹底解説」が 発刊されました(2023/10/2) - - 8
コーディング習得でのChatGPTのメリット・デメリット - - 9 ▪ ビギナーほど説明が必要 →ChatGPTは初級コードが得意 ▪ 高度知識に比べ初級知識に関する学習サンプルが多いためと予想 ▪
公式ドキュメント(含教科書)は正式な知識源だが、あらゆるレベル に合わせたドキュメントを書くことは不可能 ⇔ChatGPTの回答は正しいとは限らないが、ChatGPTでは個々のレベル に合わせた説明が可能 ▪ TAに聞くのは効率的だが気を使う ⇔ChatGPTはいつでも・どこでも・気を使うことなく質問可能
ハルシネーションとコーディングへの影響 - - 10 ▪ ハルシネーション(錯誤) ▪ いかにも正しそうだが実際には誤りである内容の生成 ▪ ハルシネーションの影響を軽減するには?
▪ 調べ物: ハルシネーションかどうかわからないこともある ▪ コーディング: コンパイラのエラーメッセージをもとに間違いを 修正しやすい ▪ 教科書で調べる、検索する、人に聞く、をバランスよく組み合わせる のが良い
コーディング用プロンプトのコツ - - 11 ①「◦◦にわかるように」 初心者・大学生・高校生・小学◦ 年生等の単語を〇〇に入れる ②条件を細かく指定 Pythonのコード、コメントを多く、 ◦◦ライブラリを使う/使わず、等
③英語を使用(学習に英語のデー タが多く使われているため) 日本語プロンプトを作ってから ChatGPTで翻訳すれば良い
プロンプトエンジニアリング: 望ましい出力を得るために指示を設計・改良する作業 - - 12 ▪ 背景 ▪ プロンプトで出力を制御できるAIの台頭 ▪
今後 ▪ ChatGPT等が日常で使用されるようになり、プロンプトエンジニア リングのスキルが重要になる
プロンプトエンジニアリングスキルを身につけるには? - - 13 プロンプト集を作る ▪ 有益だったプロンプトをメモ ▪ 使う頻度が高いほど上に来るよ うにランキング
有益なプロンプトを調べる プロンプトエンジニアリング講座、 検索、周囲と情報交換
ChatGPTを使う際の 注意点 - - 15
大規模言語モデルによるコード生成で起こった問題の例 (2022/10 GitHub Copilot) - - 16 ▪ Texas A&M
Univ.のTim Davis 教授:「自分が著作権を有する コードを、attributionやLGPL 表示なしでCopilotが生成し た」 ▪ プロンプト:「sparse matrix transpose, cs_」 ▪ 感想:確かに多くは類似 ▪ コメントまでコピペされて いる点は類似とみなされて もやむを得ない https://twitter.com/DocSparse/status/1581632706693079042/photo/1
注意:リテラシーや法的問題 - - 17 ▪ プロンプトに含めるべきではない情報に注意 ▪ 個人情報、パスワード、APIキー、機密情報等 ▪ 「公に書けない情報」を入力してはならない
▪ 他者の著作権を侵害してはならない ▪ 例:「生成されたコードを公開したが、後になって他者 の著作物と著しく似ていることがわかった」という状況 は許されない ▪ 利用規約に反する行為 ▪ 利用規約が書かれたページがサービスごとに存在するの で読むこと
ChatGPTをコーディング習得補助に使うのであって、 コードをすべて生成させるわけではない - - 18 ▪ 大規模言語モデルのみで商品レ ベルのプログラムを簡単に作る ことはできない ▪
例えばゲームを作るとして、 「シューティングゲームなの か、2次元なのか、ボス敵は どんな形か、…(仕様)」が 明確でなければ、良いゲーム は作れない ▪ OpenAI CodeX https://www.youtube.com/watch? v=Zm9B-DvwOgw
「大規模言語モデルがコーディングを全部行う」は誤り - - 19 ▪ ネット上に「大規模言語モデルがあれば人間がコーディングしなくて 良くなる」という発言があるが、これは誤り ▪ 実際に、情報系学生から将来に対する不安の声があった ▪
入門レベルのコードしか書かないケースに対する発言では。 ▪ 入門者: 大規模言語モデルが自分より良いコードを書くように見え るので、惑わされないように注意 ▪ 上級者になれば惑わされない(例:就職した卒業生談「変な情報に 騙されすぎですね」)
長所・短所を理解し学びに活用することが重要 - - 20 誤りの例 ▪ 「51は何で割り切れますか?」→ 「51は素数です」(2022/12月) ▪
(CNNを出力させたうえで)「そのモデルのパラメータ数はいくつで すか?」→「18762です」(実際には約9000) ポイント ▪ 初級知識を質問することにとどめ、検証を忘れないように ▪ ChatGPTは英訳サービス・予測変換・文法校正ツールと本質的に同じ ▪ LLMはツールである(鉛筆や辞書同様、使い方を学べばよい)
実習 - - 21
初歩的な内容を質問する(3分) - - 22 課題:以下をChatGPTに入力せよ 1. ▪ 上記回答中のわからない内容についてさらに問い合わせよ ▪ 例:「ブロードキャストとは何ですか」
2. 3. NumPyについて教えて 現在、google colaboratoryのノートブックの画面を見ています。この ノートブックを実行する手順を教えてください 以下のコードを説明してください。 np.loadtxt(fname, delimiter=",")
エラーメッセージと修正方法の解説 - - 23 ▪ 課題:以下をChatGPTに入力せよ 以下のエラーについて説明し、どのように修正すればよいか教えてください。 ZeroDivisionError Traceback (most
recent call last) <ipython-input-6-b457b0d96231> in <module> 1 ans = 0 2 for i in range(10): ----> 3 ans += A[i] // B[i] 4 print(ans) ZeroDivisionError: integer division or modulo by zero
ChatGPT補助付きNumPy入門(10分) - - 24 課題:以下のページの確認問題を解け。その際にChatGPTに説明させよ。 【要keio.jp】 https://colab.research.google.com/drive/1r_JfRv3eL4-eyJ3- G2xcBain1CTS41y8?usp=sharing
docstringの生成 - - 25 ▪ 課題:以下をChatGPTに入力せよ 以下の関数のdocstringを生成してください。出力はdocstringのみとしてください: def zeller(year, month,
day): if month <= 2: year -= 1 month += 10 else: month -= 2 w = day + int((13 * month - 1) / 5) + year + int(year / 4) - int(year / 100) + int(year / 400) x = w % 7 return x # コンソールから入力を受け取る year = input("誕生年を入力してください(Enterで決定):") month = input("誕生月を入力してください(Enterで決定):") day = input("誕生日を入力してください(Enterで決定):") # 曜日の計算を0-6の間で計算する x = zeller(year, month, day) # 出力 ws = ["日", "月", "火", "水", "木", "金", "土"] print(f"{year}年{month}月{day}日の曜日は{ws[x]}曜日です")
問題点の指摘とコーディング規約に準拠した修正案の生成 - - 26 ▪ 課題:以下をChatGPTに入力せよ 以下の問題点を指摘し、正しいコードを出力させてください。コードはPEP8 に準拠させてください。: for i
in range(1, 1001): sum_divisor = 0 for j in range(1, i//2): if i % j == 0: sum_divisor += j if i == sum_divisor: print(i)
別解の生成 - - 27 ▪ 課題:以下をChatGPTに入力せよ 以下のコードを、内包表記を使って高速になるように書き換えてください: for i in
range(1, 1001): sum_divisor = 0 for j in range(1, i//2 + 1): if i % j == 0: sum_divisor += j if i == sum_divisor: print(i)
ChatGPT補助付きPythonデバッグ入門(10分) - - 28 課題:以下のページの例題1を解け。その際にChatGPTに説明させよ。 【要keio.jp】 https://drive.google.com/file/d/1bhpxE-- wcrus0xbhYW700FTPxcoPdO9I/view?usp=sharing ▪ 上級者:例題2、例題3を解け
PyTorchとは https://pytorch.org/ - - 29 ▪ 主として深層学習に用いられるPython向け機械学習フレームワーク ▪ 他にTensorFlow, JAX等がある
▪ 2019年以降TensorFlowより優勢 [State of AI Report 2020: https://www.stateof.ai/2020]
ChatGPT補助付きPyTorchチュートリアル - - 30 課題:以下のページの「テンソル」「データセットとデータローダー」 の日本語解説を実行せよ。その際にChatGPTに説明させよ。 ▪ https://yutaroogawa.github.io/pytorch_tutorials_jp/ ▪ 上記はPyTorch公式チュートリアルが日本語訳されたものである
▪ 時間が余った場合は他のページも実行せよ
付録: ChatGPT使用方法 - - 31
OpenAIへのアカウント登録 - - 32 ▪ 以下のサイトにアクセス ▪ https://chat.openai.com/auth/login ▪ 「登録する」をクリック(アカウント登録済みの場合はログイン)
メールアドレス登録 ▪ メールアドレスを入力し、I‘m not a robot にチェック - - 33
セキュリティ登録 - - 34 ▪ 与えられた文字 (↓の場合はcross walks) に当てはまる画像を 全てクリック後、VERIFYをクリック
▪ わかりづらい場合は を押して更新 ▪ Continueをクリック ① ②
メールアドレス認証 - - 35 ▪ Password (8文字以上) を設定し、Continueをクリック ▪ Verify
your email と表示され、設定したメールアドレスにメールが届く ▪ 届いたメール内の Verify email address をクリック ① ②
電話番号認証 - - 36 ▪ Tell us about you と表示されるので、名前を入力してContinue
▪ Verify your phone number に電話番号を入力してContinue ① ②
認証コードを入力 - - 37 ▪ SMSで認証コードが送信されるので、確認する ▪ ブラウザに戻り、届いたコードを Enter code
に入力 ① ②
ログイン完了 - - 38 ▪ ログイン画面が表示されるので、右下のNext → Next → Doneをクリック
利用開始 - - 39 ▪ 下のフォームに文字を入力し、右の三角 を押すとChatGPTと会話が可能 ここに文を入力
次回以降はメールアドレスとパスワードでログイン可能 - - 40 ▪ 次回以降は、サイトにアクセス後、Log in をクリック ▪ メールアドレスを入力後、I’m
not a robotをクリックし、Continue ▪ Passwordを入力し、Continueをクリックして、ログイン ① ② ③