TIM Labs
組合せ最適化-600.jpg
今日から使える!

組合せ最適化

離散問題ガイドブック

発行  2015年6月22日

サイズ  A5, 142頁  

ISBN  978-4-06-156544-9

価格  2,800(本体)  



組み合わせ数学、組み合わせ爆発、離散数学という言葉を聞いたことがあるだろうか。
最近は、ディープラーニング、機械学習という言葉がやたらに流行っていて、これこそが人工知能と思われていたりするようだ。

しかし、人工知能とは、そんなに狭くはない。ディープラーニング、機械学習などが人工知能であることには違いないが、それ以外にも人工知能はいっぱい存在する。
そもそも、何とか学習とかいうものは、十分な量の学習データが存在するとき機能するのだが、そもそもデータなどないけれど賢い解決方法はないか、何とかしたいという事柄、問題はいっぱいあって、それらも当然人工知能と呼ぶべきだ。

高校数学でも順列・組合せが今もあるのだろうか。
問題だけ見ると、なんだか問題のための問題、パズルと感じるものの、社会で必要としている数学と思われていないような気がする。
組み合わせ的な作業というのは、とても面倒で、人手でするのは大変なものが多い。
たとえば、

訪問先がたくさんあった場合、どの順番で回ってくるのが効率が良いか。(巡回セールスマン問題)
試合の対戦はどのように組み合わせると、より公平になるか。
倉庫や工場はどこに配置すればよいか。
服を作るのに布をどう裁断すれば無駄が減るか。
結婚のペアは、どの組み合わせが一番トラブルが減るか。(安定結婚問題)
水道管網、電力網は、どのようにすればよいか。
列車、飛行機、貨物船、、、、の運航スケジュール。
コンテナ船の積み下ろし。
学校の時間割をもっと簡単に作れないものか。
スタッフのスケジュールも同じだ。
。。。。。。


1997年にチェスで、Deep Blueがカスパロフを破った。
それから20年が経った。
去年あたりから、将棋や囲碁も、人間よりプログラムの方が強いと認識されるようになった。
そして、2017年12月5日に、同じアルゴリズムで、チェス、将棋、囲碁がプレイできるものができたと。

いつものように、DeepMind社からの発表である。
すでに、学習用の大量のデータを用意しなくても、学習だけで強くなるプログラムは発表されていて、たった数日でプロに圧勝したAlphaGoよりも強い AlphaGo Zero が発表されている。

今回の発表は、チェスも、将棋も、囲碁も、それぞれのゲームのルールなどを用意するだけで、同じアルゴリズムで(たぶん同じプログラムでかつ同じハードで)ゼロから学習して強くなってしまうことに成功したようだ。
次のグラフは学習曲線を示している。(以下の論文より引用)

AlphaZero_LearningGraph.png
チェスや将棋は数時間の学習で世界最強になり、囲碁でも数日で十分なのである。

これについて紹介している論文がこれだ。
細かい理論や技術について書いているわけではなく、概要がざっと書いていて、最後にチェスの棋譜も載っている。
チェスの棋譜については、論文で見るより、ネットで動画になったもの、さらに解説までついたものがいっぱいあるので、そちらを見た方がよいだろう。
たとえば、YouTubeにこんなのがある。Stockfishというのは、最強のチェスプログラム(だった)。

今回の AlphaZero ではなく、AlphaGo Zero についての、楽しく分かりやすい説明がある。まあ、英語だが、このくらいは大丈夫かも。

論文の内容の解説はネットにいっぱい出ているようなので、ここでは省略する。

それより、全然違う3つのゲームが、同じアルゴリズム、同じプログラムで学習して強くなってしまったことだ。
大量の学習データがなくても、このようなゲームに関しては自己学習だけで最強になれることを示したのは大きい。

つまり、二人零和有限確定完全情報ゲームは、同じプログラムで学習だけで強くなってしまうことができるのだろうか?
ここまでできると、汎用人工知能に一歩前進は間違いないだろう。

深層学習による自然言語処理.jpg
機械学習プロフェショナルシリーズ

深層学習による自然言語処理

著者  坪井裕太、海野裕也、鈴木潤

出版社 講談社

発売日 2017/5/25

サイズ A5, 239頁

ISBN-13: 978-4061529243

定価  3000円(本体)

