BizDeep

個人の見解です

DeepLearning/機械学習を始めると必ずいるカス

ディープラーニング人材はやばい奴だらけ

これから「AIを仕事に導入したい!」と思う人は沢山いるでしょう。
ただ「ディープラーニング」や「AI」という言葉に関しては世間で色々な誤解がされており、正しく現状を理解できている人はとても少ないように思います。

ディープラーニングという言葉はAlexNetがでた2012年頃に流行り出しました。
実際に企業が仕事としてディープラーニングに手を出し始めたのはAWSがGPUインスタンスをリリースした頃からだと思うので2014年ぐらいからでしょうか。
まだ流行り出して5年も経っていない技術であるため、最新の研究レベルでもディープラーニングの全容は明らかになっていなかったり(参照: ディープラーニングの解釈に関するサーベイ論文) 、正しくディープラーニングを理解するための教科書や参考書などもまだ充実していません。

ただ、試すこと自体は簡単で、簡単な学習と適用であれば非エンジニアの人でも1日あれば余裕で出来てしまいます。
例えば、Sonyが出したNeural Network Consoleを使えば、プログラミングを一切することなくGUI操作のみで簡単な認識エンジンを作ることが出来ます。

ぼくは仕事で機械学習を使ったプロジェクトを担当して2年になりますが、実際に仕事をしていて、ディープラーニングに対して誤った理解や偏った解釈を持ったまま仕事をしている人が沢山いるのを見て来ました。
また、流行りの技術なので、ただ飛びついているだけのような人も沢山いるのを見て来ました。

こういう状況なので、 仕事で正しく機械学習を使い、マネジメントしていくためにはこういった人達を反面教師として利用し進めていくしかありません。
本記事では、この反面教師たちをまとめることで、これから機械学習を始めたい人や仕事で使いたい人、人材を探している人達の新しい気づきに繋げられることを願います。

(反面教師達は随時追加/詳細化していきます!)

やばいマネージャー

設計不足棚上げマン

実は機械学習を使わなくてもできる物を設計が曖昧なため、その曖昧を機械学習で吸収するしかなくなってるカス

顧客からの要求を具体化するときに、機械学習という言葉は役に立ち過ぎます。
例えば、本来はルールベースでなんとかなる処理に対して、そのルール設計がめんどくさい時は機械学習使ってクラスタリングしましょう!とか言うと成り立ったりします。
ただ、機械学習はどうしても誤認識や誤検知を生んでしまうため、機械学習を使わない方が良いものが出来たりマネージしやすいことが多いです。

機械学習やりたいだけマン

自分が流行に乗りたいため機械学習でやらなくてもできる機能に無理やり機械学習を入れるカス

設計不足棚上げマンと似てますが、こちらは機械学習を使った実績が欲しいためにあえて機械学習の利用を選択するカスを指します。
社内にノウハウを貯めるという目的では正しい面もありますが、やりたいだけマンの人は機械学習を選択したことによる追加コストや工数の増加を考えていないことが多いです。

勝手にできるマン

”できる”と"使える"の間の大きな壁を無視して機械学習使えばなんでもできます!とか高らかに謡ってるカス

機械学習(特にディープラーニング)は、対象のデータがあれば少工数で何らかの結果を出すことは出来ます。
ただ、多くの場合その結果は精度が低過ぎて使い物にならなず、エンジニアはそれを使える精度に達させるために多くの時間と労力を使います。
ただ、勝手にできるマンはその労力を無視して、とりあえず結果が出せるのでやりましょう!!といってプロジェクトを勝手に始め、精度が出ないとキレてくるカスです。

リテラシー謎マン

エンジニアのやってることは詰めまくるのに、Qiitaのやってみた記事とかよく分からない論文とかを疑いなくパワポに参照したりするカス

エンジニアが報告した内容に関しては5W1Hにのっとって「何でこの技術を選択したの?」とか「このグラフはどうやって出したの?」とか聞いてくるのに、誰が書いたか分からない個人ブログの記事や参照の少ない論文は全信頼してしまう人が多いです。

サイコパスマン

機械学習を使った実サービスの開発改善の経験がゼロのくせに玄人みたいな顔してプロジェクトとってきて失敗するカス

機械学習ってドメインが変わると難しさがめちゃくちゃ変わるのに、簡単な画像認識のサンプルで成果が出たら調子に乗って劇的に難しい動画解析案件をドヤ顔で取ってきて盛大に失敗するカスです。(本当に多いです。)
精度が出なかった時にどう向上させるかという取り組みの経験がないので、このカスは精度不足に陥った時に正しいマネジメントが出来なくなって、暴れ出して死にます。

シンギュラリティーマン

機械学習のエンジニアをマネージするために、シンギュラティーの本とか読んで分かったつもりになってるカス

技術書ではなく、ディープラーニングのことを取り上げた記事や経済本から知識を得ようとしているカスです。
思考が偏り過ぎていてエンジニアと会話が出来ない人になります。

やばいエンジニア

動作確認マン

githubの動作確認しただけで機械学習できる!と名乗ってるカス

最近はgithubが充実していて、README通りに動かすと最新の論文の技術を試すことができたりします。
ただ、結局試すだけだと中身が全然分からないのでなんの役にも立たないのですが、それでスキルを得たと勘違いしている人が非常に多いです。

Qiitaマン

論文を読んだり手を動かさずにQiitaのまとめを読んだだけで技術を知り尽くしたつもりになってるカス

論文のバズりそうな部分だけ取り出して要約してる記事を読んで論文を読み尽くしたつもりになって、Qiitaの動かしてみた記事を読んで動かしたつもりになっているカスです。

trainでtestした結果を報告マン

言語道断のカス

もはや説明不要で絶対ダメですけど初心者が一番最初にやりがちな過ちなので注意です。

データセット質無視マン

質を問わずデータセットの量だけあればなんとかなると思ってるカス

特にディープラーニングは教師となるデータセットの量が沢山いることは周知されていますが、質が精度の上限値を司ることは無視されがちです。
質の悪いデータを10万枚集めたところでなんの意味もないですが、無意味なデータ集めて王様みたいな顔してるカスが結構多いです。

ブラックボックスマン

ディープラーニングの仕組みを知らなくても良いと思っているカス

ディープラーニングの全容が明らかになっていないことは序章で記載しましたが、だからといって全てブラックボックスでいいかというと違います。
例えば、ConvolutionやPooling系の処理の意味を知らないと正しいベースネットが選べなかったり改善が出来ませんし、学習率や最適化手法を知らないと過学習モデルが出来て終わります。

エラー分析できないマン

データセットを闇雲に増やす以外に性能を向上させる手段を持たないカス

ディープラーニングしかできないマン

簡単な信号処理で解ける問題をわざわざRNNとか使って解こうとして失敗するカス

サンプルコードマン

だれかが作ったGithubのサンプルコードを少し改変するのが限界のカス

ハイパーパラメータ固定マン

最適化手法とか学習率とかの意味を知らず、バイアス効きまくりの過学習モデルを作って今のデータだとこれが限界ですとか報告するカス

長期運用無視マン

よく分からない大学生がcaffeを魔改造してるのをさらに魔改造してサービスに入れ込もうとするカス

フレームワーク依存マン

caffeとかtensorflowとかchainerとか特定のフレームワークしか使おうとしないカス