「コンピュータシステムの理論と実装」という本を読みました

この本はですねー。

本当に読むのに時間がかかりました…。


多分、2年近くかかってると思う(;’∀’)

読むきっかけは、

ゼロから作るDeep Learningという本を読みました

で紹介した、「ゼロから作るDeep Learning」という本で、この本が紹介されていたからです。

Deep Learningを勉強していくなかで…NandとかXorとかがすぐに理解できなかったんですよね。

 

私は、ずっと文系で来て、学校でコンピューターのことを学んだわけではありません。

なんかねー、そういうことを勉強してきた人にかなわないなって普段思ってるんですよ。

 

読むのに時間がかかった理由は、内容が難しいというのにプラス、コードを読んで、それをエミュレーターで実行しないと理解が進まない(;^ω^)

そして、そのエミュレーターの使い方が英語でしか説明がない…(つД`)

ありがたい話で、nand to tetris(原題:Nandからテトリス)ってググるとどなたかが作ったサンプルにたどり着きます。

プログラマーとして、日々プログラムを書いてちゃちゃっと実行していますが、ここに人類がたどり着くのに、すごい、道のりがあったんだなと。

よくこんな仕組みを思いついたな~と感動があります。

 

本当にいい本ですよ。買ってよかったし、読んでよかった。勉強になったし、面白かった。

私のような文系出身プログラマーにはお勧めです!

 

本屋が好きな話

突然ですが、本屋が好きです。

最近、少なくなっちゃいましたよねー。(T_T) あっても、文具コーナーに押されてたりとか。

かくいう私も、アマゾンで大体の本を買っちゃいますが。技術書は、本当に置くところ少なくなってきましたよね。

昨日は久しぶりに本屋に行けて、かなり楽しかった(^o^)

本屋って、落ち着くカフェみたいないい雰囲気なんですよね。新しいきれいな本に囲まれて、目についた本を手に取ってパラパラめくるのが幸せなんですよねー。

昔、熊本から東京にでてきたばっかりのころ、熊本から一緒だった友達と待ち合わせするのは、いつも本屋でした。大体、どっちかが30分ぐらい遅れるのでwww 本屋なら、時間つぶせるだろうーってことでw

もっと本読みたいなー。と思いつつ、なかなか時間なかったりですね(^_^;)

年頭の目標にもしたんですけどねぇ(´Д⊂ヽ

小説とかも普通に好きですが、ハウツーモノも妙に好きです。

大体、どの本も

「メイクを変えたら人生が変わった!」

「この筋トレで人生が変わった!」

「この食べ物ですべての不調が治る!人生前向きになる!」

とか、そんなに人生変わるかーw

と思いつつも、ハッピーエンドが確約された小説みたいで楽しいんですよね!自分のためにもなる気がするし( ・∀・)

昨日はこれ買いました!

動かないゼロトレ https://www.amazon.co.jp/dp/4763137654/ref=cm_sw_r_cp_apa_i_ZlNQDbBTS5CBS

端的に言うとストレッチの本ですが、え!そんなふうに伸ばすの?というところがよい。ちょっとやっただけでも、なんか気持ちよくて、体によさげ…

しかも、簡単なのがよい!しばらくやってみます。

「マーケティングとは『組織革命』である」という本を読みました

いきなりですが、私はUSJに興味があります。

だいぶ昔(9年ぐらい前)に行ったことがありますが、その時は実のところ、関西の人たちが口をそろえて言う

「関西のディズニーやで!!」

という話で期待満々で行ったのですが、まぁ、あんまり期待ほどではなかったというのが本当のところで(;^ω^)

面白くなくはなかったのですが、ディズニーほどの豪華さとか統一感とか、きれいさとか、アトラクションの楽しさなどを比較すると見劣りするな、というのが本音でした。

行った時、唯一面白かったのが、「ハロウィンホラーナイト」みたいな催し物をやってて、なんだかボロボロの恰好をしたキャストの人たちがフラフラしながら

「わーっ」

とか言って追っかけてきたりして、

「すごい催し物だな。これはディズニーではできないだろうなwww いろんな意味でw」

と笑ったり楽しかったりした覚えがあります。

 

で・す・が!!

今やUSJってすごいらしいじゃないですか!(`・ω・´) みんな大阪行くとUSJ行くじゃないですかw 大人気じゃないですか。

ディズニーシーを超えたとからしいですね。

 

で、その奇跡のV字回復をした立役者が「森岡毅」という方で…という話は時々メディアで見かけていました。

