2016年12月30日金曜日

「みんなのAI講座 ゼロからPythonで学ぶ人工知能と機械学習」をUdemyで公開しました

初心者向け人工知能、機械学習のコースをUdemyで公開しました。
今年中であれば、私に個人的に連絡をいただければ無料クーポンをお渡しします。
その際は、評価とコメントをいただけると嬉しいです。

みんなのAI講座 ゼロからPythonで学ぶ人工知能と機械学習




みんなのAI講座は、誰に対しても開かれた人工知能、機械学習の講座です。プログラミングや数学の事前知識はほとんど必要ありません。

難解な数式やプログラミングが学習の妨げであった方でも、問題なく学習できます。

文系や非エンジニアの方にもお勧めです。

500人以上にプログラミングを指導し、ワールドビジネスサテライトにも登場した経験豊富な講師が指導します。

本コースでは、人工知能技術全般の解説を行いますが、実際にを書くのは主に機械学習のコードです。

機械学習のコードは、人工知能の分野で最もメジャーなプログラミング言語、Pythonで記述します。

開発には、PyCharmという開発環境を使います。これにより、初心者の方が躓きやすい環境設定が大幅に楽になります。ターミナルなどのコマンドラインを開く必要はありません。

データの分類や、文字認識、株価分析などの実践も行います。

その他コースの特徴は、以下通りです。

理論よりも体験を、手を動かすことを重視します。
可能な限り、簡単な数学を用いて解説します。
必要な数学はグラフィカル、直感的に解説します。
ニューラルネットや機械学習などの難しい概念は、細かく分解して少しずつ学習します
プログラミング初心者、未経験者でも大丈夫です。プログラミング言語Pythonを基礎から勉強します。
機械学習の基礎が身につきます。機械学習のコードを一から実装します。既存の有名ライブラリの解説も行います。
なお、大学レベル以上の数学や、機械学習の深い理論の解説は行いませんのでご注意ください。

ディープラーニングに関しては、概念のみの解説となります。

こんな方におすすめ
人口知能、機械学習に興味があるが、最初のとっかかりが分からない方
人工知能、機械学習関連の分厚い書籍に辟易した方
人工知能、機械学習をビジネスで扱う必要に迫られた方
数学、プログラミングが人工知能学習の障壁になっている方
人工知能の学習を通してPythonプログラミングを身に付けたい方
文系の方、非エンジニアの方にもおすすめです

みんなのAI講座 ゼロからPythonで学ぶ人工知能と機械学習

2016年12月26日月曜日

MetalでiOSアプリに宿る生命

iOS その2 Advent Calendar 2016 25日目の記事を投稿しました。

内容は、2016年12月14日にshibuya.swift#6で発表した内容に加筆を行ったものです。加筆内容は、主にGPUコンピューティング、生命や知性に関する個人的な観点です。
発表のレポートはこちら。
MetalでiOSアプリに宿る生命


今回の群知能の観察結果ですが、パラーメタの設定により急激に全体の振る舞いが変わる様子は、物理学でいう相転移に相当するかもしれません。また、個々の個体からは想像しがたい振る舞いを集団が示す様子は、複雑系、もしくは創発に当たるでしょう。
創発とは部分の性質の単純な総和にとどまらない性質が、全体に発現することです。例えば比較的単純なメカニズムの神経細胞の集合から、脳の複雑な機能が発現するのも一種の創発と考えられるかと思います。

人は千数百億個の神経細胞を持つのですが、線虫の仲間にはわずか302個しか神経細胞を持たないC.エレガンスという仲間がいるそうです。そして、その神経細胞同士の五千数百個のつながりは全て明らかになっています。

たったこれだけの神経細胞とニューラルネットワークで、この線虫は物理刺激に対する回避運動を行い、温度や化学物質の濃度と餌の有無を紐づけて記憶するそうです。まるで機械学習ですね。
(参考)エレガントな線虫行動から探る神経機能

人と同等の処理の能力を持ったニューラルネットワークを作ることは最先端のスパコンでも現在は無理ですが、線虫のような、いわば原初の知性とでもいうようなものであれば、MetalとiOSでも実現できそうに思えるのです。

並列演算という意味で、脳はGPUと似ているとよく言われます。スマートフォンは、現時点でもある意味外付けの脳のようなものですが、Metalの並列演算によりより生物の脳らしくなるのではないでしょうか。

