2020年04月08日

アルゴリズム思考術

本日はブライアン クリスチャン 氏、トム グリフィス 氏の
アルゴリズム思考術
です。


仕事のメールの処理、
引っ越しの部屋探し、
採用する社員をどのように選ぶか、
人は生きていると無数の判断をしています。

それらは感覚的に行われていて、
普段は特に根拠を意識しなくても、
ほぼ正しい判断をしていることでしょう。

しかし、その判断をコンピュータで
行おうとすると「アルゴリズム」という
論理的な体系に落とし込む必要があります。

この過程がとても面白く、つきつめてみると、
人間は実は最も良い判断ができていなかったとか、
より明快な判断基準が存在していた、
ということがわかったりするのです。

そんなことを考察したのが本書です。
アルゴリズムを考察することで、
我々人間の判断の根拠を検証します。


逆に、少し難しいアルゴリズムの問題が
実際の現象にうまく例えられており、
理解が進む面もあります。

特にベイズの法則の事前確率は
本書で理解が深まりました。


個人的には、
コペルニクスの原理というのが
ベイズの法則に無情報事前確率を
用いたものにすぎない
という部分が特に印象的でした。


プログラミングをする人にお勧めの一冊です。
アルゴリズムの可能性の広がりを
感じることができるでしょう。



使用率が90パーセントから95パーセントに上がると、
駐車している車は5パーセント増えるだけなのに、
空いたスペースを探すのにかかる時間は二倍になる。


躊躇、すなわち行動をとらないことは、
行動をとった場合と同じく、
あとで取り消すことができない。


グーグルやビングなどは「検索エンジン」と呼ばれるが、
この呼び方は適切ではない。
正しくはソートエンジンなのだ。


ソートとなると、
例えば本が100冊入った書棚一つの整理には、
50冊の本が入った書棚二つを整理するよりも
時間がかかる。
整理すべき本が二倍あれば、
一冊あたりの行き先候補の数も二倍になるからだ。


コンピュータが扱う値nは容易に数千、数百万、数十億にも
なりえるということを思い出してほしい。
要するにコンピュータ科学者はとてつもなく
大規模な食事会を考えているのだ。


マージソートは家庭内の
小規模なソート問題にも応用できる。
この方法がこれほど広く使われている理由の一つは、
並列処理が容易な点がある。


検索のコストが下がれば、
それに伴ってソートの価値も下がる。


無秩序の害と秩序の害が定量化可能であり、
それらに伴うコストは「時間」という
共通の通貨で計られる。
(中略)
ときとして、無秩序には容易な選択よりも
大きな価値がある。
それこそ最適な選択なのだ。


スコアが三対二なら、
勝利チームの方が本当に強い確率は八分の五にすぎない……。


どれほどすぐれた整理のスキームがあっても、
検索すべき対象が多ければおのずと所要時間が長なる。
これは忘却のせいではない。記憶が増えたせいだ。
人間はいわばアーカイブになっていくのだ。


細かな雑用に手を出すばかりで
大きなプロジェクトへの着手を先送りする行為も
「手近な目標の達成に飛びつくこと」とみなせる。


先送りする者は念頭にある
未完の仕事件数をなるべく減らそうと
(普通の方法で!)行動しているといえる。
これが仕事を片づけるのに
まずい戦略だというわけではない。
戦略はすばらしいが、基準が間違えている。


低優先度のタスクが高優先度のリソースを
ブロックしていることが判明した場合、
ただちにブロックされているものの
優先度を「継承」して、
低優先度だったタスクの優先度を
一時的にシステム上で最高とする。


仕事を片づけたいという思いだけでは
スケジューリングの落とし穴を避けるのに万全ではなく、
また、重要度の高い仕事から片づけたいという
思いだけでもやはり足りないということだ。


最もどうでもいい事柄が片づかない限り、
最も大事な事柄に着手できないこともある。
このような場合は、どうでもいい事柄を、
それに妨げられている大事な事柄と
まったく等しい重要度を持つものとして扱うしかない。


新しい仕事が生じるたびに、
その重要度を完了までの所要時間で割ればよいのだ。
この数が今やっているタスクよりも大きければ、
新しい仕事に移る。
今やっているタスクのほうが大きければ、
今のタスクを続行する。


極端な場合、あるプログラムが実行に必要なアイテムを
メモリーに呼び出したとたんに、
別のプログラムに上書きされて追い出されてしまう、
という事態もありえる。


