ある日、上司に機械学習をやってくれと頼まれたら

東京でエンジニアとして働き始めて4月で9ヶ月。
あっという間だった。最初は社内システムを作ったり、イベントキャンペーンのバックエンドを担当、APIを作成したり、ガンガン切られるチケットを消化していった。
正直、自分が担当するシステムに不具合が出る事もあるし、迷惑をかけている部分も多いがなんとかやっているという感じだ。

単純にプログラムを組むのはとても楽しいし、地元じゃ得られない充実感もある。
ふと振り返ってみると、少しは遠い所に来たなと思うけどまだまだ。

周りの良い人に恵まれ(?)人間関係のストレスは全く無い。

けれど、不満も無い訳では無い。
ブラウザとエディタを立ち上げただけでメモリの使用量が100%近くになる事、そんな状況で自分のPCを持ち込めない事。
自分の好きな環境で開発出来ないのが、ストレスになっている。

それと給料。
自分はまだ「未経験のエンジニア」ぐらいの給料しか貰っていない。
具体的には深夜のコンビニのアルバイトぐらい。
ここばかりは自分の技術に自身を持って、単純に自分がどれぐらいの市場価値があるのか
エンジニアの技術力と給料は比例すると思っている。その為にこのチラシの裏程度のアウトプットから始めて行く。
早い所、自分でアプリケーション作るぞ。


そして今は題名の通り機械学習のプロジェクトにアサインされて、現在絶賛機械学習を行なっている。
前任の担当していた人が突然辞めて、引き継ぎもままならなかったので非常に苦労しました。(今も苦労しています。)
昨日までPHP触っていた人間が急にTensorFlowやscikit-learnライブラリを触らざるを得なくなった気持ちわかります?!?

ざっくり説明すると、
機械学習というのは、名前の通りプログラムに対して学習をさせます。
自分が今やっているのは教師あり学習と言って流れは、
1. データを用意 データに対してラベル付けを行う(答えを教える)
2.ラベル付けしたデータをモデルに対して学習させる。
3.その学習させたモデルに対して精度を検証、チューニングする。精度が悪ければ1か2に戻る、良ければ4へ
4.実際に業務システムに組み込む

上記のような流れで、精度を保証する所までは行けたものの、
それを実際に業務システムに組み込むとなると色々と考慮しない事もあり(主にスピードとか)、非常に苦労しています。

右も左も分からない状態だったものの、なんとかモデル作る所までは行けて、
チューニングやら今やっているスピードを改善するにあたって使用するライブラリを再検討するのもやっぱり知識が必要だなーとひしひし感じるので、おすすめされた本を片っ端から買いました。
その中でも特に下記がおすすめなので、興味ある方読んでみてください。

www.amazon.co.jp


全部目を通していないけど、数学の知識が無くても読みやすいです。

www.amazon.co.jp

実際に手を動かしながら学べます。
やっぱりプログラムは手を動かすのが一番わかりますね。


幸い、前任の担当者が残してくれたソースコードと、いつでもチャットで聞けるという体制があるからいいものの、
社内で自分一人、機械学習を行うのはなんとも心細さもある。

他の会社のAIチームはCSバックグラウンドもある人の専門チームがあって、大きい会社だと10人以上居て、
AWSやらクラウド環境もバッチリ、札束で殴ってるというか会社としてそれぐらい真剣にリソースもお金も投入しないとダメなんだろうなーと思う。

毎日、プレッシャーですんごいストレスだけど、機械学習をやり始めてプログラミング学び始めた時と同じ「何が分からないのか分からない」という状況があって懐かしくなったのと同時に、未知の問題に対する問題解決があの頃よりは断然早くなっていると実感します。
給料やらPCのスペックやら、逃げ出したい理由はいくつでもあるけど、今のプロジェクトが楽しいのでもう一踏ん張りします。
以上、チラシの裏でした。