詳細は、以下の記事をご覧ください。
MetalでiOSアプリに宿る生命

[iOS]MetalでGPUコンピューティング(13) スレッドについて

Metal Advent Calendar2016の24日目の記事を投稿しました。
Metal Advent Calendar2016の最後の記事となります。

本記事では、前回に引き続きAppleが提供するサンプルコードの解説を行います。
扱うサンプルコードは、前回と同じライフゲームのアプリ、MetalGameOfLifeです。
MetalGameOfLife

今回は、サンプルコード内で用いられているスレッドの概念について解説を行います。

詳細は、以下の記事をご覧ください。
[iOS]MetalでGPUコンピューティング(13) スレッドについて

2016年12月17日土曜日

[iOS]MetalでGPUコンピューティング(12) MTLRenderPipelineState

Metal Advent Calendar2016の17日目の記事を投稿しました。

本記事では、前回に引き続きAppleが提供するサンプルコードの解説を行います。
扱うサンプルコードは、前回と同じライフゲームのアプリ、MetalGameOfLifeです。
MetalGameOfLife

今回は、サンプルコード内のMTLRenderPipelineStateについて解説を行います。

詳細は、以下の記事をご覧ください。
[iOS]MetalでGPUコンピューティング(12) MTLRenderPipelineState

[iOS]MetalでGPUコンピューティング(11) MTLRenderCommandEncoder

Metal Advent Calendar2016の16日目の記事を投稿しました。

本記事では、前回に引き続きAppleが提供するサンプルコードの解説を行います。
扱うサンプルコードは、前回と同じライフゲームのアプリ、MetalGameOfLifeです。
MetalGameOfLife

今回は、GPUコンピューティングとは直接関係はありませんが、サンプルコード内のMTLRenderCommandEncoderについて解説を行います。

詳細は、以下の記事をご覧ください。
[iOS]MetalでGPUコンピューティング(11) MTLRenderCommandEncoder

2016年12月15日木曜日

shibuya.swift#6で発表しました

「MetalでiOSに宿る生命」というタイトルの発表を、2016/12/14(火)にshibuya.swift#6で行いました。
内容は、Metalの基礎、特性を把握するための実験、応用としての群知能の実装に関してです。
発表の機会を与えていただき、有難い限りです。
Metalの特性、群知能の挙動、秒間1000万回実行されるexp関数など、多くの方に興味を持っていただけました。















2016年12月14日水曜日

[iOS]MetalでGPUコンピューティング(10) Metal Shading Languageで記述されたライフゲームのロジック

Metal Advent Calendar2016の14日目の記事を投稿しました。

本記事では、前回に引き続きAppleが提供するサンプルコードの解説を行います。
扱うサンプルコードは、前回と同じライフゲームのアプリ、MetalGameOfLifeです。
MetalGameOfLife

今回は、Metal Shading Languageにより記述されたライフゲームのロジック部分について解説を行います。

詳細は、以下の記事をご覧ください。
[iOS]MetalでGPUコンピューティング(10) Metal Shading Languageで記述されたライフゲームのロジック

[iOS]MetalでGPUコンピューティング(9) MTLComputePipelineState

Metal Advent Calendar2016の13日目の記事を投稿しました。

本記事では、前回に引き続きAppleが提供するサンプルコードの解説を行います。
扱うサンプルコードは、前回と同じライフゲームのアプリ、MetalGameOfLifeです。
MetalGameOfLife

今回は、サンプルコード内のMTLComputePipelineStateについて解説を行います。

詳細は、以下の記事をご覧ください。
[iOS]MetalでGPUコンピューティング(9) MTLComputePipelineState

2016年12月12日月曜日

[iOS]MetalでGPUコンピューティング(8) MTLComputeCommandEncoder

Metal Advent Calendar2016の12日目の記事を投稿しました。

本記事では、前回に引き続きAppleが提供するサンプルコードの解説を行います。
扱うサンプルコードは、前回と同じライフゲームのアプリ、MetalGameOfLifeです。
MetalGameOfLife

今回は、サンプルコード内のMTLComputeCommandEncoderについて解説を行います。

詳細は、以下の記事をご覧ください。
[iOS]MetalでGPUコンピューティング(8) MTLComputeCommandEncoder

2016年12月11日日曜日

第02回てくてく勉強会を主催しました

様々なバックグラウンドのエンジニアが集まる勉強会、第02回てくてく勉強会を主催しました。

