code.ニュースでは、機械学習は次の大きなものだと言っています。ビッグデータとともに行われています。?このトークではiOSとSwiftの観点から迅速で具体的で現実的な機械学習の調査し、主なテクニック、ツール、学習素材をまとめます。TensorFlowがAVFoundationのようなものであること、モデルトレーニングがUIデザインのようなものであること、そして高速なネイティブコードを使ってどのようにiOSで十分に大きいデータを収集し、最新のモデルのエクササイズができるということをお伝えします。speakerdeck.comSwift開発者が知りたかったけど聞きにくい機械学習のすべて今日は機械学習の話を、Swiftの開発者としてお話します。カスタマイズしたメガネを作っています。顔写真のモデルから拡張現実を使っていろいろなメガネを付けた時の様子をみられるようにしています。カスタマイズされたメガネを作れます。コンピュータービジョンにはマシンラーニングが欠かせません。機械学習は、変化が激しいので最新の情報はわかりません。定義からしていきます。プログラムは考えて関数を作ります。マシンラーニングは、データを使って人間の考えを加えて関数を作ります。みなさんから身長の平均値を集めてそれを返す関数を作るわけです。男女で分ければ違う平均値を出すことができ、多少モデルが良くなります。年齢や体重や靴のサイズを図って係数を使いながら積算していくそうするとより正確な数字を出せます。これらはご存知の通り線形回帰です。これはあたらしい統計ではありません。機械学習の話でこんな古い物の話をしているのでしょう。スマホなどが様々なデータを集めてきてくれます。そのデータが驚くような結果を出してくれます。ニューラルネットワークです。1950年台から考えられてきましたが、機能は進捗してきませんでした。この3つの入力値を増やし、真ん中の層を48レイヤーにしていってみましょうこれがInception-v3です。記者ざっくり注:↑Inception-v3のネットワークの概略図。Network=畳み込みニューラルネットワーク)のモデル。CNNは主に画像認識に利用される、特徴を抽出するフィルタである畳み込み層と抽出された特徴を圧縮するプーリング層を持つことを特徴とする多層のニューラルネットワーク。ニューラルネットワークとは、計算の仕組みが脳のニューロンの信号伝播の様子と似ている(と一般に説明されている)ことからそう呼ばれ、ある計算ユニットの出力が別のユニットの入力になる計算ユニットのネットワーク。機械学習はこの計算ユニットの出力しきい値やユニット間の結合度合いの調整をコンピューターに任せ(たとえば教師データを与え逆算させるような形で)最適化(学習)させる。(すごくざっくり)※ちゃんと勉強したい人へ。この本の79ページから「畳み込みニューラルネット」の章です。見るAppleがサンプルコードを出したため、iOSデバイスの上でもこれを使うことができます。素晴らしいところは、様々なレイヤー(層)でぼやっとしているものを認識していくわけです。様々なものを分類をして行く。その結果が驚くような結果になる。人々がこれにこれほどワクワクしているのか。コンピューターのなかでいろいろなことをするのは難しい、というのが2014年のマンガ。今ではちょっとコンピューターへの教え方を変えれば簡単にできるようになった。マシンラーニングは分析や、スピーチの認識が飛躍的に伸びるところにあります。したことはモバイルアプリ開発に影響するのでしょうか?顔検知などに使われています、これは初期の機械学習です。音声で(音声を対象にして?)コーディングは非常に難しかったが、コード一つでできる世界になっていく。数学者じゃなくてもモデルを作ることはできます。機械学習はSwiftで言うと1.0です。Swiftも1.0が出た頃はメインストリームから考えると変わっていたところがあったのではないでしょうか。いまでは、Swiftに沢山の人が重要だと注目が集まっています。教育も整ってきました。特別でしたが、今はメインストリームです。同じことが機械学習で起きています。色んな人が色んな形で説明しようとするようになってきました。GoogleのTensorFlowもそうです。ビデオなどが公開されています。使い方を説明する人がたくさんいます。機械学習をSwift環境で使えるでしょうか機械学習には学習と使うという段階が有ります。そこでPythonを使うのは科学環境でよく使われているからです。展開する段階でSwiftを使うことができます。TensorFlowの学習データを(端末内に持って)利用したり、SDKを使ってネットワーク経由で利用することもできます。Appleが提供する物もあります。AVFoundationを使うようなものです。これがAPIを活用するというレベルでの視点になります。機械学習を作ることはUIを作ることに似ています。うまく行ったのか、なぜうまく行かなかったのか、はっきりとはわかりません。出来上がったニューラルネットワークは多層の入り組んだネットワークで特定の計算結果がどのユニットやユニット間の結合に起因しているのかを簡単に読み解いたり、手動で調整して意図したとおりの挙動に変更出来るようなものではなくなってしまう、的なことを言っている。)アウトプットの解釈が難しいんです。デザインは直感的にこれが良いのではないかというのがじっさいユーザーに見せてみるまでわからない。マシンラーニングモデルはそれに似ている。iOSはマシンラーニングによい環境だと思います。フォームを記入してYes/Noなどの精度の高い情報が入っているわけではありません。写真はいろいろな要素があります。iOSデバイスは直接皆さんの手で使うものです。していない世界とやり取りするものです。マシンラーニングのソフトウェアはそうした曖昧な世界を取り込んで、具体的な解釈にしていくことができます。私たちのプロダクトも、人間的な人の顔から具体的な個人を特定して精度の高い指示でロボット、レーザーに対して素材を切り込んでいく。何からはじめたら良いでしょう誰も専門家ではないのですぐ始めることができます。TensorFlowのチュートリアルやスタンフォードの講座、YouTubeに面白いビデオを公開している人も居ます。まとめすぐはじめられます。APIのように利用できます。深掘りもしていくことができます。デプロイしたい場合にはPythonを使ってモデルを訓練し、Swiftを使って人々の手に届けることができます。Q&Aさっき、事例をあげて、どうやってメガネを作るかの話があったが、レンダリングは端末側で処理している?サーバーで処理している?顔の形をサーバーで算出し、結果をクライアントに流します。レンダリングはSceneKitを使ってクライアントでやっています。それで流れるように提供できます。今後はよりクライアント側で出来るようにしたいです。通常サーバーでやらなければならない処理をクライアントでできるようになるというメリットが有ります。使って、連携する、って手になってくるよね。他にSwiftでTensorFlowと連携する方法として、TensorFlowで学習した結果をSwift上で使うライブラリ作ってます。機械学習はUIと同じ、は言い得ていてなるほどと思った。良さを証明できない、経験でよくなっていく、98%合っていれば万々歳、など。Flowの話聞いてる。はてなブログPro大学時代に耳が聞こえない生徒が講義に参加できるようにリアルタイムに文字起こしするバイトをしていました。いまはエンジニアとして働きつつ、勉強会やカンファレンスで話される技術分野の知見を文章に残し、検索可能にしたり、地方で活動する方に届けたいと思っています。お役に立ちましたら、支援いただけると幸いです。(24)注目記事はてなブログをはじめよう!niwatakoさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。