昨今のAIの活躍
現在ではいろんなところでAIが使われている。
- chatgpt
- github copilot
- レコメンデーションシステム
これらの仕組みに興味を持ったため、AIについて学習してみることにした。
AIに関する職業の色々と学習方法
5年前の動画ですが、AIエンジニアがどういったものか発信している動画を見つけました。
気になる方はチェックしてみてください。
- KENTA / 雑食系エンジニアTV
以下は上記動画の要約です。
- データサイエンティスト
- コンサル的要素が強く、技術専門というよりPM的な業務がメインになってくる
- 上流だとモデル設計・顧客折衝を行い、下流だと設計通りにモデル構築を行うこともある
- データサイエンティストの業務の一部として、AIエンジニアがあるイメージ
- キャリア的には過去の経験が溜まっていないと使い物にならないので、独り立ちするまでに時間がかかる
- AIエンジニア
- 機械学習モデルを構築し、パラメーター調整などを行う
- データ整理も大事な仕事(90%くらいが前処理って言われている)
- 自然言語処理:名寄せ(カタカナ、漢字を使った同じ単語の集約)
- 点在しているデータの集約(SQLを使ったり)
- モデル構築以前として、前処理の知見がかなり必要
- モデル使用の知見
- PyTorchで効率よくコードを実装できる
- 論文を読んで実装する(先端な会社は、業務時間の10~20%はこの作業を行うらしい)
- 大体2〜3年で前処理・モデル使用の知見を蓄えることを目指す
おすすめの学習法
- oreillyを読んでみる
- kaggleでコードを読み、わからないところを都度調べる(これが一番おすすめ)
- 英語に抵抗がない初学者は、fast.aiがおすすめ
Deep Learning for Coders with fast and PyTorchについて
fast.aiで取り扱っている学習用のチャプターを書籍にまとめたのが、
Deep Learning for Coders with fast and PyTorchとなる。
そこでAI学習のとっかかりとして、上記書籍をやってみることにした。
※ 上記の書籍を行うには、環境構築が必要です。
自分は下記の通り行いました。
- python 実行環境
- Paperspaceで月$10のサブスクリプション
書籍の推奨実行環境(本より抜粋)
【原文】How do I get started?
(中略)
The entirety of every chapter of the book is available as an interactive Jupyter Notebook.
(中略)
We’ll mainly use Kaggle Notebooks and Paperspace Gradient...
(中略)
We strongly suggest not using your own computer for training models in this course, unless you’re very experienced with Linux system adminstration and handling GPU drivers, CUDA, and so forth.
Chapter 1 メモ
機械学習にはラベル付が非常に大事である
入力データからラベルを取得する方法として、主に二点が使用されている
- ディレクトリ名
- 最も一般的なのは、親ディレクトリの名前をラベルとして使用する方法
- ファイル名
画像を機械学習にかける際、処理前のインプット画像を224pxの正方形にリサイズして使用する
- 224という値は伝統的に決まっているらしい
- サイズを大きくすれば精度は上がるが、必要なGPUと金額が増加する
ClassificationとRegressionの違い
-
Classificationはクラスもしくはカテゴリを予測する際に使用される
- 例)dog, catなどのラベルからインプット画像が何に該当するのか予測する
-
Regressionは数値の予測に使用される
- 気温や緯度軽度など
-
機械学習に使用するデータは、学習用データ(train)と検証用データ(validate)に分けられる
- 前者は、training set と呼ばれる
- 後者は、validation set と呼ばれる
- データセットを与えた時、指定した割合に応じて自動で学習データと検証データに分けてくれる機能もある
- fast.aiライブラリのvalid_pctがこれにあたる
-
学習モデルが、データの傾向よりもデータそのものを記録し始めたとき、大抵予測精度が悪くなる
- これをoverfittingという
-
機械学習のアーキテクチャにはさまざまな種類があるが、resnetというのが大体の場合うまくいく
- 早くて正確
- レイヤは34くらいがちょうどいいらしい
- 多いと学習に時間がかかるし、overfittingに陥りやすい
-
modelには事前学習済みのものと、そうでないものがある
- 事前学習済みのモデルは、ネットからダウンロードして使用できる場合がある
- 使用できるなら、事前学習済みを使用した方がいい
- 構築の手間がない
- コストがかからない
- ほとんどの人はどのモデルを使うかよりも、何ができるかに興味があるため
-
本来トレーニングされた用途とは別のタスクに事前学習モデルを使用することは、transfer learningという
-
機械学習と深層学習は以下の違いがある
- 機械学習:データを学習するプログラムを定義することを指す
- 深層学習:機械学習の一種であり、ニューラルネットワークを多数の層によって構築するプログラムを指す
(以上第一章終了)