概要
近年、AIエンジニアの需要が非常に高まっています。そんな時代背景の中、AIエンジニアになるためにPythonを学び始める方は多いと思います。
そして、Pythonを学んだは良いが以下のような悩みがある、という人もいるのではないかと思います。
頑張って勉強してPythonの基本文法は抑えたし、簡単なツールやアプリケーションは作れるようになった!
でもAIエンジニアになるためには次はどうしたらいいんだろう…?
一生懸命勉強したけど、学んだことってAI開発の現場で通用するのかな…?
本記事ではそんな方向けに、次に学ぶべきこと、現場で使われる技術の学ぶ方法をまとめて解説します。
具体的には以下のような視点で、情報をまとめていきます。
機械学習を手を動かしながら学ぶ
既に様々なサイトで紹介されているように、AIエンジニアに求められるものとして、機械学習に関する知識は必須です。
AI開発を行っていく際、機械学習を避けては通れません。
https://www.bigdata-navi.com/aidrops/484/
機械学習を学ぶのには色々な選択肢がありますが、本記事では ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装 を読むことをオススメします。
この書籍は Python, Numpy の入門から始まり、ニューラルネットワーク、ディープラーニングについてコードベースで丁寧に解説されています。
AIやディープラーニングに関する書籍は山のようにありますが、その原理・仕組みについてはふわっとした説明でごまかされている書籍が多く見られます。
本書籍では誤魔化した説明は一切なく、きちんと原理・仕組みを学びながらコードが書けるようになるので、入門書としてはとても良い本であると言えるでしょう。
深層学習のフレームワーク Pytorch について手を動かしながら学ぶ
機械学習について一通り学び、Numpyで実装できるぐらいまでたどり着いたら、次は深層学習用のフレームワークについて学んでいきます。
Pytorch を選択する理由
深層学習用のフレームワークは Tensorflow( + Keras), Chainer, Pytorch など様々ですが、本記事では Pytorch について学ぶことを考えます。
その理由としては以下の2点が挙げられます。
- シェアが高いのは Tensorflow か Pytorch である
- Pytorch の方が初学者に優しい
正直なところを言ってしまえば、深層学習フレームワークは結構それぞれ似ている部分が多くあるのでいずれかのフレームワークについてある程度習熟すれば他のフレームワークもある程度扱えるようになっていきます。
したがってフレームワークをどれにするか、というのはメンターや周囲の人間が何を使っているか、というところを重視するのが良いと思います。
Pytorch について手を動かしながら学ぶのに利用する資料・書籍
まず Pytorch について学ぶには、公式で提供されているチュートリアルを実施するのが良いでしょう。
Pytorch 公式チュートリアル
https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html
ゼロから作るDeep Learning について学習ができていれば、さほど苦労せず内容を飲み込めるかと思います。
公式チュートリアルが完了したら次はPytorchを使って発展的な機械学習モデルを作ることについて学ぶのが良いと思います。
発展的な内容については以下の つくりながら学ぶ! PyTorchによる発展ディープラーニング が分かりやすく、良くまとまっています。
この書籍では、転移学習を始めとして、物体検出、セグメンテーション、姿勢推定、画像生成、異常検知、自然言語処理、etc… と言った、AI開発の現場で良く利用されるような手法についてがコード、解説付きでまとめられています。
この本で紹介されている手法について、コードで理解できるようになれば、AIエンジニアとして活躍できる見込みが高まります。
画像処理について手を動かしながら学ぶ
AI開発の現場では画像を扱うことが非常に多くあります。近年ではテキストや表データなども画像として扱おう、といった手法も出てくることもあります。
したがって、画像処理に関する知識はAIエンジニアのスキルとして必須と言っても過言ではありません。
画像処理について学ぶには以下の 画像処理100本ノック が非常に良いです。
@curry_frog 氏によって作成されており、AI実装検定のシラバスに採用されるなど、非常に質の高い資料となっています。
この資料は現場でよく使われる基本的な画像処理の手法について、Numpyで実装しよう!という内容になっています。
画像処理について、手を動かしながらコードで理解することができるので、これを全て終えるころには一人前の画像処理の技術が身に付いている、と言っても過言ではありません。
また、平行して書籍での学習を進めることもオススメします。書籍は以下の ディジタル画像処理 が良いです。
基本的な画像処理の手法について、ほぼ網羅されており辞書としても使えるぐらいの書籍です。
数式ベースでの解説がされているため、先に紹介した画像処理100本ノックと平行して読み進めるのが良いでしょう。
質の高いPythonコードを書けるようにする
ここまで紹介してきた内容を踏まえると、基本的にPythonをゴリゴリ書いていく、ということはなんとなく分かると思います。
書くコードが汚く、再利用もできず、他人に見せられないような複雑なものになってしまっていると、エンジニアとしての価値は非常に低いものとして見られてしまう場合があります。
機械学習、画像処理について学びながら、プログラミングやPythonについての理解もAIエンジニアにとっては大事なスキルとなります。
綺麗なプログラミングを行うために読むべき書籍としてリーダブルコードがあります。
この書籍では、読みやすく綺麗なコードとはどうあるべきか、ということが分かりやすく解説されています。
この内容を一通りマスターすれば、自信を持ってチームメンバーや明日の自分に見せられるコードが書けるようになるでしょう。
リーダブルコードはPythonに限らず全てのプログラミング言語で共通して言える知識ですが、Pythonに限っては更にPythonicという考え方が大事になります。
Python はシンプルに多くのことができるように設計されている言語であり、そのPythonの実力を最大限に活かすための考え方を Pythonic と言います。
Pythonic な考え方、書き方を学ぶには以下の Effective Python という書籍が良いです。
この本では最新バージョンのPythonで使えるPythonicなテクニックが、具体的な例を元にコードで解説がされています。
この本のテクニックを自分が書くコードに反映させていけば、短く、早い、綺麗なコードが書けるようになるでしょう。
まとめ
一生懸命勉強して、イケイケなAIエンジニアを目指そう!
コメント