深層学習の本というと、やたらに画像処理の本が多いのだが、深層学習の対象は相当広く、自然言語処理にも及んでいるのだが、なぜか本が少ない。
そう思いながら、「深層学習+自然言語処理」という条件で探していて見つけたのがこの本だ。
というのとで、そもそも本自体がまだ少ない分野なので、中身をほとんど確認せずに入手してしまった。

印象を手短にまとめると、最近の技術動向、研究紹介も多く、今現在の深層学習による自然言語処理の状況を概観するにはとても良い本であった。
しかし、技術を身に着けたり、勉強しようという場合には、なかなか大変な本である。
まず、深層学習、自然言語処理などについて、ある程度の知識があることが前提になっているし、また1冊200頁程度で多数のことを紹介しようとしているので、丁寧な解説には全然なっていないのは紙面の制約でどうにもならないだろう。

数式も結構出てくるのだが、とりあえずこの分野の状況が知りたかっただけなので、大部分の式は飛ばして読んだ。
きちんと数式も説明の図も理解するには、かなり高いレベルの基礎知識が必要である。

深層学習+自然言語処理 は、ここ数年で急に立ち上がった分野で、まだまだ問題だらけ、つまり研究分野としても若い分野でやることがいっぱいあるという感じである。
しかし、言語処理は、そもそもデータを用意するのが大変だし、さらに結果が良いのか悪いのかの判定もあいまいな部分があり、画像処理などと比べると、とてもぼやっとしていると感じた。

quaternionIntro (423x600).jpg
3D-CGプログラマのための

クォータニオン入門 [増補版]

著者    金谷 一郎
出版社  工学社
定価   2,400円(本体)
頁数   240ページ
判型   A5判
発売   2015年 1月16日
ISBN  978-4-87525-243-6



ちょっと前に読んだ 『ハミルトンと四元数』 がかなり難解だったので、ちょっと易しめの本を読もう、そして3D-CGに関連したものとして本書を選んでみた。

確かにそういう内容で、クォータニオンによる回転などの式変形が丁寧に書かれていた。

しかし、通常、 i, j, k を使って説明される訳だが、本書は違った。

まず、小文字の i,j,k ではなく、大文字のI,J,Kで説明されるが、まあいいかと思っていると、基底ベクトルが次の複素2次正方行列で与えられるのだ。

quaternion-d1.png これを元に、3次元の回転が延々と説明される。
3次元の回転を、複素2次正方行列の演算で延々と説明される。
まあ、ちょっと面食らうのだが、この3つの基底は、i,j,k の場合と同じ性質を持つので、同じ、同値なのだと納得させられる。

人工知能の最適解(390x600).jpg

NHK出版新書

書評:人工知能の「最適解」と人間の選択

著者    NHKスペシャル取材班
出版社  NHK出版
定価   780円(本体)
頁数   224ページ
判型   新書判
ISBN   
978-4-14-088534-5

AIについて知るには、ちゃんとした技術書を読むに限るが、AIについて非技術者に説明するときの参考に、AI一般教養書のような本もある程度目を通しておこうと思って読んだ本だ。
そういう場合、特定の著者が考えを述べた本より、取材を伴った本の方が向いていると思って選んだ一冊である。

人工知能が、最近どのような事に使われ始めたか、とくに海外での利用についての紹介がかなり含まれている。
世界では「犯罪」が非常に多く、犯罪予防のためにAIを既に活用している事例が多いが、日本ではそれほど報道されていない気がする。
要するに、犯罪予測システムがある。犯罪者が再び犯罪を犯すかどうかの再犯率を予測たり、裁判にもAIが利用されているようだ。

そして、労働者をAIが監視し、指導し、などということも当然のように起きている。
もちろん、ちゃんと使えば効果は大きいと思うが、使い方によってはAIによる管理社会になりかねない。

かなりのことが、現在専門家が行っているより上手に処理できる可能性がある。
それも、今、専門職として高く評価されている職業である。
政治家もAIにやらせたほうがマシという考え方は、既にかなり一般的と思うがどうだろう。

