有吉です。昨年入社したpaiza(ギノ) の営業です。
paizaはITエンジニア向けの転職サービスですが、最近は「機械学習関連の求人を募集したい」という企業が増えてきたなと感じます。もちろん、エンジニア側にも「機械学習関連の仕事がしたい・勉強がしたい」って人は多いですよね。営業をやっていてもそれは感じます。
私はエンジニア職ではないので、最初は「機械学習なんて超難しいんでしょ~自分には絶対無理」などとと思っていました。でも、営業としてお客様とお話ししていると、「やっぱpaizaの営業ならもっと知識がないとダメでは…?」と感じることが多くなってきて、9月ぐらいから少しずつ勉強をしています。
今回は、営業の私がなぜ機械学習を勉強しているのか、実際に学習した内容と方法、勉強してわかったこと・役に立ったことなどを書いていきます。
■営業なのになぜ機械学習を勉強したのか
一言で言うと、「営業先によりよい提案がしたいから」です。
エンジニアを募集している企業へ行くと、最近は本当に人工知能・機械学習・ディープラーニング・自動振り分け・ビッグデータの分析…などなどのワードをよく聞くようになりました。もちろん、そういったスキルを持ったエンジニアを採用したいという話も。
勉強を始める前はこれが結構しんどくて、まず、採用担当者の方からお聞きしたお話や技術的な用語が理解できませんでした。まあ、聞いた話を持って帰ってただ書き起こすだけでも求人票の形にはなりますから、知識がなければ完全に成り立たないわけではありません。
ただ、それだけでは「どんな要件の求人を出すべきか」「どんな応募者にアピールすべきか」といった、よりよい求人作成・ひいては採用活動における提案もできないまま終わってしまいます。そこでまず、「もっと勉強して、もっといい提案ができるようになりたいなぁ」と思いました。
加えて、私はこの仕事を通して「専門性の高い職種の人や優秀な人たちを、そのスキルを正しく評価してくれる企業と結び付けたい」と思っているのですが、最近は「これを実現するためには自分自身の知識の幅ももっと広げないといけないなー」と悶々とする場面が多かったんですよね。
そんな中、paizaラーニングで「Python×AI・機械学習入門編」が公開されたので、これを使って勉強してみることにしました。
実際に何をやったのか
paizaラーニングのPython入門編
「Python×AI・機械学習入門編」はPython入門編が理解できているぐらいの人を対象にしているそうなので、まずはPythonの基礎を学ぶためにここから始めました。私みたいなプログラミング初心者の方は、同様にPython入門編から入っていくのがいいと思います。(逆にある程度プログラミング経験がある方はいきなり機械学習入門に入ってもいいのかも)
以前paizaラーニングの「Ruby入門編」をやっていたおかげか、Pythonの使い方自体にそこまでつまずくことはありませんでした。
私が初めてプログラミングを勉強したときの話は、こちらの記事に書いています。
paiza.hatenablog.com
paizaラーニングのPython×AI・機械学習入門編
Python入門編をやってから、paizaラーニングのPython×AI・機械学習入門編をやってみました。(現在Python入門編は常に全編無料、paizaラーニングのPython×AI・機械学習入門編は11/1(木)まで全編無料なので、興味のある方はぜひ見てみてください)
こんな感じで声優の上坂すみれさん演じるスヴェータ先生のもと、動画と演習課題を通して、初心者でも手を動かしながら機械学習の基本を勉強できます。
初心者ながら、Ruby入門編→Python入門編→Python×AI・機械学習入門編というのは、少しずつレベルアップしていくのにいい流れだったかな?って気がしています。一応、教師あり学習による画像分類までは実践することができました。
ちなみにPython入門編とPython×AI・機械学習入門編を終えるまで、平日週2×2時間(+土曜日数時間)を1ヶ月半ぐらいかけてやりました。(もちろんプログラミング経験がある人なら、もっとずっと早く終わるはず…)
勉強をしていて難しいと感じたこと
初めて触れるJupyter Notebookや、Numpyなどのライブラリが出てきて、最初は少し戸惑いました。ただ、そのへんは動画講座なので、何度か繰り返し見ることで少しずつ理解を進めることができたと思います。
あと、私は見本のコードや使っている関数が何をやっていて何を意味しているのか、逐一理解しようと立ち止まってしがいがちで…。
でも、以前初めてプログラミングを勉強したときに、「コードの書き方の意味をすべて理解しようとすると止まってしまうから、ある程度"これはこういうものなんだ"と思って先に進んだほうがよろしい」「自分の手を動かしてコードを書いて結果を見て、何度か使ってみたほうが理解につながる」といったことがわかったので、今回はそれを意識して進めていきました。
先にRubyを勉強していたからか、Pythonの書き方自体はそれほど難しいとは思わずに済みました。
初めてPythonと機械学習を学んでわかったこと・役に立ったこと
複数のプログラミング言語(RubyとPython)の違いを実感できた
RubyをやってからPythonをやったので、プログラミング言語によって書き方に違いがあるのを実感できました。
Rubyは割と自由に書けるからその人の癖が出やすいけど、Pythonはインデントが重要で、誰が書いても同じコードになりやすいんですね。個人的にはPythonのほうが、すっきりしていて読みやすい&書きやすいと感じます。
ただ、エンジニアから「RubyやPythonは初心者でも書きやすいLL言語だけど、C言語やJavaなどのコンパイラ言語になると記述量がかなり多くなる」という話も聞いたので、今後はその辺の言語も勉強してみたいです。コンパイルしてみたい!
Pythonライブラリの使い方がわかった(機械学習で使われる理由もわかった)
Jupyter NotebookやNumpy、Matplotlib、scikit-learn、Pandasなどをひととおり触ることができたので、とりあえずこれらが何者なのか、どうやって使うのかがわかりました。(もちろんまだまだすべてを使いこなせるレベルではないですが)
これらの計算やグラフ描画、データの取り扱いなどに便利なライブラリが揃っていることもあって、機械学習ではPythonが人気なんですね。今までは、ただ「機械学習はとにかくPython」が一般論だと思っていました…。
入門レベルの内容を知っておくだけでも、営業先でライブラリや専門用語の話が出てきても怖くなくなったので、よかったなと思います。人間、わからないものって怖いですからね…。
教師あり学習の基本的な概念がわかった
勉強する前は、教師あり・なし学習、分類・回帰などの用語を聞いたことある程度で、実際にどんなものなのかは全然わかっていませんでした。
今は、とりあえず「漫画の画像に特定のキャラクターがいる・いない」を分類するところまではできたので、教師あり学習による画像分類の基本的な仕組みは理解できた…?と思います。
自分で画像分類をやってみた感想なんですが、「これってどれだけのデータを学習させて、結果の精度をどれだけ向上させるか、求め出したら果てしないよな…」と愕然としました。(どこかで天井に当たるのかな?)
私は学生時代の選考が生物系で、主に植物の研究をしていたのですが、そういった実験や研究にも通じる部分はあるなーと思います。ただ、ちょっと抽象的な話ですが植物って個体差としてグレーゾーンとして丸めざるを得ないケースもよくあるんです。その点、データが相手だと黒か白かでグレーはないから抜け道がないし、これを仕事にするのって本当に大変な道だろうなと思いました。
機械学習やってる人たちのすごさがわかった
上の続きにもなりますけど機械学習を仕事にするのって、Webサービスなどプロダクトの開発業務とはまた違ったマインドが必要ですよね。ほぼ研究だし、実験だし…。
私も一度は大学院に進んで研究の道を選んだものの、やっていくうちに「研究結果やデータと向き合い続けるのは自分には向いていない…」と思って中退した身なので、そういう道を選んだ人を本当に尊敬しています。
加えて、こうしたスキルを持っている人たちは絶対にもっと評価されるべきだと思うので、今後もエンジニアの皆さんを正しく評価してくれる企業と結びつけるお手伝いをしていきたい、と改めて思いました。
まとめ
というわけで、開発業務経験のない私が機械学習に入門してみた話でした。
もちろん難しいアルゴリズムまでが理解できたわけではありませんが、それでも入門的な内容を知った上で、機械学習についてイメージができるようになったのは大きいと思っています。
特に機械学習で人気のPythonライブラリを使ったり、教師あり学習による画像分析を実際にやってみたことで、具体的にどんな技術がどんなふうに使われているのかがわかってよかったです。
エンジニアの皆さんからすると「まだ入門の手前レベルじゃん」って感じかもしれませんが…それでも、何も知らなかった未経験の営業からすると、大きな一歩を踏み出せた気がします。
もちろんまだまだなのでこれからも勉強は続けたいです。数学とかも勉強し直したいな…。
paizaラーニングのPython×AI・機械学習入門編は、開発業務経験のない私でもできたので、現役エンジニアの方やプログラミング経験のある方ならさらにわかりやすく機械学習について学ぶことができると思います。CV:上坂すみれさんですし、興味のある方はのぞいてみてください。(宣伝)
「paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。
そして、paizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。
スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。