会場はTekuru四ツ谷教室で、主催はエンジニアの酒井さん、武田さんと私(我妻)です。
参加者は全部で13人、インフラエンジニア、ウェブエンジニア、モバイルエンジニア、SIerなど様々な分野のエンジニアの方が集まりました。

初回のテーマは”TensorFlow”です。Firebase、AWS Lambdaなど、様々なサーバーの設定や運用が不要のサービスが出現しており、将来的な動向が気になるところです。

勉強会は”他己紹介”から始まりました。
自分ではなく他の方を紹介することで、参加者の皆さんに交流のきっかけをつかんでいただけたかと思います。

もくもく会を挟んで、片桐さんのプレゼンです。


 本格的な資料も用意していただき、有難い限りです。
片桐さんは素粒子物理の研究をされているだけあり、本格的な数式を用いての機械学習の解説になりました。
このようなお話が聞ける機会、本当に貴重です。

 半はビールを飲みながらのもくもく会でした。一人でTensorFlowを試行錯誤している方も、技術話で盛り上がっている方もいました。

懇親会は四ツ谷のひつじやで。
レバノンやモロッコ、チュニジアの料理をキプロスのワインで流し込みました。


 
今後とも、多様な分野のエンジニアの接点になるようなテーマを選んでいけたらと思います。来月もまた開催しますので、イベントの公開を楽しみにしてくださいね。





今回の皆さんの学習内容です。
@が学習目標、☆が今回の結果、→が次回のテーマの希望です。

ひさはらさん
デザイナー
@デザイン関連(ジョジョ)
☆アニメーションさせる素材ができた
→Live 2DとSpineのアニメーションのツール

なかもとさん
サーバーエンジニア
@AWSのGPUインスタンスでAnaconda、TensorFlow
☆インスタンスにはAWSに連絡が必要、ローカルでTensorFlow
→AWSラムダ、スクレイピング

うえまつさん
マーケター
@機械学習を仕事の参考に
☆MINSTのインストール
→数字以外の画像データ以外の認識

(匿名希望)さん
プログラマ
@機械学習のゲームアプリを作る、アンテナを張っている
☆ゲームのモデル、シミュレータのデータ
→機械学習の概要の把握

むかいさん
Rails、Webエンジニア
@TensorFlowの使い所をみつける
☆TensorFlowの環境作成
→機械学習のAPIのための基礎

いむらさん
サーバーサイドWebエンジニア
@Jupiter NotebookでTensorFlowの学習
☆MNIST for beginnersをJupiter Notebookで実行、コードリーディング
→静的型付き言語、Server side Swift

やなぎさわさん
SIer
@機械学習の学習、TensorFlowのチュートリアル
☆TensorFlowのチュートリアル
→機械学習系

まつもとさん
Web、Railsエンジニア
@TensorFlowのチュートリアル
☆MINIST for beginnersの続き
→React

さとうさん
PHPエンジニア
@TensorFlowで何ができるか
☆環境構築、チュートリアル、最急降下法
→React.js、Riot.js

かたぎりさん
iOSエンジニア
@TensorFlowのチュートリアル
☆質問内容の調べ物
→OpenGL、Metal

みやまさん
Saleceforceの🍳エンジニア
@Saleceforceのミニハック対策

たけださん
Saleceforceエンジニア
@Slaeceforceミニハック対策
☆Salceforceのイベントの対応、課題を7つ中2つ解決、みやまさんに指導、出張申請を楽にする、ライトニングデザインフレームワークのチュートリアル
→Salceforce Einsteinで人工知能

あづま
iOSエンジニア
@UdemyのコンテンツにTensorFlowを絡める
☆会の滞りない運営
→人工知能関連

2016年12月10日土曜日

[iOS]MetalでGPUコンピューティング(7)

Metal Advent Calendar2016の10日目の記事を投稿しました。

本記事では、前回に引き続きAppleが提供するサンプルコードの解説を行います。
扱うサンプルコードは、前回と同じライフゲームのアプリ、MetalGameOfLifeです。
MetalGameOfLife

今回は、サンプルコード内のMTLCommandBufferについて解説を行います。
MTLCommandBufferのオブジェクトはGPUに引き渡されるエンコードされた命令を格納しています。
MTLCommandBufferはクラスではなくプロトコルです。
MTLCommandBufferのオブジェクトは、MTLCommandQueueにより生成され、生成元のキューの内部でのみ実行することができます。全てのコマンドバッファは、生成元のコマンドキューに追加された順番に実行されることが保証されています。
コマンドキューの生成は一度だけですが、コマンドバッファは毎フレームごとに生成、実行されます。

