お仕事紹介

この夏にやってた仕事が、その後の皆様の努力もあって無事リリースされたようで、手元のアプリにも降ってきたし、ちょこちょこ表でも話が出ているのでその紹介を。

https://speakerdeck.com/diracdiego/20171029-kantocv-kikuta

ここで紹介されているカテゴリ分類、というのが自分がやってた物です。 写真を、料理の名前ごとにフォルダ分けしたかのようなビューを作る、という機能で、そのうちモデルの所だけを担当していました。

UIやサービスとしてはいろいろ難しさもあるにせよ、モデルとしては画像からどの料理か当てる、なんていう、いかにも普通の画像認識問題となっている。

マルチラベルにするかシングルラベルにするか、とか、細かい所で選択肢はいろあろあるにせよ、データセットもラベル付けされてるのが既にあるし、そう難しい事は無いだろう、と思っていた(それは完全に気のせいだった)。

二年前の冬には不動産のリコメンドの仕事をしていたので、実サービスにする難しさはある程度は理解しているつもりだったが、まだまだ甘く見ていた、という事になる。

当初は一ヶ月くらいで片付けて、もう一つくらいなんかやるつもりだったのだが、結局ほとんどこれだけで三ヶ月が終わってしまった。

これが技術的にどう難しいのかとかそれをどう解決したのか、みたいな話はそのうち本家から発表があるのを期待してここでは触れないでおく。ただ、少し一般的な話はこのブログでしておこう。

ディープラーニングを実務に応用する難しさ

結局の所、既存のディープラーニングの様々な研究はいろいろな事をやった時に「上手く行った所」を切り取って発表している。

だからこの発表されている所の下には、大量の「うまく行かなかった事」が隠れている。 このうまく行かなかった事をやろうとすると、いろいろと難しい。

で、実際のサービスに応用する時には、見えてるうまく行く所だけじゃなく、見えてないうまく行かなかった所もある程度は肌感覚として分かってないと、その難しさを大きく見誤る事になる。

この誤った認識はこれまでのソフトウェア開発のやり方を危機にさらすレベルで大きな影響を与える。

キックオフの段階で「この位なら出来る」という判断を、あらかじめ示す事が出来ない。 そんなプロジェクトをどう始めたら良いのだろうか?

自分の考えている解決策は、主に2つある。

  1. 分析屋が、うまく行くパターンとうまく行かないパターンをある程度自分の中で蓄積して、感覚を磨く
  2. プロジェクトの根幹の部分を、これまで以上に探索的に、より研究っぽく進める

1はまぁいいだろう。こんな分析屋が居れば勝ったも同然であるし、自分もそうなりたい物だと思って実務の経験を積んでいる。だがちょっと先は長い。

そこで2だ。より研究っぽく進める。 ウォーターフォールからアジャイルへと変化した時も、プロジェクトの進め方というのはより探索的になったが、もう一段界先に進めて「何を作るかをあらかじめ決めない」レベルで自由に進めるのが良いんじゃないか。

出来そうな事とか出来そうなデータがある時に、ぼんやりとその辺をつついて何かやってみる。
もちろんそれはうまく行かないが、その過程で理解が深まって、別の事を思いついたりする。
それも当然うまく行かないが、こんな風にいろいろやってくと、たまに突然変異的に「お、これイケるんじゃね?」というのが思いついて、これをサービスにしていく。

スクラムとかスプリントとか全然使い物にならなくて、管理らしい管理は出来ないが、まぁ仕方ないんじゃないか。

仕事ぶりは主任にあたる人がメンバーとのディスカッションで判断するのが良いんじゃないか。

なお、これは実際にこう進めてた、という話じゃなくて、「僕の考えたさいきょうのデータ分析実務応用法」という話。

どちらにせよ、実務に応用する時の、この「見えてない大量のうまく行かない物」を知っていないと、実際のサービスを作る難しさを、大きく見誤る事になる事は確かだと思う。

それでも、この予測が難しく何が出来るか分からないという物をやる意義は大きいとも思う。 うまくはまった時の便利さはやはり既存のプログラミングで出来る事よりもずっと上だし、うまくはまる物も膨大にある。たぶんほとんどのアプリやサービスに、必ずはまる使い方があると言って良いんじゃないか。

形にする事の大切さ

話を自分がやってた事に戻そう。

なんだかんだと自分がやってた事がアプリとして降ってきたり、それについて表で発表してくれたりするのは嬉しい。
「これやってました!」って回りの人にも自慢出来るし、何より実際に使う所まで持っていけた、というのは大きな自信ともなる。

これが「自分が去ったあとなんとなく自然消滅してしまいました」だと、今回の仕事で自分が何を成したのかがぼやけてしまう。経験にはなったが実績にはならない、というか。
特に自分のようにあまり働かない場合、一つの仕事が一年とか二年の成果となってしまう事も多い。一つの仕事がいまいちだと、今年一年とかここ二年の仕事がイマイチだった、となってしまう事すらある。

そういう訳でちゃんと形にしてくれる仲間と仕事をする、って大切だよな。 今回は自分が抜けた段階ではまだアプリ側にやる事が結構残ってたのだが、ちゃんと形にしていてありがたい。