どうも、カタミチです。
前回はデータの収集でしたが、今回はそのデータの加工・分析・学習ですね。行ってみましょう〜
データを加工する
収集したデータをそのまま学習に使う…かというと、まずは「加工」という作業が待っているようです。動画で集めたデータを静止画に切り分けるようなデータの変換、複数のデータベースのテーブルに蓄積されたデータを、学習環境にダウンロードして集約することなどです。
教師あり学習の場合は、正解データを作成する作業であるアノテーションを行う必要があります。この作業、どうやら属人的なんですねー。人間が機械に教えるから仕方ないところだと思いますが、要件を正しく決め、作業者のアサインメントを調整し、レビュープロセス等の仕組みを作ることが大切です。
プライバシー等に配慮してデータを加工する
画像解析技術の向上・普及に伴って問題となってくるのがプライバシーですね。店頭カメラで来店者の画像データを取得するような場合、生データではなく、画像から特徴量を抽出して判定キーとした上で、生データは速やかに破棄するといった技術的対応が考えられます。
なお、経済産業省・総務省・IoT推進コンソーシアムは、カメラ画像を利活用する企業が配慮すべきことなどをまとめた「カメラ画像利活用ガイドブック」を公開しています。
また、倫理や社会通念の観点からも検討を行う事が重要です。もともとは生命科学の領域で使われていた、ELSI(Ethical, Legal and Social Implications)という試みがAI開発の現場でも重要視されるようになっています。
開発・学習環境を準備する
続いて、開発の話ですね。このG検定の教本の中で、唯一実装方法に踏み込んだ貴重な節です。
AIのモデルを開発する際に用いられるプログラミング言語として、C、C++、Java、R、Matlabなど様々ある…としながらも、一番多く使われているものとしてPythonが挙げられていました。やはりPythonを選んでおけば間違いなさそうですね。
注意点として挙げられていたのが、複数人で開発したり、実装済みのコードを利用したりする場合、Python自体とそれらのライブラリのバージョンを合わせる必要がある点です。まぁこれは、AIモデル開発特有の話というより、プログラム開発を行う場合に共通して言えることですね。
プロジェクトごとに環境を切り替えられるツールとして、pyenvやvirtualenv、pipenvなどがあるよー、とのことです。またDockerのような仮想環境を利用することで、OSレベルから環境の一貫性を保つこともできます。このあたり、プロジェクトを色々とやっていくのであれば押さえておきたいところですね。
また、コーディングには、①テキストエディタを使う方式、②IDE(統合開発環境)を使う方式、③ブラウザ上でコードを編集・実行し結果を管理する方式に分けられれます。以前「データサイエンティスト入門」という書籍でも似た話がありましたね。
テキストエディタとしては、VimやEmacsが広く使われているようです。玄人が好みそうな方式…というイメージですね。IDEは、プログラムの実行を特定の行で止めて変数の中身を確認するデバッグ機能のような開発を容易にする機能が搭載されています。ブラウザベースのものとしては、Jupyter Notebookが紹介されていました。Pythonでの実装動画見てても使われてたりするので、ちょっと気になってます。
既存のオープンソースのライブラリを利用することで開発効率を上げるというのは常套手段ですが、よく使われるライブラリが列挙されていたので、示しておきます。
…どん!
Numpy:数値計算を効率的に行うためのモジュール。
Scipy:科学技術計算に利用できる多様なツールボックス。
Pandas:データ解析を支援する機能を提供する。
Scikit-learn:SVN、ランダムフォレスト、k近傍法などを含む様々な分類、回帰、クラスタリングアルゴリズムを備える。
LightGBM:決定木アルゴリズムに基づいた勾配ブースティングの機械学習フレームワーク
XGBoost:LightGBMと並ぶ、決定木アルゴリズムに基づいた勾配ブースティングの機械学習フレームワーク。
TensorBoard:モデルや学習の履歴の可視化、途中過程で生成されるメディアの表示などを行える。
MLFlow:機械学習ライフサイクル(実験・再現・デプロイ)を支援するためのツール群
Optuna:機械学習のハイパーパラメータの自動チューニングを行うライブラリ。
Horovod:分散環境で学習を行えるようにすることで高速化させるためのライブラリ。
CUDA:GPU上での汎用的なプログラムを開発するためのライブラリ。
TensorRT:推論時においてNVIDIA GPUのパフォーマンスを引き出すための高速化ライブラリ。
transformers:自然言語処理に特化したライブラリ。
mmdetection:最新の物体検知手法が実装されたライブラリ。
前半の方のやつは何度か目にしたことがありますが、後半の方のやつはあまり見たことがないですねー。必要に応じて使いこなしていくことになるんですかねー。いずれにしろ、参考にはしたいです。
ということで
今日は、データ加工から開発・学習環境の準備までのところでしたね。G検定のテキストでPythonのライブラリにまで踏み込んでくるのは意外でしたが、取っ掛かりとしてもありがたい情報でしたので、開発・実装の訓練の際は参考にしたいと思います。
ではまた。
勉強に使ってる書籍はこちら↓
深層学習教科書 ディープラーニング G検定(ジェネラリスト)公式テキスト 第2版