詳細は、以下の記事をご覧ください。
[iOS]MetalでGPUコンピューティング(7)

2016年12月9日金曜日

[iOS]MetalでGPUコンピューティング(6)

Metal Advent Calendar2016の9日目の記事を投稿しました。

本記事では、前回に引き続きAppleが提供するサンプルコードの解説を行います。
扱うサンプルコードは、前回と同じライフゲームのアプリ、MetalGameOfLifeです。
MetalGameOfLife

今回は、サンプルコード内のMTLCommandQueueについて解説を行います。
MTLCommandQueueはコマンドバッファ(MTLCommandBufferのオブジェクト)のキューです。また、MTLCommandBufferのオブジェクトの生成にも用いられます。
コマンドバッファはGPUに引き渡されるエンコードされた命令を格納しています。
MTLCommandQueueはクラスではなくプロトコルです。
コマンドキューはスレッドセーフで、複数のコマンドバッファを同時にエンコードすることができます。

詳細は、以下の記事をご覧ください。
[iOS]MetalでGPUコンピューティング(6)

2016年12月8日木曜日

[iOS]MetalでGPUコンピューティング(5) MTLLibrary

Metal Advent Calendar2016の8日目の記事を投稿しました。

本記事では、前回に引き続きAppleが提供するサンプルコードの解説を行います。
扱うサンプルコードは、前回と同じライフゲームのアプリ、MetalGameOfLifeです。
MetalGameOfLife

今回は、サンプルコード内のMTLLibraryについて解説を行います。
MTLLibraryを用いることでGPU側の言語Metal shading languageの関数を、CPU側の言語Objective-CやSwiftで扱うことが可能になります。
MTLLibraryはクラスではなくプロトコルです。
MTLLibraryに従うオブジェクトは、Metal shading languangeのソースコードを含んでいます。
シェーダーファイル内にあるソースコードはビルド時にコンパイルされ、文字列で書かれたMSLのコードはランタイム時にコンパイルされます。
MTLLibraryのオブジェクトを生成するためには、MTLDeviceのメソッドを用います。
コンパイル済みのバイナリからライブラリを作る場合は、以下のメソッドのどれかを用います。
  • newDefaultLibrary()
  • makeLibrary(filepath:)
  • makeLibrary(data:)
また、ランタイムでテキストからコンパイルしライブラリを作る場合は、以下のメソッドのどれかを用います。
  • makeLibrary(source:options:completionHandler:)
  • makeLibrary(source:options:)
 詳細は、以下の記事をご覧ください。
[iOS]MetalでGPUコンピューティング(5) MTLLibrary

Metal、GPU関連のスライドを2つ紹介

Metal、GPU関連で最近印象に残ったスライドを2つ紹介します。

1. Metal と Vulkan を用いた水彩画レンダリング技法の紹介

・OpenGL ESでは、シェーダーの字句解析、構文解析、最適化、命令コードの生成の全てはドライバがランタイム上で実行している
・Metal、Vulkanなどがある低レベルAPIは、コンシューマ機では一般的であった
・Tile Based Rendering: レンダリング時は可能な限りシステムメモリへのアクセスを避ける。高速なOn-Chip上のメモリに置かれたタイルバッファへの読み書きを行う。
・Metal、VulkanはこのTBRアーキテクチャに最適化されている
・Metal、Vulka世代では、明示的にValidation Layerを有効にすることで、API呼び出しのエラーチェックを実施する。

2. GPU最適化入門

・GPUを知る上で欠かせない3つの特徴は、1. レンダリング理論、2. 長いパイプライン処理、3. 並列性
・GPUは、レンダリング方程式[1986 Kajiya]を概念的に近似して実装している
・GPUの最適化は、GPUパイプラインを円滑に流すことに集約できる
・GPUはパイプラインが長いため、どこかが詰まると、すべてが滞留してしまう

2016年12月7日水曜日

[iOS]MetalでGPUコンピューティング(4) MTKView

Metal Advent Calendar2016、7日目の記事を投稿しました。