森岡氏が最初にUSJでやったアクションが、私がUSJに行った時にたまげた「ハロウィンホラーナイト」だったらしくって、その話も自分の体験と重なって、森岡氏の本はぜひ読んでみたいなとずっと思ってました。

というわけで、「マーケティングとは『組織革命』である」という本を読みました。


この本は組織論の話でして、要は組織がダメだとマーケティングどころじゃないYO!!ってことだと思いました。

会社にとって、マーケティングが一番大切 → マーケティングがちゃんと動くように組織をちゃんとしよう

というのは私も激しく同意です!!

技術があれば売れる、ということはなく、お客さんは買いたいものを買うのです。

お客さんは買いたいものを生み出せなければ会社はつぶれてしまう…。なので、マーケティングが会社にとって一番大切というのは本当にそうだと思いますね。

 

ただ、あまり納得いかなかったのは、評価制度の話。

Aという部署があって、部長が1人、部下が10人いれば、

部下を1から10までの相対評価で評価しよう

というのが森岡氏の本著での主張でした。

 

うーん。だいぶ、アグレッシブだな…。

営業部とかだと、ある程度競争に身を置くのを受け入れていると思うので、これでいいと思うのですが…。

 

もう一つ、私とはここが違うなと思う点は

「共通の評価項目を作る」

というのは、私の会社では難しいということです。

弊社では、目標は、スタッフさん個人と相談して個人別の目標を作っています。

それは、スタッフさんにモチベーションをもって仕事をしてほしいのと、個性や創造性が必要だと考えているからです。

この話をしだすと長いので今度別の機会に分けますが、フランス料理と日本料理、同じ軸では評価できないですよね?

と、思っています。

 

評価って、社風とか、業績とかにじわじわ関わってくるもので。

社員さんって、あまり気にしてないようで、低い評価だともちろん気にするわけで。

 

評価制度って本当に難しいですね。(´ω`)

弊社でも、よくいろんな方のいろんな意見を聞いて、参考にしています。

 

社員の力で最高のチームを作る

以前、

1分間マネージャーという本を読みました

という本を読んだんですけど、ケン・ブランチャードさんの本をもう一冊読んだ、というのがこの本です。

 

で、1分間マネージャーよりもお勧めしたいのが、この本。

 

社員の皆さんに、モチベーション高く、いろんなことを自分で考えて自分でやってほしいというのは管理職の願いだと思いますが、それに対する実践的な回答があると思います。

弊社も、社員さんが自分で動く、自律的な働き方に取り組んでいます。

ストーリーになっているので、頭にも入りやすいし、内容は2時間ぐらいで読めます。

 

オープンソースのソースコードを読んでみる

ブログをちゃんと書いていく、と決めた以上…

このブログのサブドメイン脱却と、SSL化をしたいですね!(`・ω・´)

今年中には…!! って、あと344日あるから後でいっか。(典型的ダメパターン…)

 

さて、プログラムの勉強って、いろんな形があると思いますが、そこそこ書けるようになったら、今度はうまく書きたいと思うことでしょう。

リーダブルコードとか、そういうプログラムの書き方についての名著は多くあるので、そういうのを読むのもいいと思います。( ˘ω˘ )

自分で書いて、動かしてなんぼなので、じゃんじゃん書く、こまめにデプロイする、とかもいいと思います。

あとは、よいソースコードを読むことですかね。

 

オープンソースのソースコードとか、やっぱり有名なものだといいものが多いので、オススメです。

しかし、オープンソースのソースコード読んだらいいよっ て自社の社員に話をしたら、

「どうやって何を見たらいいのかわからない / 難しすぎてわからない」

という話があったので、書いておきます。

 

まず、自分の開発環境で動かせて、なじみがあるものがいいですね。

そういう目線で、簡単でとっつきやすいPHPで動作する、WordPressはどうでしょうか。

みんな大好きWordPress。このサイトもWordPressでできております。⊂(^-^)⊃

WordPressのソースコードはここにあります。

https://core.trac.wordpress.org/browser/

 

branches/5.0/src

 

って進んでいくと、WordPressの5.0のソースコードがあります。(今の時点2019/1/11で最新が5系)

こっから先は、各個人の好みとかで見たいもの見たらいいと思うんですけど、巨大なシステムなので、最初はちっちゃい機能とかがいいでしょうかね。

キャッシュがなければ追加するやつとかいい気がします。

branches/5.0/src/wp-includes/cache.php

