全エンジニアに機械学習のスキルを

IMG_9481

こんにちは、エンジニアの建三です。

イタンジでは先週MLTP(Machine Learning engineer Training Program)なるものを始めました。これは何かというと、イタンジの全エンジニアに機械学習のスキルを身に付けてもらおうという試みです。

これには主に3つの理由ががあります。

1 - イタンジのエンジニアリング力の強化

Googleは全エンジニアが機械学習をある程度知ってる状態にしたいと宣言しています。どんなエンジニアでもRailsなどでWeb開発がある程度出来るのが必須なのと同じで、どんなエンジニアでも機械学習をそれなりに知っているのが普通という時代があと数年で来ると思います。

2 - 機械学習研究者/エンジニアは中々見つからない

最近こそエンジニアのための機械学習入門的なブログ/オンラインコース/本が出てき始めましたが、まだまだWeb Developerに比べて機械学習エンジニアは圧倒的に少なく採用が大変です。

更に、機械学習を効果的に使うにはその会社のビジネスと既存のシステムを理解している必要があり、機械学習エンジニアを雇ってから会社に貢献出来るようになるまである程度時間がかかります。

既存のエンジニアは既にそれらを理解しているため、後は機械学習を学べばすぐ会社に貢献出来ると考えています。

3 - 自分を置き換えられる存在にする

強い組織というのは誰が突然抜けても問題なくやっていける組織だと思います。その為には自分にしか知らないこと・出来ないことを徹底的になくす必要があります。

自分にしか出来ないことはある意味会社での自分の存在価値のようなものなので、それを守ろうとする人がいるかもしれません。しかし知識や情報は与えて減るものではないので、必死にそれを守るメリットはありません。

プログラムの内容

僕はnumpyで機械学習アルゴリズムを一から書くことのが一番機械学習の勉強になりました。なのでこのプログラムでも実際にアルゴリズムを書くことによって学ぶことを重点に置いています。 更に、イタンジで実際に使われてる機械学習のモデルを使い、実践で機械学習を使うためのスキルやノウハウを勉強します。

まだ始まったばかりなので今後変わるとは思いますが、以下の内容を網羅する予定です。

1 Traditional Machine Learning

numpyを使ってmini scikit-learn libraryを作ります。 色んなアルゴリズムを勉強してく中で同時に機械学習の基本的なコンセプトを身に付けます。

  1. Supervised Learning
  • K nearest Neighbors
  • Naive Bayes
  1. Unsupervised Learning
  • K means clustering

2 Deep Learningを学ぶ為の基礎

numpyを使ってmini kears libraryを作ります。

  1. Linear Regression
  2. Logistic Regression
  3. Feed Forward Neural Network(Back Propagation)

3 Deep Learning

PyTorchを使います。

  1. Recurrent Neural Network
  2. Convolutional Neural Network

第一回目の様子

先週に第一回が行われ、3種類の機械学習の説明(教師あり学習教師なし学習強化学習)とK-Nearest Neighbors(k-NN)の説明をしました。

レクチャーではk-NNのアルゴリズムを手で計算しました。

IMG_9490

IMG_9491

宿題では実際にk-NNをnumpyで書きます。Python機械学習の知識は人により差はありますが、全員コンプリートしたようです。

今後の展望

第一回目のレクチャーはライブで行いましたが、2回目以降はスクリーンキャストを作って各自のペースで進めてもらう予定です。エンジニアの中でも営業を兼任してる者が何人かいるので、勤務時間内と言えども全員揃うのは難しいです。更に今後入社するエンジニアにも使ってほしいので、使い回しが出来るものの方が良いと思っています。

上記のプログラムをこなすのに大体3ヶ月くらいかかりそうですが、もしこの取り組みが上手くいったら外部にも公開する予定です。