本記事では、前回に引き続きAppleが提供するサンプルコードの解説を行います。
扱うサンプルコードは、前回と同じライフゲームのアプリ、MetalGameOfLifeです。
MetalGameOfLife

今回は、GPUコンピューティングとは少々離れるのですが、サンプルコード内のMTKViewについて解説を行います。
MTKViewはMetalKitフレームワークに含まれるUIViewを継承したクラスで、比較的シンプルな方法でMetalによる描画を行うことができます。

[iOS]MetalでGPUコンピューティング(4) MTKView 

2016年12月6日火曜日

[iOS]MetalでGPUコンピューティング (3)

Metal Advent Calendar2016の6日目の記事を、Qiita
に投稿しました。

今回の内容は、Appleが提供するMetalのサンプルコード、MetalGameOfLifeに関するものです。
MetalGameOfLife

上記は実行画面です。
いわゆるライフゲームのアプリですが、Metalの並列プログラミングについての良いデモとなっています。

今後、何回かに分けてこのサンプルコードを解説する予定ですが、今回は主にMTLDeviceについて解説を行います。
MTLDeviceは単一のGPUのインターフェイスです。
MTLDeviceなどのMetal関連の機能の多くははクラスではなくプロトコルなのですが、Metalが動作するデバイス毎にオブジェクトの型が異なるので、実装よりもインターフェイスを重視したためと思われます。
 (参考)objc.io

詳細は以下の記事をご覧ください。
 [iOS]MetalでGPUコンピューティング (3)

2016年12月3日土曜日

sibuya.swift #6で発表します

12月14日(火)のsibuya.swift #6で発表します。
内容はiOSのMetal関連になるかと思います。
発表時間は15分です。
既に41人の発表枠に104人の申し込みがあり、iOSエンジニアに大人気の勉強会です。
どれだけ多くの方がMetalに興味を持っているのか分かりませんが、多くの方とディープな技術に関して交流ができればと思います。
https://shibuya-swift.connpass.com/event/42712/

2016年11月21日月曜日

第02回てくてく勉強会を開催します

2016年12月10日(土)、第02回てくてく勉強会を開催します
今回のテーマは、"TensorFlow"です。

てくてく勉強会は、様々な分野のエンジニアが集まる勉強会です。 エンジニアの卵の方、バリバリ現役のエンジニアの方、技術レベルは一切問いませんので、気軽に”てくてく”歩いてご参加下さい。
てくてく勉強会は、毎回テーマを設けます。 テーマには、比較的新しい技術を取り上げる予定です。 テーマに沿った新しい技術を学んで、お互いにシェアする場にしていきたいと思います。
一応テーマは設けるのですが、各自の勉強内容を縛るわけではありません。好きなトピックを勉強していただいて全く問題ありませんが、異分野のエンジニアが交流するための題材として、テーマが役に立てばと思います。
また、テーマに関する予習も必要ありません。この会はノウハウを披露する場では無く学ぶ場であるので、知識ゼロもで大丈夫です。
第02回目のテーマは”TensorFlow”になります。 TensofFlowはGoogle製の高機能かつ手軽な機械学習ライブラリで、最近様々なプラットフォームで使われ始めているようです。
基本的には各自もくもくと勉強するスタイルですが、参加者同士の交流を促す仕組みも用意していく予定です。 お互いに質問、情報共有をしながら効率的に学んでいきましょう。 懇親会も開催します。 また、LT枠は特に設けておりませんが、ご希望の方はぜひコメントをください。

皆様のご参加をお待ちしております。

詳細はこちらから
https://tekutekuteku.connpass.com/event/45237/
Facebookグループはこちら
https://www.facebook.com/groups/tekuteku/

2016年11月11日金曜日

[iOS] MetalでGPUコンピューティング(2)

前回に引き続き、Apple製のフレームワーク、MetalについてQiitaに記事を書きました。
今回はMetalの応用編です。
アプリの描画部分にMetalを用いるのではなく、ロジック部分にMetalを用いるという通常と逆の試みを行い、群知能を実装します。
各個体はローカルに互いと、そして彼らの環境と対話する。個々のエージェントがどう行動すべきかを命じている集中的な制御構造は通常存在しないが、そのようなエージェント間の局所相互作用はしばしば全体の行動の創発(emergence)をもたらす。このようなシステムの自然界の例として、アリの巣、鳥の群れ、動物の群れ、細菌のコロニー、魚の群れなどがある。
-群知能- Wikipedia
コンピュータ上の群知能として有名なものに、クレイグ・レイノルズによって考案されたBoidsがあります。
Boidsは複雑系や自己組織化に深く関わっているのですが、各個体が以下のたった3つのルールに従うだけで、個体の集合が魚や鳥の群れのように振る舞います。