https://core.trac.wordpress.org/browser/branches/5.0/src/wp-includes/cache.php

 

もちろん、普通にWordPressをダウンロードして動作させれば、動作するところも見れます。

デバッグ実行とかしてみると、さらにわかりやすいのではないでしょうか(^_^)ノシ

WordPressのインストールの手順などはこちらから。

 

いつか時間ができたら、こういうオープンソースのソースコードに寄与できたりできるといいなぁ…。

もっとプログラミングのスキルアップに役立つのではと思います。

PHPカンファレンスで勉強になったこと 

PHPカンファレンスへ行きまして、勉強になったことを書いてまとめておきます。

テストとかメンテナンス系を主に聞いておりました。

ちな、私のPHPとの付き合いは、もう10年ぐらいになりまして、今はちょっと遠ざかりつつ時々触るという感じです。

大体いろんなこと知ってるけど、まだ進化するし、

「あー、そんな一面あったんだ!」

とかなるような、学生からの付き合いの友達みたいな感じですね。

 

①PHP Unitの話

 

PHP Unitのバージョンが、そのうちサポート切れになるので、やった方がいい。

メルカリ社内でPHP Unitのアップデートをやっていった人の話を聞いたんですが、テストの書き方がだいぶ変わるので、前方互換を持たせて少しずつ移行していったそうです。

インテルのCPUが進化する手法をまねて、階段状に発展させていったという話は興味深かったです。

現場の話って感じで、地味な話題ながら、どこの現場でも困っている話の現実的な解決方法が聞けて大変よかったです。

 

 

②テストツールの話

 

楽天の人が次のツールの話してました。

 

・Wiremock

http://wiremock.org/

 

APIのテストに、例えば一回リクエスト失敗して再送信、とかそういう細かいところが試せるようなので、使ってみたいと思います。

 

・Codeceptionというテストフレームワーク

テストコードがPhp Unitより書きやすいらしい。

まー、弊社ではとりあえずPHP Unitでもいいかなとは思いますが。。。覚えておいてもいいかなと思います。

https://codeception.com/

 

③FPMの話

 

Zaimの人がFPMの話してました。

・Zabixでプロセス監視するといいよ~

・ログが充実しているので、ログを取るべし

だそうです。

 

FPMって時々色々あるんですよねwww 私はこの辺は担当じゃないのですが、なるほどでした。

 

④PHP7への移行の話

 

Cygamesの人が話してくれました。(なんとお弁当も出してくれました。スゴイ!!)

 

PHP CodeSniffer+PHPCompatibility

使うといいよ などなど

https://github.com/PHPCompatibility/PHPCompatibility

 

XhprofNewRelic使って負荷の原因追求と対策をしてる

(このお話は去年もお聞きしましたが、こういうソシャゲの会社さんの少しでも負荷を減らそうという努力は大変参考になります)

 

⑤テストドキュメントの話

 

楽天の人が話してましたが

 

テストドキュメント…概要

テストコード…自動でちゃんとやる

 

がよいバランス。わかりみ。

こちらのお話も、現場に即した現実味のある話でよかったです。

 

 

⑥ほかの言語の話

 

懇親会などでいろんな人から聞いた話

・並列処理はGO、普通のAPIとかはPHP ってのは結構主流

・Javascriptのフレームワークは最近はVue一択だね!!

 

だ、そうです。

 

 

無料で開催される大型勉強会としては、今回もクォリティ高く、勉強になりました!

懇親会でもいろんな方とお話ができて、よいコネクションができました⊂(^-^)⊃

 

勉強会に行くといいのは、やる気がもらえることですね!

休日でもこういうところに来るのは、

「プログラミングが好きだ!」

あるいは

「勉強しよう!」

という意識の高い人しか来てないのでポジティブな影響しかない💛

 

あと、みんな同じようなことで悩んでるんだな~ と思います。

誰だって、人数がいくらいても、ソフトウエアの現場では一気に何かを解決することはできないんですね~。

六本木ヒルズにオフィスがあったって、開発者が100名以上いたって、あんまりやってることは変わらないなという気がします。

「人狼を倒す銀の弾丸はない!」

なんですね。(この本読んだことないけどw ポチるつもりで張っておきます)

 

また、最近思うことですけれども、自分の中の完璧主義、チームの他者の中の完璧主義、お客様のニーズ、この3つに現実的な落としどころを見つけることも大事なことだと思います。

Alpha Go Zeroの論文の翻訳 その5

うわぁ。

以前、下記を書いて、「まだまだ続くよ!」とか言ってましたが…