コンピュータがスラッシングを起こすと、
動作は徐々に停止するのではなく、
断崖から転げ落ちるように一瞬で停止する。
「実質的な仕事」がほぼゼロまで下がり、
この状況を脱するのはほとんど不可能になる。


ベイズの法則では、あてずっぽうでもよいから
とにかくなんらかの事前確率が常に必要とされる。


ある事柄がどのくらい持続するか予想したいのだが、
ほかに情報がまったくないという場合、
今までに存続してきたのとちょうど同じ時間だけ
これからも存続すると考えるのが、
可能な限り最良の推測となる。


コペルニクスの原理というのが
ベイズの法則に無情報事前確率を用いたものに
すぎないということに気づくと、
その有効性に関する多くの疑問に
答えることができるようになる。


町の人口と同様の基本的性質をもつ
さまざまな日常的現象が、ベキ分布を示す。
つまり大多数は平均を下回り、
少数の巨大なものだけが平均を上回るのだ。


ヘビに咬まれたことのある人や、
雷に打たれたことのある人は、
死ぬまでその話ばかり何度も語ることが多くなるだろう。


人が自分にとって関心のある事柄について話したり、
相手が関心を持つと思われる話を聞かせたりすると、
経験に関するデータがゆがめられる。
それによって、適切な事前分布を保つのが難しくなる。


メディアによる事象の取り上げ方は、
現実世界で実際に起きる頻度に対応していない。


次数の高い複雑なモデルのほうが
常に優れているわけではない。
このことは、機械学習をめぐる
きわめて深遠な真実の一つだ。


警察官が何も考えずに襲撃者の手から銃を奪い取ると、
やはり何も考えずにそれを襲撃者に
すぐさま返したという事例もある。
訓練のときに教官を相手に
何度も繰り返したとおりの動作だった。


クロス確認とは、与えられたデータに
モデルがどのくらいよくフィットするかだけではなく、
未知のデータにどのくらい適合するかという
「汎化性能」も評価することである。
逆説的だが、このとき
使用データ量を減らす場合もある。


言語においても、ラッソが自然に生じる。
長く話す労力と、
聞き手の注意力に対する負担という形で、
複雑さにペナルティーが与えられるのだ。
事業計画はエレベーター内で
話が終わる程度に圧縮される。


さまざまなタイプの機械学習のタスクにおける
正則化の効果から、
思考や行動をわざと抑えるほうが
よりよい決定が下せる場合もあるということがわかる。
最初に思いついた因子が最も重要と思われるなら、
ある段階以降は問題について考え続けることは
時間と労力の無駄になるばかりか、
劣った答えに至ることになるだろう。


ラグランジュ緩和では、問題の制約の一部を選び、
それをスコア計算システムに加工する。
つまり、「不可能」な事柄を「高くつく」
ものに引き下ろすのだ。


難しい問題に対しては、
あらゆる既知の決定論的アルゴリズムよりも
乱択アルゴリズムのほうが
迅速にすぐれた近似解を出せる場合もあることが、
最近のコンピュータ科学の研究によって
明らかになっている。


複雑すぎてそのままでは手に負えないものを
理解する方法として、
ランダムサンプル(無作為標本)の
詳細な検討はきわめて有効な手段となる。


アルゴリズムの授業で
『答えが一つ出るはずですが、正解ではないかもしれません』
と言われると――
そういわれた学生は
目からうろこが落ちた気分になる


ネットワークのバッファーが満杯になると、
一般にテールドロップと呼ばれる処理が行われる。
これは、バッファーが満杯になった時点で
あとで到着したパケットをすべて拒絶して
実質的に廃棄するというやり方を指す、
身も蓋もない言い方だ


プレイヤー全員がそれぞれ自分の利益となるように
合理的に行動している場合、
均衡はプレイヤーにとって
真に最良の結果ではないかもしれない


自分の物を盗まれれば非合理的に反応する
人間だと思われていれば、
実際に非合理に対応する必要はなくなる。
非合理的な人からは盗むのが
馬鹿らしいからである。


難しい問題を扱う場合には、
最短の時間で最も合理的な答えを出せる方法こそ
最良おアルゴリズムであり、
この場合にはすべての要素をじっくり検討したり
すべての計算を完遂したりすることは決してない。






engineer_takafumi at 23:52│Comments(0) ★一般書の書評 | ⇒ 仕事術、思考法・ツール

コメントする

名前
 
  絵文字