saino.me (kaishuu0123)

都内でひっそりと生きる IT エンジニアの個人ブログです

機械学習について軽く学んだので雑に書く

機械学習に触れる機会があったのでメモ。雑に書いているから読みにくいのは仕方ない

データの整理や賢いしきい値設定に関してはなんとなく想像ができていて、

画像の生成ってピンとこなかったけど、行列で生成みたいな感じなのね。

 

学んだことメモ

  • 「強いAI」と「弱いAI」があること
  • 損失関数や活性化関数など数学的なニュアンスが強い
  • ディープラーニングにおいてはパーセプトロンが大体は最小単位
  • パーセプトロンを組み合わせた上で活性化関数などを用いて、インテリジェンスな判断を行う
  • weight という重み付けをして、賢い重み付けを模索するために GPU を必要とするレベルの並列計算が必要
    • パスワードのブルートフォース手法の限界みたいだ。総当たり攻撃か辞書攻撃みたいなものもあるが、精度はやはりイマイチ、みたいな

実用的な例

  • メールの文言を最小単位(形態素解析など使って)にして、そこをパーセプトロン + weight で活性化関数を組み合わせてスパムメールの判定
  • 画像生成に応用してキャラを自動的に生成、とか
  • 挙げたらキリがないけど、やはりメディア系が多い
  • 異常システムの検知くらいになってくると機械学習でも難しいかもしれない?
    • 人が判断するにしてもかなり難しいし

画像の生成に関しては下記の記事がわかりやすかった。生成過程の画像とかグチャグチャだけど、descliminator によって正解に近づけていくのね。descliminator の提示する正解が数パターンあると、複数の画像を生成できるかもしれない

[blogcard url="https://mickey24.hatenablog.com/entry/irasutoya_deep_learning"]

一エンジニアとして機械学習を適用していくには?

現段階でかなり賢い AI は GoogleAdobe Sensei によって開発されているから、ぶっちゃけ勉強しても大規模なレベルの開発は難しい。

いわゆる「弱いAI」を自分のサービスとかに適用していくにあたっては、まずはドメインの理解というか、自分のサービスでやっていることを深く理解してから何を最適化するかを考える必要がある

例えば、就職活動を支援するサービスに適用しようとすると、ユーザがタグ付けを行わないで、ユーザが書いた自己紹介や履歴書から賢いタグ付けなどを行うことができる。

賢いタグ付けをするためには、傾向を知るために履歴書やユーザの書く自己紹介に(ある程度は)詳しくなる必要もある

と、考えると機械学習のロジックを実装する手間と、機械学習を使わないで手でベタにロジックを書くかは時間とのバランスも大切で。

 

Slideshare とかのタグ付けも実際に応用されているところだとは思うけど、コンテンツが大量に生成されるであろう環境で使うのがいいんだろうなぁ。商品の推奨とかあるけど、ありきたりっちゃありきたりだし。

汎用性を高めると、Google とか Adobe とかがすでにやっているサービスとあまり遜色なくなってしまうし、あまりにも限定的な用途特化で作り込むと機械学習の旨味というのは減る気がしている。

(限定的にすると自前でコードを書いた方が安い可能性がある)

 

うーん、この適用するバランス感覚を身につけるってことが機械学習エンジニアとしての勘所なのかな。