2017年08月18日

機械学習,ディープラーニングやTensorFlowって何?

エモトです.これまで書き綴っていたGPD Pocketですが,7月末に無事到着しました.ファーストロットで報告されていたハードの不具合もなく,日々持ち歩き堪能しております.これスマホやタブレットでいいんじゃな?と思う時もありますが,UMPCには夢があります.ほら,物理キーボードあるし,なんたってOSはWindowsだよ.

機械学習やディープラーニングの超万能説

よっ!ディープラーニング!
ディープラーニングってやつでなんとかして!!!!

某VRやARを舞台にした映画作品にて,死者の意識や思考をAIとして復活させるため「ディープラーニング」が出てきました.わたし大学時代に機械学習を扱う研究室にいて少し齧ってたのですが,ディープラーニングにはそこまでの表現力はないし,機械学習一般においても実現は不可だと思ってます.

一方で,またボスに即死魔法をかけまくるほどバカなんでしょと,ある年齢層は不審に思われるかもしれません.最新作の11をはじめ,それ以降のAI戦闘は賢いし,適切に弱点攻撃してくれて,すごく便利なんです.とにかくマルティナがエロいんです!

機械学習は,今のところは汎用的な問題に対して非常に難しい.しかしながら,ある特定の問題に対して,強力かもしれないし,そうでもないかもしれない(個人的には,よくわからないAI万能説を掲げて営業されたら気をつけたほうが良いかも).そんな万能ではないが,いろいろ一人歩きしてる感がある機械学習についてちょっとまとめました.

機械学習とは?

Wikipedia から引用すると,「人工知能における研究課題の一つで、人間が自然に行っている学習能力と同様の機能をコンピュータで実現しようとする技術・手法のことである」と書かれています.

例えば,ある画像を与えて(入力して),その画像に写る物体が何なのかなどの認識させるための手法です.乱暴にいうと,入力データをある特徴量空間に写像して,それがどのクラスタにあるかを判定するようなものです.

ディープラーニングとは?

よく耳する話題のディープラーニング(深層学習)は,機械学習そのものではなく,機械学習を解くアプローチの1つです(機械学習に普遍的なアルゴリズムはなく,いろいろな手法が日々提案されています).ニューラルネットワークの入力層と出力層の間の隠れ層を複数にしたものがディーブラーニングと呼ばれています.

隠れ層を増やしたことで既存より高い性能を示したが,計算負荷が大きく現実的ではありませんでした.しかし,クラウドコンピューティングやGPUによる並列計算の普及により現実的な計算時間に収まる(それでも計算時間は長い)ようになり,現在人気があるアプローチになっています.ちな,わたしは確率モデルでゴリゴリする方が好きです.

TensorFlowとは?

TensorFlowがGoogleから発表されたとき,これをインストールすればすぐ機械学習できるんじゃね?と思ったかもしれません.しかし,それ自体は機械学習そのものではなく,深層学習用に便利な数値計算ライブラリです.

ディープラーニングの計算は,ニューラルネットワークのパラメータ最適化問題になります.その問題のアルゴリズムは複雑で数学的な知識やコーディング能力がなければ,わたしも含め多くの人が脱落します.それらのアルゴリズムをライブラリー化して配布されたことで,研究者や専門家ではない多くの一般人が参加することができ,現在の流行りが始まったと思います.

また時間があるときにディープラーニングやTensorFlowの説明,実際にニューラルネットワークを解く場合の説明記事を書こうと思います.
posted by Seesaa京都スタッフ at 11:10| Comment(0) | iOS | このブログの読者になる | 更新情報をチェックする

2017年06月16日

[iOS] Xcode 8.3.3 で Firebase Crash Reporting がビルドできなかった件について

エモトです.GPD Pocketは来週発送みたいですね!楽しみですが,手に入れても一体何に使うんだろうか.

Xcode 8.3.3 にて Firebase Crash Reporting を ドキュメントにしたがって実装していたところ,なんやらよく分からないビルドエラーが起こりました.

いろいろ調べたところ,stackoverflow にて,run script で設定していた upload-sym を upload-sym-util.bash に入れ替えるとよいとのこと.
# replace upload-sym with upload-sym-util.bash in the script
"${PODS_ROOT}"/FirebaseCrash/upload-sym-util.bash  "/Path/To/ServiceAccount.json"
入れ替えたところ,ちゃんとビルドでき,クラッシュを計測することができました.ちなみに,私の環境にあった upload-sym-util.bash は実行可能なファイルではなかったので,パーミッションを変更し実行可能に変えました.
chmod +x upload-sym-util.bash 
ドキュメントと異なりちょっと気持ち悪いですが,コンソールで反映されていたので,今回はこれで勘弁してもらえればーーー.
posted by Seesaa京都スタッフ at 15:00| Comment(0) | iOS | このブログの読者になる | 更新情報をチェックする

2017年05月31日

[iOS] macOS SierraとXcode 7.3.1でクラッシュする

iOS担当のエモトです.GPD Pocket用の液晶フィルムが届きましたが,本体はまだ発送されていません.いつ届くのでしょうかね.クラウドファンディング自体初めてなのでそわそわしています.

弊社は受託開発を行っているため,少し前の Xcode を使って開発することがあります.先日,macOS Sierra で Xcode 7.3.1 を使用中に Xcode が必ずクラッシュするという状態に陥りました.開発中にアプリをクラッシュさせることはありますが,開発環境のXcode自体がクラッシュするのはなり焦りました.

xcode-bug-0.png

クラッシュするようになってから,その直近で行った作業をいろいろ検証したところ,Run Scriptの編集に原因がありました.macOS Sierra で Xcode 7.3.1 をお使いであれば,以下の方法で再現することができます.もし同症状の方がいらしたら,参考になれば幸いです.

1. Run Scriptを追加する
TARGETS -> Build Phases -> New Run Script Phase

2. 横三角ボタン(▶︎)で一度でも展開した(▼)後に他の画面に遷移するとクラッシュ.閉じたまま(一度も展開していない)ではクラッシュしない

xcode-bug-4.png


stackoverflow で漁ってみると,Sierra Betaから 7.3.1 との相性は良くない ようです.最も有効な対応策としては,同サイトでも言われるように Xcode 8.0 以上の最新版を使うことでしょう.どうしても環境を新しくできないのであれば,クラッシュ覚悟で展開後に一気に script を書くことでしょうか.賢くないですね.

また,macOS Sierra で Xcode 7.3.1 はファイル追加のフォームの崩れが起こるので,一刻も開発環境を更新するのが望ましいです.

xcode-bug-2.png


posted by Seesaa京都スタッフ at 15:35| Comment(0) | iOS | このブログの読者になる | 更新情報をチェックする