将棋についての話もかなりある。
もう棋士よりもAIの方が遥かに強いことは誰しも認めていることだ。
今では、AIの示す手と同じ手をどれだけ打つかで棋士の棋力を判定することも行われている。
こんなことになると、もう将棋界は終わりかと思うと、違った動きになっている。
棋士の凄いところは、負けることで落ち込んでいるのではなく、遥かに強い相手が現れたことで、まだまだ将棋には未開の分野があることが分かり、さらに探求したいということだ。
強さへのあくなき探求があるのだ。
そして、実際、最近の将棋の世界は、人工知能の影響で、今までの定跡、常識がどんどん変わりつつある。
将棋界は、一時はAIを毛嫌いしバカな事件も起こしたが、今の一線の棋士や若手はAIを大いに利用しようとしているようだ。

AIは人類にとって「天使か悪魔か」は、結局人間がAIにどう対処していくか次第だろう。
そして、シンギュラリティが来るという話もあるのだが、シンギュラリティが来る前に、AIが社会変革を迫ってくる分野がいっぱい出てくるだろう。
日本は、旧勢力が必死で変革を拒むと思うが、そんなことをしていると日本が世界に置いていかれる可能性が大きい。
AIは、ハードの進歩により、ますます加速しそうな状態で、これからどんどん様々な問題を投げかけてくるだろう。
特に、社会、労働に関しては激しい変化を伴うことになるのだろ。

いずれにしても、AIがコモディティ化して、AI無しでは社会が動かなくなる日は近いだろう。
人類は、AIを操縦できるほど賢いか、それが問題だ。

20171114181045695_0001 (423x600).jpg

ハミルトンと四元数

人・数の体系・応用

著者    堀源一郎
出版社  海鳴社
定価   3,000円(本体)
頁数   360ページ
判型   A5判
ISBN   ISBN978-4-87525-243-6





四元数はどのくらいの人が知っているのだろうか?
quaternion(クオータニオン)ともいうのだが、少なくとも名前くらいは聞いたことがあるだろうか。
立体の回転などが簡単に記述できるので、CGなどでも使われるので、詳しい意味など知らないけれど使い方だけは知っている人が結構いるのかも知れない。

ハミルトンというと、ついハミルトニアンを思い出してしまう。
古典力学を終えたら解析力学を学んだと思うのだが、そこではハミルトニアンが出てくる。
つまり、ハミルトンに由来した物理量である。
そんなこともあって、解析力学はハミルトンの力学とも呼ばれる。
そして、これがその後の現代物理学に繋がっていったのだった(と書いてあった)。

ハミルトンはそういう意味で有名なのだが、もう1つ有名なのが四元数である。
複素数の場合、虚数i があり、i*i = -1 なのだが、iひとつだけでなく、i,j,kの3つが、
i*i = j*j = k*k = ijk = -1  となると決め、
四元数を  q = a + bi+cj+dk  と表すと、四元数は非可換体になる。
つまり、1,i,j,k を4つの単位元として四元数を表わすと、綺麗な数の体系が出来てしまう。

詳しくは、本書なり、その他の四元数の本やネットで調べようl。

さて、本書の構成に従って、読み終えたところまでの感想を書いておこうと思う。

第1部 ハミルトン
 ハミルトンの簡単な伝記である。
 とんでもない天才であったが、天才過ぎてなかなか理解してもらえなかった。

第2部 四元数とその性質
 四元数の定義、記法、様々な性質が紹介されている。
 この部分は丁寧に説明されているので、ちゃんと読めば分かると思われた。

第3部 四元数の応用
 まず幾何学への応用として、平面幾何学、正多面体、平面三角形と球面三角形 が紹介されている。
 このあたりから計算がしばしば省略されてくるので、ちょっと頑張って計算しないと分からなくなる。
 そして、式が面倒になるに従って、誤植も残っているので、しっかり読んでいこう。

 それから、物理学への応用の話になる。
 質点系の力学、剛体の力学、幾何光学、ローレンツ変換が紹介されるが、まだ剛体の力学を読むというか、計算しているところである。
 このあたりになると、物理の話も出てきて、次第次第に分からないことが増えていくのだが、わかる範囲で式を追っている。

総括としては、とにかく読み応えのある本で、なかなか読み終わらない。

ブロックチェーン技術入門 (405x600).jpg

 Introduction to blockchain Technology

著者    岸上順一、藤村滋、渡邊大喜、大橋盛徳、中平篤
出版社  森北出版
定価   2,400円(本体)
頁数   160ページ
判型   A5判
ISBN   978-4-627-87171-7