Alpha Go Zeroの論文の翻訳 その4

7月20日のことでした。(;^ω^)

もう4か月も経ってるやんけ!!!( ゚Д゚)

いやー、光陰矢の如し。7月末からいろんなことがあったなぁ…( ˊᵕˋ )

…と、ついつい楽しい夏の思い出を思い返しちゃいましたが、本題は、Alpha Go Zeroの論文の翻訳の最後を書くことでした。

仕事でもAIの開発を進めておりまして、少し詳しくなったと思います。

では、Go!

 

原文はこちら。

https://www.nature.com/articles/nature24270.epdf

 

前回の続きということで、付録的な、「METHODS」という部分の後半になります。

 

Domain knowledge というところからですね。ではGo!

 


 

Domain knowledge

 

Domain knowledgeとは、専門知識のことである。碁のプログラムでいえば、碁のうちかた、どうやって強い手を繰り出すか、というような専門知識のことである。

Alpha Go Zeroの一番の功績は、専門知識なくして人間を超える知力を達成したということにある。

この功績を明らかにすべく、Alpha Go Zeroが使っている専門知識をトレーニングプロシージャーやMCTS内にかかわらず、数え上げてみることにする。

これらは、ほかのゲーム(マルコフゲーム プレーヤーが1対1で進める手によって勝率などが左右される、オセロ・将棋・碁などのゲームの総称と思われ。)に使うときは、置き換えられるものである。

 

①ゲームのルール

Alpha Go Zeroはゲームのルールについては、完全に知っている。MCTSのポジションのシミュレーションや最終手を打った時のスコアをつけるのに使われている。

ゲームは両方のプレーヤーがパスしたときと722手進んだ時に終了する。また、プレーヤーはルールにのっとって、有効な手を打つ必要がある。

②スコアリング

Alpha Go ZeroではMCTSのシミュレーションとセルフプレイのトレーニングの最中にTromp-Taylorスコアリングを使っている。

なぜかというと、韓国式・日本式・中国式にせよ、人間のスコアリングはよく定義されてないからである。

ちなみにAlpha Go Zeroで採用しているのは中国式である。(この辺、私が囲碁わからないのでよくわからなかったです(;´・ω・))

③盤面

盤面は、19×19の画像的なイメージで扱われる。ニューラルネットワークはこのボードに合わせた形になっている。

④盤面の回転など

碁のルールは盤面を回転しても反転しても盤面の強さは変わらない。

それを利用して、MCTSの途中で、盤面の回転と、反転状態もデータの中に入れることができている。

komiっていうものを抜かせば、碁は色を取り換えてもなりたつ。色を変えても成り立つことにより、盤面をどちらのプレーヤーから見るか、と言ったことが成り立たせられる。

 

以上が、Alpha Go Zeroが使っている専門知識の全部である。Alpha Go Zeroがディープニューラルネットワークを使っているのは、MCTSの末端のノードを評価するときと、手を選択するときだけ。

ロールアウトポリシーも使ってないし、ツリーポリシーも使っていないし、MCTSは他のヒューリスティックだったり専門知識によるルールによって評価されたりもしない。

ルール違反の手は使わない。プレーヤーの「目」を埋めることもしない。(多分、碁の話と思われ)

 

このアルゴリズムはランダムな初期パラメーター(ニューラルネットワークに入れるやつ)で始められた。

ニューラルネットワークの構造は、先進的な画像認識の構造である。ハイパーパラメーターは学習の中で変わっていく。

MCTSの探索パラメーターは1個前にトレーニングしたニューラルネットワークを使ったセルフプレイを最適化するために、ガウス過程最適化(でいいのかな?)を使って選択されていく。

より大きい実行のために(40ブロック、40日かける実行)MCTSの探索パラメータはより小さい実行でトレーニングされたニューラルネットワーク(20ブロック、3日)を使って再最適化される。

トレーニングのアルゴリズムは人間が介在することなく、自主的にアップデートされていくのである。

 

Self-play training pipeline

 

Alpha Go Zeroのセルフプレイのトレーニングパイプラインは3つに分かれていて、全部が非同期で平行に動作する。

ニューラルネットワークのパラメーターΘは継続的にセルフプレイのデータで最適化されていく。

Alpha Go Zeroのプレーヤーαは継続的に評価されていく。

ベストなプレーヤーはセルフプレイのデータを生み出すために使われていく。

 


