「ニューラルネット」カテゴリーの記事一覧

2017-12-01

TMS320C30の思い出

1980年代の終わりにとある大学のプロジェクトに参加した.10人くらいのプロジェクトでとあるシステムを研究開発していた.私はメカエンジニアとして参加したのだが,プロジェクトのメンバーのレベルの低さに唖然としたことを覚えている.システム制御にはTIのプロセッサ(当時はDSPと呼んでいた)TMS320C30を採用していた.ソフト担当者がこれのファームウェアを書いていたのだがCコンパイラを使っていた.DSPなんだからアセンブラで書けよと思ったが,それは大した問題ではない.びっくりしたのは「高速化」と称して計算をすべて整数で行っていたのだ.おいおい,TMS320C30をなぜ選んだんだ.TMS320C30は32ビット浮動小数点の積和を1クロックで出来るのが売りの最新鋭DSPだよ.整数の演算も1クロックだ.わざわざ実数を整数へ変換して計算するメリットなどない.桁あふれや丸め誤差が出て却ってマイナスだ.そのことを説明したが誰も分からなかった.TMS320C30を選んだのは「いちばん高いからいちばん性能が良いと思った」からだ.ああ,税金の無駄遣い.というよりこんな連中に給料払っているのが税金の無駄遣い.こんなんに教わる生徒は気の毒だ.

その後,私がシステムの改良をすることになって(なぜメカエンジニアがソフト書かなきゃならないのとは思ったが),ファームはアセンブラで書き直した.もちろん分岐命令は遅延分岐を使った.性能が一桁上がった.過剰性能になったので,次のバージョンではDSPを固定小数点のTMS320C50に変えた.コストが一桁下がった.この件で自動車メーカーでエンジン制御のCPUプログラム書いてる人の方が大学の先生より頭が良いことが分かった.最近のディープラーニングの(アプリの方ね)研究をしている連中はなんとなくこのときの大学の先生と同じ香りがする.

続きを読む
2017-11-28

ディープラーニングで衣類を折り畳む「ランドロイド」

衣類を自動で折り畳む技術が紹介されていた.技術者ががんばったのは分かる.分かるんだが,1枚畳むのに15分はちょっと...価格も185万円と車並だし...うーん,ディープラーニングの使い道を間違っている気がする.ディープラーニングは銀行員とか証券マンとか弁護士とかの,実はすごく簡単な仕事をしている連中の代わりをするのは得意なのだから,そういう連中の代わりに仕事をさせれば良い.洗濯物を畳むような高度な仕事は人間がやった方が良いと思うよ.なんでも機械にやらせる必要はない.

続きを読む
2017-11-24

if文のコストを知らない世代

ニューラルネットワークの高速化の論文にconditional computationが出てくるが,ため息が出る.アセンブラとかマイクロプログラムとか遅延分岐とか書いたことがないのだろうな.というかそもそもCPUの内部構造を分かっていない.予測分岐では対応できない.こんな連中ばかりだから,たまにハードを分かっている人が真剣にアルゴリズムを考えると性能がどかんとアップしてびっくりされるんだけど.中身を分かろうとしないのは最近の風潮なのかね.そんなんじゃGPUも使いこなせないだろう.わたしゃGPUは仕事の割に電気を喰うので嫌いだけど.

続きを読む
2017-11-22

計算のどこを2値化したのか

Binarized Neural Networksでどこを2値化して,どこは実数のまま計算しているかまとめた.

重みW:推論で入力と積をとるところは2値,学習のときは実数(ただし-1 to 1にクリッピング)
積和s:推論のときは整数.学習のときも整数.
活性a:推論のときは実数で積和sを計算するときだけ2値,学習のときは実数値も2値も使う

重み勾配gW:学習のときは実数.添え字bが付いているけど2値じゃない
積和勾配gs:学習のときは実数.
活性勾配ga:学習のときは実数.活性aの絶対値が1以上のときは0.

2値の部分が驚くほど少ない.また実数で計算したものを2値化しても計算上のメリットがない.Binarizedと言っている割に性能が出ていないのはうなずける.2値化したなら,消費電力は3桁削減できないとおかしいのにそうなってない.

続きを読む
2017-11-17

人工知能に珈琲2杯持ってドアを開けることはできまい

今朝,珈琲を2杯淹れてカップを両手に持って,左脇に書類をはさんで歩いた.この状態で部屋の入口に到達.ドアを開けなくてはならない.開けましたとも.で,思った.人工知能内蔵のロボットではこの状態でドアは開けられまいと.カップ2個とも左手で持って右手でドアを開けるか,右手にカップをもったまま右手の指でドアノブを回すかで良いんだが,この解を見つけるのにたぶん珈琲を100回こぼす.それをクリアしたとして,普通の5本指ロボットでは珈琲カップを2個左手だけで支えるとか,珈琲カップを1個右手で持ってさらに右手でドアノブを回すなんてことは,機構的にできない.やった.人間の勝利だ.ああ,猿でも勝てるか.私は猿くらいには賢い.

別の解もあった.珈琲カップを一度床に置いてからドアを開ける.うーむ,食べ物の入った容器を床に置くのはどうかと思えるが,これでも良いか.ただし,ドアは開けても手を離すと自動的に閉まるので,足でドアが閉まらないようつっかえ棒をしておく必要がある.こっちの方が難易度高いかな.

続きを読む
2017-11-17

derivative 1って何だ

Courbariauxさんの論文Binarized Neural Networks: Training Neural Networks with Weights and Activations Constrained to +1 or -1の中にderivative 1ってのが出てくる.1の微分?定数で微分するって何だよ.もう分からないよ.と寝てしまった.

今朝起きて考えた.x^2をxで微分すると2xだ.xによって傾きが変わるってこと.3xをxで微分すると3だ.xによらず傾きは3ってこと.ということは,1で微分するってのは関数の傾きが一定ならできて,微分の結果はその傾きだ.たぶんこれで合ってる.

続きを読む
2017-11-14

やっぱり自動運転車が人間の運転する車にぶつけられた

ラスベガスで止まっていた自動運転車が運転手の乗ったトレーラーにぶつけられた.自動運転車がどんなに安全に運行しようとしても,人間のドライバーのバカな行動には対応できない.それなのに,件の記事では自動運転車がよけなかったのが悪いと書かれている.ひどいな.自動運転車は悪くないだろ.人間同士だったらぶつけた方が悪いとなるだろ.でもこうなるのは予想できた.悪くなくても自動運転車のせいにされるのだ.この分では自動運転が許可されるのはずっと先だな.

昔のSFにこんな話があった.100人が乗った旅客機と1人が乗った飛行機が衝突コースに乗った.衝突は不可避だ.どちらもロボットが操縦していた場合,ロボットはどんな行動をとるべきかという話.1人が乗った飛行機を自爆あるいは墜落させて100人を救うのが正しいのか.いやいや簡単に結論を出せる問題じゃない.自動運転のAIはそんなことまで考えなきゃいけないのだ.人間より大変だよ.

続きを読む