最近、ブロックチェーンの話題が盛んである。それで、少しはブロックチェーンについて技術的な面を入門レベルでよいから何か読んでおくべきかということで本書を選んだ。
ブロックチェーンの本と言っても、単なるハウツウ本から、技術について解説している本、ブロックチェーンを使ったアプリ開発のための本、もっとブロックチェーンそのものに突っ込んで解説している本など色々だ。
本書は、技術的な仕組みを一応解説しているが、プログラムレベルなど詳細に関しては省略されている。
本書を選んだ理由はそれ以外もあるが、少々大人の理由が入るので、ここでは書かない。

ブロックチェーンの説明は、ネット上にも多数あり、ここにわざわざ書く意味も無かろうと思い、省略する。

本書は概説書なのだが、ところどころ技術的に細かいところも書かれていたりしたので、その一部を紹介しよう。
データを印刷可能文字にエンコードするのに、昔はBase64を使っていたが、誤解されやすい I と 1 と l、O と 0、などを取り除いた Base58が今はよく使われているらしい。

本書の著者は、NTTサービスエボリューション研究所の研究員とOB(大学教授)なので、NTTで取り組んでいるブロックチェーンを著作権管理への応用の解説などもある。

電子マネーは日本ではなかなか普及しないのだが、現在電子マネーが普及しているのがアフリカだと書かれていた。
それで、実際にはどうなのか、ちょっと調べてみた。
アフリカ・ケニアでは、M-PESAという電子マネーが非常に普及しており、GDPの4割を占め、都会への出稼ぎ者が給与をM-PESAで受け取り、そのままM-PESAで送金するのが多いそうだ。
そういう記事も見つかった。

ブロックチェーンは、仮想通貨のためのシステムではなく、もっと多くのことに使える中央集権的ない台帳管理システムであるが、それゆえに現在の中央集権的な利権構造との親和性はよろしくなく、先進国における普及には色々な技術以外の問題点も多くありそうだ。

140ページほどの中に、技術的なことから、将来展望まで書いているので、実際のところや、詳細、アプリ開発などについては他書を読むしかない。
それでも、色々なシステムをできるだけ公平に評価しようとしている点は評価できる。
ブロックチェーンというと、やたらに煽った本とかが多いが、こういう落ち着いた感じで書かれている本の方が、実際には役立つだろう。



強いAI弱いAI (409x600).jpg 強いAI・弱いAI
研究者に聞く人工知能の実像

鳥海不二夫著
四六判
274ページ 
ISBN978-4-621-30179-1
発売 2017年10月26日
定価 本体1,800円 (本体)


本書は、10月7,8日にあったMATH POWER 2017 で、丸善出版から一押しの本として紹介された本である。
そのときにはまだ本が完成された状態ではなく、大きな紙に印刷され、その紙を折りたたんだのをまとめただけで、製本、裁断が行われる前の状態でだった。
あと10日ほどで出るからと、製作中のホカホカの状態の本を見て、個人的には非常に懐かしいものを感じた。

本書は、今のAIフィーバー状態に対して、ちゃんとAIを理解して欲しいという本と言えばよいだろう。
AIがブームになるとき、AIは常に「何でもできる」と捕らえられる。
囲碁、将棋でプロ棋士に圧勝する強さになったこと、医者よりも正確に病気の診断が出来た例などがでてくると、これはすごい、何でもできると思われる。
つまり、AIを、過大評価も、過小評価ではなく、適性評価して欲しいということで、専門家へのインタビューを中心にまとめた本である。

強いAI、弱いAIについては専門家の考えも一部異なるし、そもそもAIには定義さえない。
それでも、何か特定のことに特化しただけの専門AIは弱いAIでしかなく、とても人の知能にかなうものではない。
さらに、専門家により、AIへの取り組み姿勢が違うことも分かる。つまり、まだ答えなどない世界であることが分かる。
意識、自意識、喜怒哀楽、欲望、、、、などがAIに入らないと、鉄腕アトムはできないと考えられている。

それでも、脳の構造がゆっくりであるが徐々に分かってきている。
今のディープラーニングは層の数をやたらに増やしているが、それは違うはず。
どうやったら意識、自我、そんなものが生まれてくるのか、まだ全然わかっていない状態なのだ。