今日はここまで~ ハァハァ(*´Д`)

1分間マネージャーという本を読みました

この前に、ケン・ブランチャードさんの別の本を読んだんですが、それに感動して即買いしちゃったのがこれ。

新1分間マネジャー――部下を成長させる3つの秘訣

とにかく、すぐ読めます。

内容は簡単。

A4のチラシ1枚でも収まるような内容ですが、物語形式になってるというところが深いわけですね(*ˊᵕˋ*)੭ ੈ。

でも、最後はエッツ ってなる展開でした(๏д๏)

私が大事だな~と思ったポイントは次の箇所。

①目標を、上司と部下で一緒にたてる。上司が部下に求めること、部下が自分の仕事だと思ってることはえてして違うから。一緒にする!

②重要な目標は毎日見直してもらう。

③フィードバックはこまめに。人間にとっての最大の動機付けは結果に対するフィードバックだから。
この点は目からうろこですね。ゲームも、結果がわからなければやりませんよね?そういうことなのですよね。

④よいことをしていればほめる(1分以内) やり方が間違っていれば修正する(1分以内)

⑤最初は相手の行動に対して厳しく、後で相手の人格に対して優しくしたほうがうまくいく
これは、さもありなんですね~。私も新人教育について、そう思います。
厳しいことは、後になるほど言えなくなったり、変に受け止められるんですよね。
最初に許されていたことを、後で注意されると、人は
「昔は許してくれていたのに、なんで」
「今更そんなこと言わなくてもいいじゃないか」
って思ってしまうものなんですよね~。
最初は厳しいことを言いづらいのはわかりますが、最初こそ厳しくしないといけないもんなんですよね。

⑥ほとんどの企業が資金の大半を従業員の給与に使うのに、従業員を育てるために使う予算はほんのわずか
よくない、そういうのほんとよくない。

実践しよ!!

 

「数学ガールの秘密ノート/場合の数」という本を読みました  

最近、AIの勉強をしてますが…

それって数学のことばっかり(´;δ;`)ううう

高校生のころ…一番苦手だった数学…。

しかし、やらねばねばねばですね!

 

で、リハビリ的になんか読もうと思いまして、これもamazonさんから

「ユー!これ読んじゃいなよ」

とおすすめされたのでポチりました。

 

結城浩さんの本だというのも大きかったです。

プログラムの本などでも、結城さんのJavaのデザインパターンの本を持っていますが、実にわかりやすく、そしてためになった覚えがあります。

 

んで、数学ガールの秘密ノートですが…。

内容は簡単だし、わかりやすい!

なるほど~ と頭の体操になります。⊂(^-^)⊃

しかし、変にラノベ調なんですよね~。(´・ω・)

 

3人のかわいい女子高生が出てきて、主人公の数学大好き男子がなぜかモテモテ的な設定なのですが…。

いるのかな?この設定…。

きっと、男子読者にはいるんでしょうね。

じゃないと、ただの数学の教科書みたいになっちゃうんだろうから。

 

中途半端感が気になるので、いっそ

「とある数学オタクな俺がモテモテハーレムなのだが ゼロから始める場合の数を考えてみた編」

とかタイトルを変えて、異世界モノとかにしてガチラノベ風にしてみるのもいいかもしれませんね。(ただの勝手)

 

データサイエンティスト養成読本という本を読みました

急に春っぽくなったり、寒くなったりしてますね!

私は、春が一番好きです!!⊂(^-^)⊃ ビバ!!暖かさ!

周りで風邪ひく人も多いので、気を付けてくださいね~。

私は、寒いとすぐ風邪をひくので(>_<)、3月は冬服を着る!って決めてます。

実のところ、4月の半ばまで冬服着ていたいぐらいですが、さすがに4月を過ぎて冬のコート着てるとファッション的にどうなの…(´・ω・) ってなりそうですからね~。

 

さてさて、表題の本を読みました!

AIとかに興味があって仕事でも使いますので~。

わかりやすくてよかったです⊂(^-^)⊃

プログラマー向けなので、一般の方にお勧めはしません。

 

以前、

ゼロから作るDeep Learningという本を読みました

って書いたように、「ゼロから作るDeep Learning」って本を読んだんですけど、今回読んだ

「データサイエンティスト養成読本」

から読めばよかった。

流れ的に、機械学習→ディープラーニングの方がわかりやすい気がします。

今回、「データサイエンティスト養成読本」読んで、「ゼロから作るDeep Learning」で書いてあったことであまりわからなかったことが、今わかるようになって、また「ゼロから作るDeep Learning」を読み直しています。