1.分離(Separation)各個体は他の個体とぶつからないように動く。
2.整列(Alignment)各個体は他の個体と速度と方向を合わせるように動く。
3.結合(Cohesion)各個体は他の個体の集合の中心方向へ向かうように動く。

上記と全く同じにしても面白くないので、今回はこのルールに少しアレンジを加えました。

a.等距離 各個体が等距離を保つように動く。
b.並行 各個体が他の個体と同じ向きになるように動く。
c.等速 各個体は他の個体と同じ速度になるように動く。

Boidsとの違いは群れが中心を持たず、各個体がより分散的に動くことです。

数式、コードなどは以下のQiitaの記事に具体的に記述しました。
[iOS] MetalでGPUコンピューティング(2)

以下は動作例です。

魚たちが集まって、まるで一つの生き物であるような動きをします。姿形はクラゲのようでありますが、無数の個体が集まって一つの個体を形成する様子は粘菌のようでもあり、魚を細胞とするならば多細胞生物に例えることもできるかと思います。
パラメータの調整に、魚たちは渦を形成したり、 一様な群れを形成したりします。

今回は群知能を対象としましたが、GPUの活用により生命らしさが実装が可能なことがわかりました。もちろん、今回のMetalを用いた技術は機械学習などへの応用も期待できるかと思います。

今回使用したコードは、こちらに置いておきます。
https://github.com/yukinaga/SwarmIntelligence

2016年11月7日月曜日

第01回てくてく勉強会を主催しました

様々なバックグラウンドのエンジニアが集まる勉強会、てくてく勉強会を主催しました。
会場はTekuru八重洲教室で、主催はエンジニアの酒井さん、武田さんと私(我妻)です。
参加者は全部で12人、インフラエンジニア、ウェブエンジニア、モバイルエンジニア、SIerなど様々な分野のエンジニアの方が集まりました。

初回のテーマは”サーバーレス”です。Firebase、AWS Lambdaなど、様々なサーバーの設定や運用が不要のサービスが出現しており、将来的な動向が気になるところです。

勉強会は”他己紹介”から始まりました。
自分ではなく他の方を紹介することで、参加者の皆さんに交流のきっかけをつかんでいただけたかと思います。

もくもく会を挟んで、酒井さんのLTです。
内容はiOSアプリへのFirebaseの導入に関してです。
制限はあるものの、クラウド上のデータベースが簡単に利用できるのは便利ですね。
後半はビールを飲みながらのもくもく会でした。一人で勉強している方も、技術話で盛り上がっている方もいました。
終了後の懇親会では、次回のテーマに関して様々な意見が出ました。TensorFlow、IoT、データベース、Baas、Webviewなどが次回の候補になるかと思います。今後とも、多様な分野のエンジニアの接点になるようなテーマを選んでいけたらと思います。

来月もまた開催しますので、イベントの公開を楽しみにしてくださいね。

イベント
http://tekutekuteku.connpass.com/event/43007/
Facebookグループ(公開)
https://www.facebook.com/groups/tekuteku/ 

参加者の井村さんがブログを書いてくれました。
 http://imunew.hatenablog.com/entry/2016/11/06/234800
有難うございます!

2016年10月23日日曜日

第01回てくてく勉強会を開催します

 今回のテーマは、”サーバーレス”です。

てくてく勉強会は、様々な分野のエンジニアが集まる勉強会です。 エンジニアの卵の方、バリバリ現役のエンジニアの方、技術レベルは一切問いませんので、気軽に”てくてく”歩いてご参加下さい。
てくてく勉強会は、毎回テーマを設けます。 テーマには、比較的新しい技術を取り上げる予定です。 テーマに沿った新しい技術を学んで、お互いにシェアする場にしていきたいと思います。
一応テーマは設けるのですが、各自の勉強内容を縛るわけではありません。好きなトピックを勉強していただいて全く問題ありませんが、異分野のエンジニアが交流するための題材として、テーマが役に立てばと思います。
また、テーマに関する予習も必要ありません。この会はノウハウを披露する場では無く学ぶ場であるので、知識ゼロもで大丈夫です。
第一回目のテーマは”サーバーレス”になります。 Firebase、AWS Lambdaなど、様々なサーバーの設定や運用が不要のサービスが出現しており、将来的な動向が気になるところです。
基本的には各自もくもくと勉強するスタイルですが、参加者同士の交流を促す仕組みも用意していく予定です。 お互いに質問、情報共有をしながら効率的に学んでいきましょう。 懇親会も開催します。 また、LT枠は特に設けておりませんが、ご希望の方はぜひコメントをください。
皆様のご参加をお待ちしております。
http://tekutekuteku.connpass.com/event/43007/