シンギュラリティが近いうちにやってくると騒いでいるが、今のAIはそんなに賢くない。
人間を滅ぼしたりするような感情はまだ持てないレベルのAIの研究しかないので、安心して大丈夫だと。

・・・・・そういうことが延々と書かれている。

そういう内容なので、AIのプログラムを弄っているような人には、とくに読む必要はないようだというか、既に知っている内容だと思う。
しかし、周囲のAI誤解者、AI否定者などに説明するのは参考になる。

内容、つまり「強いAI・弱いAI」の区別と、現在のAIの状況を理解するには、特別な理解は必要なく、かつ本書は第一線で研究・活躍している関係者の話なので、多くの本のように、煽ったり、適当に誤魔化したりするところを避け、冷静にAIの専門家でない人が現状のAIを冷静に見ることができるようになる一助になると思う。
そして、この意味で本書の価値は高いと思う。

弱いAI,確かに何とかバカというレベルのAIでしかない。
でも、強力な専門バカなので、専門バカ的な仕事をしている人は、弱いAIに仕事を奪われる可能性は十分にある。

人にAIの説明するときに、本書をいろいろ利用しようかな。

9x9のナンプレのヒント数の最少は17個であることが 2012年1月1日、アイルランドの数学者Gary McGuireによって証明されている。
しかし、ヒント数16のナンプレが出来たと、先日東京青山であった、MATH POWER 2017 で発表された。

これはどういうことだろうか?
証明が間違っていたのだろか。
あるいは、発表が間違っていたのだろうか。

まずヒント数についてだが、通常の数独のヒント数(問題に最初から示される数字の個数)は17個が最少である。
その例を次に示す。
9x9-17.png
ナンプレの問題は、点対称に数字が配置されていることが多いのだが、ヒント数17では点対称の問題はまだ発見されていないらしい。この問題は、対角線に対して対象にヒントを配置したものであり、難易度はやや高いものの中級程度である。

ヒント数をもっと少なくするにはどうすれば良いだろうか。
ナンプレには、全部で27個の制約条件がある、縦9マスの数字が全て異なるというのが全ての縦列についあるので、これで9個の制約条件がある。横についても同様で、9個の制約条件がある。そして、3x3のブロック内の数字も全て異なるというので、また9個の制約条件があり、全部で27個の制約条件がある。
本当は、一部の制約条件は、他の条件から導かれるのであるが、とりあえず小さいことは無視しよう。

さて、ヒント数を少なくするにはどうすればよいだろうか。
制約条件を増やせば、ヒント数は減らせるはずである。


printfといえば、C言語のこれが有名である。

printf("hello, world\n");

というか、プログラミング言語C の本は、これで始まる。

実際にはprintfは、%何とかの形式で色々書式指定することにより、整形されたプリントのために使われる。

C言語のprintfが評価されたのであろう、このprintf が今では多数の言語に実装されている。
Wikipediaにちゃんとprintfのページがあり、英語版の方はしっかり書かれている。
programming languages with printf によると、25ほどのプログラミング言語が並んでいて圧倒される。

printf という関数あるいはメソッドは、実はプログラミング言語だけにとどまらず、シェルにも実装されている。
以下ではbashの例を示すが、他のシェルでも実装されているのではないかと思う。

まずは、基本的な使い方である。
単にメッセージを出したければ、echoを使えば良いだけなのだが、整形を色々したければ、書式指定文字列でできる。

$ greeting="Hello shell"
$ echo $greeting
Hello shell
$ printf "message:%s\n" $greeting
message:Hello
message:shell
$ printf "message:%s\n" "$greeting"
message:Hello shell

printfの出力をシェルの変数に代入して後て使いたいときがある。
そのときは、次のように、printf全体を$()で囲むとできる。

$ text=$(printf "message:%s\n" "$greeting")
$ echo $text
message:Hello shell

10進数、16進数の変換も可能である。

$ v=1000
$ printf "%x\n" $v
3e8
$ printf "%#x\n" $v
0x3e8
シェル上で浮動小数点数の演算も行いたい場合には、 bc(An arbitrary precision calculator language)を使えば可能であるが、そこまでの偏執狂者ではないのでシェル上では浮動小数点は扱わないことにしている。 そういう場合は、何らかのスクリプト言語を使う。
でも、どうしても全てをシェルで書かないと気がすまないシェル教徒を制止する気はない。

最近のコメント