AIとアップロードそして意識について
今日、高知遠征の帰り、車中でtenguyashikiさんと表題のようなことを延々話した。他にもいろいろ話したんだけど、それはこぼれ話として僕の紙のノートに残しておく。
お互いに究極の夢を話してみたところ、僕ら二人とも自分のコピーを作りたいと思っていることがわかった。ただその方法がちょっと違っていてtenguyashikiさんはロボット的なものを考えていて、自分の脳の一部を表層意識に上らないように使ってロボットをコントロールするというようなアイディア。僕は宇宙APIで書いたようなシミュレーション宇宙に住むソフトウェア人間に人格をアップロードして、メモリが許す限りいくらでもコピーできるというアイディア。
どちらにせよ少なくとも現時点では根本的な問題がある。脳は持ち主から見てもブラックボックスの中身だというのがそれ。ロボットの計算資源として脳の一部を使ったり、脳の現在の状態をダンプしてアップロードしたりというAPIにだれもアクセスできていない。APIがあるのかもよくわからない。
現実的な妥協点を見つけるために、アプリケーションを考えた。人間が常にカメラ付きのメガネと耳掛けマイク等、AIが使える感覚器官を身につけて生活をする。つまり自分自身が得ているのとと同じインプットをAIに与える。そのインプットからAIと人間がそれぞれ推論や想像を進めて、ある一定時間経過後にAIと人間がフィードバックしあうのを繰り返して、お互いの思考プロセスが似通うように訓練していく*1。 最終的に自分と似たような思考回路を持ったもう一つの脳ができあがる。そして2つの脳にそれぞれ別のことを考えさせられるようになり、真のマルチタスクが実現する。というもの。
ディープラーニングとかの機械学習みたいに、パターンマッチを効率的にできるように訓練するというのではなく、勝手に疑問を持ってそれに考えたりっていう思考のプロセスを模倣するというのがポイント。機械学習は入力部分で使えるけど本質的には関係無い。
単純化すると、自分の思考プロセスのモデルを作ってそれを数式かプログラムとして記述できれば、自分の脳をソフトウェア的に再現したことになると言える。少なくとも外見的には。
僕らは二人とも、人間の思考プロセスに真の乱数は関わっていなくて、全ての条件が同じ、全く同じ状態の2つの脳は、同じ刺激に対して同じ反応を返すという仮説を持っている。この話は昔、宇宙APIの記事に書いた。仮説が正しければ思考プロセスのモデル化は原理的には可能だと思う。
これが実現したら、tenguyashikiさんはtenguyashikiの思考プログラムとそれを走らせるプロセッサ、それに感覚器官と、人間に可能な動きを実現する各種アクチュエータを組み合わせたロボットを作ればいいし。僕は宇宙のシミュレーションとそれに適合する体をプログラムすればいい。と、いいつつも、宇宙のシミュレーションを作るのは大変なので、僕もロボットを作って残りの仕事はそいつがやってくれると信じてこの人生は生身のまま終えることもできる。
さて、この脳のソフトウェアコピーに意識はあるのか。
意識ってなんだと自分が考える答えにソフトウェア脳が辿り着いたらそいつには意識があると言えると思う。
僕にとって意識とは、自分はなんなのかと問い続けて、それについて研究し続けることだ。これができるソフトウェア脳には意識があり、従って人権を与えるべきだ。というのが僕の考え。あなたにとって意識とはなんですか?
*1:フィードバックは文字とか音声で良い
アートは楽しい
先週から、ドイツ在住アメリカ人のBenoîtとオランダ人のGerritと一緒に作業している。二人は徳島LEDアートフェスティバルへの出場と、あと神山にラウドスピーカーを大量に使ったオブジェを作るために来ていて、面白そうだから混ぜてもらった。
Benoîtのサイト
LEDフェス出場作品
二人とも電子回路の理解は大雑把なもので、ありものを組み合わせてやばいものを作るという感じ。僕はもう少しだけわかるから、回路のトラブルシューティングで重宝されている。Li-ionバッテリーの充電機の修理とか、パフォーマンス中に破裂したMOSFETの代替品を探したり、破裂しないように保護回路をつけたりとか。
彼らが作る作品を見ると、基板やら配線やら剥き出しで、だいぶサイバーパンクっぽいんだけど回路は全部アナログで、なんと呼んでいいかよくわからないけどヤバい。
最近僕は、製品を作ろうとしてて、内臓をきれいにカバーして、買う人がギョッとならないようにするってことに時間を割いてて、それはそれで3Dプリンタ使ったりシリコン成型してみたりと楽しんでやっているんだけど、やっぱり内臓剥き出しの血管剥き出しで、たまにショートしてレギュレータが吹き飛び抵抗が燃えるみたいなスタイルが好きだ。
LEDアートフェスティバルでは阿波踊りの踊り子(生身の人間)の着物にLEDストリップを付けて、鳴り物に合わせてそれが光るという展示をやるんだけど、実際リハーサル中に女の子の着物が小爆発起こしたりしてて本当に面白い。
アートは楽しい!
自転車を買った
ひと月前に、新しい自転車を買った。FUJIのBallad R 2016。
2012~2013年頃に乗っていたのが、同じFUJIのFeatherで、とても気に入っていたのに、アメリカに置いてきてしまった。これ:
今回は似たような色のロードバイクにした。今住んでいるのが山なので、シングルスピードはさすがにキツイと思ってロードにしたけど、やっぱりピストの方がすっきりしていて好きだ。
クロモリのホリゾンタルフレームというのは中学の頃に乗っていたランドナーから変わっていなくて、Wレバーなのもそのランドナーを思い出して良い。その時使っていたのはフリクションタイプだったから、インデックスされているのは最初びっくりした。
東京でピストに乗ってた時は、必ず国道/県道の車道をすっ飛ばして、車FUCKと思ってたけど、今は自分でも車を運転してるし、なるべく車通りの少ない道を選んで、歩道があるところでは歩道をゆっくり乗っている。丸くなったもんだ。
これはフロントバッグとかサイドキャリアとかつけて、小旅行とかポタリングとか、そういう楽しみ方をしようと思う。
いろいろと悩みは多くて、モヤモヤしてることが多いけど、自転車に乗っている間はすーっと集中できる。
自転車、おすすめです。
くらげちゃんが生まれました
9月3日に8時間の陣痛ののちに、ちゅるんと出てきました。 ずっと寝てます。可愛すぎる〜。
microduinoを使えるようにするメモ
microduinoを買ったけど、Macで使えるようにするまでちょっと手こずったのでメモ:
- FTDIのD2XXドライバをインストール. Tools>Portから見えるようになるはず。
- Arduino IDEのスケッチディレクトリ直下にhardwareディレクトリを作って、Microduino-IDE-Supportのhardwareディレクトリの中身をコピー。Tools>Boardから見えるようになるはず
- Verifyしてみると、1.6.5を使ってる場合core.aが見つからないと言われるので、ここを見て、platform.txtを編集する。
これでいけた。公式WikiのGetting Started(Mac)はあてにならない. Microduino IDEはディスクイメージが壊れてる(1.6.7)か、Java 6を要求してくる(1.0.6)から、上記の通りマニュアルインストールした。IDEのディスクイメージに同梱されてくるドライバも意味なさそうだった。
なんで僕は1.6.5使ってるんだっけと思ったけど、たしかBoards Manager使うためとかだった気がする。今もう使えるようになってるならアップデートしたい。
自由研究 弱い電源で負荷を間欠動作させる回路
ここ数日格闘している回路の話をします。面白いので聞いてください。
無線電力伝送を実用しようと画策していて、例えばこの記事のような実験をやっています。
LEDを点灯させて喜んでいるのを見てわかるかと思いますが、今のところ実用には程遠い状態です。
弱電では効率が出ないという情報もあるし、他にも送電側の改良が必要なのは明らかにそうなんですが、今日は受信側の改良を考えます。
受信コイルの状況的には、電圧は来ているけど電流がそれほど誘導されていない。しかも波形が汚いといったところで、これをうまく使いこなせれば、ラジオ電波のハーベスティングとか、曇りの日の太陽電池といった、信頼性の低い電源全般にツブシが効きそうです。
ということで、出力インピーダンスが高い電源を出力インピーダンスが低い電源に変換する魔法の回路を探します。
そんなものはないので微分的なもので我慢します。間欠動作っすね。
ダイオードで整流したあと、大きい電解コンデンサなりEDLC (電気二重層コンデンサ)なりを充電して、ある程度電荷が溜まったら負荷を接続してガーッと一気に駆動するってことを自動でやりたいわけです。
やりたいことはシンプルなのに、この回路、なかなか検索に引っかかりません。発振回路の一種なことはわかるけど、大抵の回路ではコンデンサがbc間にあったりしてこりゃあかんとなります。
問題は、充電したCの放電で負荷を駆動したいというところです。大抵の発振回路ではCは時定数として使って、電源-負荷-GNDの経路を導通させることで駆動させるようになっています。自分でなんとか考えてみようとしましたが、頭がフライになって諦めました。
それもそのはずで、実はこれ、弛張発振回路のしかも今となってはちょっと特殊なタイプの回路だったのでした。なんだよサイリスタって!なんだよPUTって!なんだよUJTって!ネオン管ってなんだよ!マイコン時代にアナログ回路を独学している人間には知らないモノがたくさんあるのでした。
重要なのは負性抵抗(正確には微分負性抵抗)で、これがないとうまくいかないようです。要するに、導通開始電圧が導通を維持するのに必要な電圧より高いという特性です。これを使うと、Cの+側と負荷を一時的に直結するということがスッキリできます。
微分負性抵抗領域を持つ部品には、以下のようなものがあるようです。
一番使いやすそうなのはPUTで、導通開始電圧を自由に設定できるようになっています。構造はpnpn接合の2番目のn型半導体からゲートが出ていて、あとは両端からそれぞれアノードとカソードが出ているといった風情です。ゲートで設定した電圧になると導通するダイオードと考えるといいです。
PUTについて詳しくはこちら: PUT/逆方向(Nゲート)サイリスター
以下のサイトには、PUTの使い方と合わせて、pnpトランジスタとnpnトランジスタを組み合わせてpnpn構造をミミックする方法も載っています。
上記のリンク2つは、LEDの点滅の例ですが、目を凝らして探していたら、悪コンディション下で間欠ソーラー駆動を行う回路も見つけました。 これはBEAM Roboticsっていうムーブメントでよく使われるらしい、Solar Engineという回路を集めたものです。
こちらもどうぞ: すいか実験室(電子工作): 電気二重層キャパシタでの電力実験
BEAM Robotの実例はこちら: makezine.com
Solar Engineは色々なバージョンがあるみたいですが、やっぱりこれもpnpとnpnを組み合わせてpnpnを作るもので、PUTのミミックのようです。 追記: よく見たらちょっと違いました。これはこれで面白い。負性抵抗はどうやって作ってるんだろう。
さらに追記: 実験してみたところ、Solar Engineはやっぱり負性抵抗がないため、Zenerやダイオードで設定するtrip voltageの周辺でプツプツ細かく充放電するようです。下のPUTでモータを動かしてる動画では、trip voltageを越えると、大電流がドバッと出て、キャパシタがほぼ空になりますが(導通維持電圧まで下がる)、そういう挙動ではない。
LTSpiceで実験。PUTはないのでpnp-npnで代用。
放電箇所の拡大。
PUT手に入れてきた pic.twitter.com/sFjo81IM5t
— Minori Yamashita (@ympbyc) June 3, 2016
デッドストックのPUTが手に入ったのでLチカの再現実験。石一つで点滅している。
トランジスタ2石の回路もちゃんと発振した。
2000uFを5Vまで充電させればモーターも動く。てことはマイコンも楽々動く。BLEビーコンはばっちり発信した。
PUTは現在国産品種は廃版となっていて、手に入りづらいかもしれませんが、海外ではまだまだ生産中のようなので、みなさんぜひPUTの消費を増やして、絶滅を避けましょう。
大容量コンデンサを使った間欠駆動という旨の記述を含んだ記事が、インターネットには皆無に近かったのに危機感を覚えたので、取り急ぎ書きました。
以上です。