2016年10月12日水曜日

[iOS] MetalでGPUコンピューティング(1)

Apple製のフレームワーク、MetalについてQiitaに記事を書きました。
Metalを用いることにより、スムーズなCPU/GPUの連携が可能となり、使い方によっては驚異的なパフォーマンスが得られます。
GPUコンピューティングがモバイルデバイスでも比較的手軽に扱える時代が来たようです。
GPUメーカー、NVIDIAのジェンスン・ファンCEOがGTC Japanで「脳はGPU」と述べていましたが、ひょっとしたらMetalの登場により個々のアプリに知性が宿る時代が近づいているのかもしれません。

[iOS] MetalでGPUコンピューティング(1)

2016年9月25日日曜日

リアルな世界、ビットの世界

我々が暮らすリアルな世界と、コンピュータ上の世界(以下、ビットの世界)の違いは何でしょうか。
人工知能、人工生命は、リアルな知能、リアルな生命と比較してどのような制約を受けるのでしょうか。

以下、リアルな世界とビットの世界の比較をしてみたいと思います。

リアルな世界

・素粒子が構成単位
・空間が無限に広い
・時間、空間は連続している
    #極めて微小なスケールで時間は不連続だという説もあります。
・現象は素粒子単位で並列に進行する
・素粒子同士の相互作用が存在する

ビットの世界

・ビットが構成単位
・空間の広さはメモリ次第
・時間、空間は不連続
・基本的に現象(演算)は直列に進行する。
   #マルチコアのCPUなどを用いることにより幾分かの並列化は可能。
・構成要素同士の相互作用を計算するには膨大なリソースが必要
   #いわゆる多体問題と繋がります。例えば1000の構成要素があると、1000x1000=100万の相互作用が生じることになります。

空間や時間の連続性と有限性、現象の並列性、構成要素の相互作用などに本質的な違いがあるように思えます。
ところが、現代のデジタル物理学の考え方では、宇宙は本質的に情報により記述可能であり、それ故、計算可能であるとしています。
すなわち、リアルの世界も全て0と1で表現できて、現象はデジタルな演算の結果だという物理学の仮説です。
極端なところでは、宇宙自体がデジタルコンピュータだと唱える物理学者もいます。

十分な計算のリソースがあれば、ビットの世界は十分広く、連続的になり、並列性が高くリアルと比較して遜色なくなるのかもしれませんね。

参考:
Wikipedia デジタル物理学
GOD IS THE MACHINE

2016年9月19日月曜日

スノボするカラスとキャンプするタコ 汎用知能の進化経路

プラスチックのフタでスノボを楽しむカラスの様子です。



汎用性の高い知性が霊長類の専売特許でない事が分かります。
鳥類の先祖は恐竜であり、約四億年前にヒトの先祖と分岐したはずです。しかしながら、別の進化経路を辿っても高度な知能の獲得が可能であるということですね。

もっと昔、約6億-5億年前にヒトの先祖と分岐して、同様に汎用性の高い知能を獲得した生き物がいます。タコです。
以下は、二枚貝の貝殻を持ち運びキャンプをするタコの様子です。



タコは無脊椎動物の中では最大の脳を持つようですが、大脳は全体的な指示のみを与え、細部は個々の脚が計算するようです。
脊椎動物と異なる、分散型の脳ですね。
タコの寿命は2年ほどしかありませんが、人並みに寿命があれば海底に文明を築くかもしれませんね。

これまでの2例は神経細胞ベースの知能ですが、神経細胞を介さない知能も存在します。
アリの群れや細菌が発揮する群知能です。
以下は、アリが地下に築いたメガロポリスです。



以上の例から分かるように、汎用性の高い知性は、様々な経路で獲得可能であることが分かります。

