機械学習をお仕事にするときの理想と現実 - 加賀百万石ですが何か?

機械学習をお仕事にするときの理想と現実

以前、こんな感じやらこんな感じで無職期間を謳歌していた訳なんですが、そろそろ働かないとお金が厳しくなるなーと思いまして、数ヶ月ぶりに働き始めました。

今のお仕事は結局前職からそれほど変わらず、よく分からないなりにAIとか機械学習とかをやっているような感じなのですが、そろそろちょっと愚痴が溜まってきたので吐き出したいと思います。

前職までは、実務として機械学習をやってきた人、もしくは実務としてはやっていなくても機械学習の現場のこと自体は知っている人と一緒に仕事をすることがほとんどでした。

ただ、現職になってちょっと今までとは変わったタイプの人と仕事を一緒にするようになって、結構ストレスなことがあるなーと思ったので、それについて書きたいと思います。

前提としては、IT業界自体の経験はあるけど機械学習は自分で勉強してきただけで「さぁ!これから実務で頑張ろう!」という感じの人と一緒に働くようなときのことだと思って頂ければそれ程間違ってはいないかと思います。

こんなはずじゃなかったのに…

機械学習界隈でよく言われることとして「前処理が8割を占める」ということがあると思います。少なくともこの記事にたどり着いた方はほぼご存知だろうなと思います。

念のため知らない人のために簡単に説明しておくと、データ分析や機械学習、AIの仕事をしようとしたときに当然データが必要になる訳ですが、実際の現場にはすぐに分析できるような綺麗な状態のデータなんてものはほぼ存在しません。

そのため、まずは分析できるようにデータを整形したり、ノイズとなるデータを取り除いたりといった処理が必要になります。データが関わる仕事ではこの作業が全体の8割程度の時間を占めるという意味になります。

ただ、実際の業務では「前処理に行くまでが8割」というケースが多々あります。例えば、そもそもデータがどこにあるのかを調べて、そのデータをどうやって取ってきたらいいかといったようなことが必要になります。

しかもそういった場合は、社内システムの管理をしている部門に問い合わせてデータを取っていいか、どうやって取るか、取って何に使うのかといったようなことを説明したりしないといけないことがかなり多い訳です。

データ分析や機械学習の実務経験がある人はこの辺の(面倒くさい)事情は重々に分かっていることなのですが、独学だったりスクールで勉強されてきたような人はこの辺の感覚がまだ無いようです。

感覚がないだけならまだマシなのですが、システム管理部門との折衝や説明用のドキュメント作成などやっているときに、

「こんなつまらない仕事をやるためにこの会社に入った訳じゃないのに…」

とか

「深層学習のコード書きたい…」

なんて愚痴をダラダラと垂れ流し始める訳なんですよ。

こっちとしてはそんなのは常識で、むしろ機械学習案件の目的である「機械学習でやる意義」や「機械学習を用いた場合の費用対効果」といったものを認識してもらうための重要な仕事なのに、そこをつまらないやら何やらとグダグダ言われると、

「そんな嫌なら仕事としてやるんじゃなくて、Kaggleでもやってろよ」

という文句のひとつも言いたくなります。

※念のため断っておきますが、Kaggleをバカにしているのではなくて、目的や(主な)データがあらかじめ綺麗に設定されている条件で楽しんだらいいんじゃないですか?と言いたいだけです。

手段が目的化していません?

こういうタイプの人はだいたいがKerasやらTensorFlowやらで機械学習・深層学習のコードを書いて学習をグルグル回していると満足するんですよ。

でもそれって案件の中では極々狭い範囲の技術のひとつでしかなくて、全体から見るとかなりウェイトとしては小さいんですよ。

もちろん技術的にはコアになることもあるので、そういう場合は需要な作業にはなるのですが、それでも結局のところは、「どの程度の精度だったら効果があるか」とか「どう評価するか」、「どう運用し続けていくか」ということを考えることも同じくらい重要になる訳です。

ただ、そういうところまで考えずにとにかく「俺はスクールでバリバリ学んだんだから、機械学習をガンガンやらせろ!」みたいに来るんですよね。

そうなるとこっちとしても「お前はそもそも何のためにその技術を使おうとしてるんだ?」というお小言のひとつやふたつくらいは出てきますよね。

そういう我儘な人に限って、今の仕事がつまらないからっていうのですぐに辞めちゃう訳なんですよね。

まぁ嫌なら辞めればいいとは思うんですけど、Kaggleのように楽しい部分だけを実務で出来るところなんてそうそうないし、すでに目的とデータが綺麗に設定されているようなところはすでにデータサイエンティストや機械学習エンジニアがいる可能性がかなり高くて、勉強はしたとはいえ実務未経験な人が簡単に入社出来るようなことなんてそうそうないんじゃないですかね。

知識も大事だけど問題を解決するのが大事なんですよ

一応ちゃんと勉強してきただけあって、そういう人って知識だけは結構あるんですよね。ぶっちゃけ知識に関しては僕よりも多いと思います。それはそれでちゃんと勉強してきたんだろうなと尊敬はしています。

ただ、実際の業務では知識をどの程度持っているかどうかなんてどうでもよくて、その知識を使って問題を解決できるかが大事なんですよ。当たり前すぎることですけども。

でも”お勉強”をしてきた人ってその辺がよく分かっていないんですよね。議論してても専門用語がポンポン出てきたりするのですが「それで解決できなくね?」とか「それってこういう問題がありそうだけど、その辺はどうしましょう」って聞くと「あ、そうですね。すみません」ってなることがめっちゃ多いんですよね。

知識も大事だけど、そもそも何を解決したくて、その知識を使うとどう解決できるのかを考えてくれって感じですよ。要するに表面的に知識を知っているだけで「なぜ?」というところの原理原則を全然理解していないから実務にその知識をうまく適用できないんですよね。

そんな感じでロクに物事をちゃんと考えていないのを露呈しまくっているのに「自分はバリバリ勉強してきたんだから面白い仕事回せ」って言われましてもねぇ…。

手段が目的化してしまっていて、物事を深く考えようとしない人に安心して任せられる仕事なんてありませんよって話ですよ。

まとめ

わざわざ仕事を辞めて機械学習の勉強をしてきたくらいなので、よっぽど機械学習に興味があってちゃんと勉強はしてきたんだろうなとは思うのですが、やっぱりお勉強はお勉強でしかないんですよね。

受験勉強でも「勉強はできるのに仕事は全然ダメ」みたいな話はよく聞くと思いますけど、これと同じような現象が例えば巷で流行っているスクールでも発生し始めているという感じなんでしょうかね。

なんにせよ、機械学習エンジニアを採用しようと思っている会社や採用担当の人は、その辺を面接で確認しておくのは重要なんじゃないかなーと切実に思います。

お勉強として機械学習が好きなだけなのか、それともあくまでも機械学習は手段のひとつでしかないとちゃんと認識していて、ビジネス上の課題を解決することをちゃんと目的に設定できる人かどうかを見極めるのは重要だと思います。

スポンサーリンク