僕が今トライしていることは、このような知性が進化により自発的に形成されるような”環境”と”種”を、コンピュータの中に作ることです。

参考:
僕たちの祖先をめぐる15億年の旅
「タコの脚の複雑な動き」はどう制御されているか
神経系の多様性:その起源と進化 (シリーズ 21世紀の動物科学)

2016年9月4日日曜日

備忘録: 直近に読んだ生物学関連の本5冊

1. 植物は<知性>をもっている

ステファノ・マンクーゾ (著), アレッサンドラ・ヴィオラ (著), 久保 耕司 (翻訳)
人間のような中枢神経ベースの知性が、知性の全てではないようです。
知性の一つの形態として、植物のように、各器官が相互にネットワークを形成する、分散型の知性が存在します。
人工知能を考える上で、より広い視点を持たせてくれる本です。


2. 微生物が地球をつくった

ポール・G・フォーコウスキー (著), 松浦俊輔 (翻訳)
微生物は化学物質を用いて互いにコミュニケーションを行い、社会を形作ります。また、我々の生命を支える細胞内のナノマシーンの多くは、微生物と共通のものです。環境に適応して生き残る能力は、知性と言っても差し支えないかと思います。人の脳の知性を真似るのもありだけど、ソフトウェアにはこのご先祖様から学ぶことも多くあるのではないでしょうか。


3. ウィルスは生きている

中屋敷均
これまで生命の進化は種に分岐する木のようなものだと想像していましたが、ウィルスなどを介した遺伝子の横移動が存在することを考えると実は木ではなく網のようなものだと考えを改めました。
海水中のウィルス粒子は1mlあたり一億個、海洋中のウィルスの総量はシロナガスクジラ7500万頭分、全部一列に並べると長さは1000万光年。
ウィルスが常に変化する生命のネットワークの中で果たす役割は巨大なものであり、もちろん我々人間も様々な形で依存しています。
病原性は、ウィルスのほんの一面でしかありません。



4. 生命のからくり

中屋敷均
同じく中屋敷先生の著書。生命と非生命の境界はどこにあるのか、生命の起源は何か。生命の本質が深く考察されている本です。DNAを正確にコピーする「動」の要素とDNAにコピーミスが生じる「静」の要素。そして、突然変異と淘汰による、生存に適した特質の世代に渡る累積。秩序と混沌の境界に、適切な環境と生命の種を置いてやれば、コンピュータ上に生命現象らしきものを発生させることができるかもしれない、そう思わせてくれる本でした。



5. 心はプログラムできるか

有田 隆也
コンピュータ上の人工生命の本です。DNAを化学的に合成することは容易ではありませんが、コンピュータ上でデータをコピーし、意図的に突然変異を加えることは僕でも容易にできます。進化のメカニズムの研究上、とても有用な手法かと想います。シンプルなコードから複雑な機能を自発的に獲得していく仕組みは、これまで数々の研究実績があるようですが、獲得できる機能はごくシンプルなものに限られているようです。心のような複雑な仕組みを進化により自己形成させるためには、どのような生命の”種”をコーディングする必要があるのか、それは人類にとってとても考える価値のあることかと思います。

2016年8月27日土曜日

iOSDC Japan 2016で発表してきました

日本最大のiOSカンファレンス、iOSDC Japan 2016で発表してきました。
参加者は600人を超えていたそうで、日本のiOS開発が盛り上がっていることは確かなようです。

僕は今回、iPhoneのバーチャルリアリティ(VR)対応について、当日の午前中に発表を行いました。



発表に用いた資料はこちらです。


以下はiOSDC当日の動画です。
1:42:00辺りからが僕の発表になります。


また、togetter様に発表の様子をまとめていただきました。
パフォーマンス向上が臨場感に繋がる! iOS向けVR対応アプリ実践解説




以下は参加者の方のリアクションです。








前日に開催されたスピーカー同士の懇親会で主催者の方に聞いたのですが、ヘッドマウントディスプレイを用いたVR体験を参加者の方々が体験しやすいように、発表の時間を昼休みの直前に設定していただいたそうです。配慮に感謝するばかりです。
実際に、発表後多くの方にスマホVR体験をして頂くことができました。

iOSDCは、進行や会場の雰囲気も素晴らしかったですが、懇親会も最高でした。

ビールを飲みながらのLT大会も楽しかったです。

iOSDC2017では、また別の内容で発表できたら嬉しく思います。