2017年8月に読んだ本を振り返る

突然の小池龍之介ブームの月。

ブッダにならう 苦しまない練習から心に残ったフレーズ。

ですから、まず他人に何かを言う前に、自分がそういうことをするのをやめて、確信や説得力を持って言える自分になる必要があります。 一番良いのは、まず自分を整えてから、他人を諭すことです。 二番目に良いのは、自分が実践できていない事柄に関しては何も言わないことです。一般的には何か言った方が良いと思われがちですけれども、あえて沈黙してみる。 そして三番目に、最も賢明でないのは、自分が実践できないことを人に諭すこと。 (第2章 不機嫌な心を静める - 自己を整える) ー 98ページ

耳が痛い。

過去と未来という脳内データ処理に飲み込まれずに、今、目の前のことに集中し直しましたら、明日の心配など消えてなくなってしまう、ということなのです。 (第2章 不機嫌な心を静める - この瞬間を生きる) ー 154ページ

今を生きるってことかな。


hideackの本棚 - 2017年08月 (14作品)
AERA7/24号
AERA7/24号
AERA編集部
読了日:08月05日

powered by Booklog

石膏像ドットコムさんのインタビュー公開

昨日と今日でカラーミーショップを利用してネットショップ運営をされている石膏像ドットコムさんのインタビューをよむよむカラメルで公開。

久しぶりに自分も取材に同行させてもらって一緒に話を伺ったり実際に石膏像が出来上がっていく様子を見ることが出来たのだけれども、とても興味深かったし石膏という素材自体がとてもおもしろい性質をもっているのだなと一応理系の自分としては興味を持ちながら作業を拝見していた。

お話を聞いていくなかでネットショップで解決できた問題がいくつかあることも教えていただけて*1、更にその部分の解決をお手伝いしやすい環境を整えるためにはどうすればよいのだろうかと取材の帰り道に考えたり。もっといろいろとできることがあると思うので。

pickup.calamel.jp

pickup.calamel.jp

*1:数字的なお話も混ざっていたので詳細は割愛

散歩, 古墳に関する本

散歩してコーヒー飲んで自宅に帰って料理して一日が終わるという夏休み何回目だろうかと思うパターンをなぞった。

図書館で 古墳とはなにか 認知考古学からみる古代 (角川選書) という本を見つけたので借りてみた。会社で不定期で開催されている「古墳ランチ」に参加して以来、少しずつ調べていたのだけれども想像以上に奥が深い。

古墳とはなにか 認知考古学からみる古代 (角川選書)

古墳とはなにか 認知考古学からみる古代 (角川選書)

立ちそばガール!, 近所でビール

立ちそばガール! そば このファストで奥深い世界 読了。チェーンからそうでないお店まで書名通り立ちそばのお店が紹介されている本なのだけれども、麺やつゆについての描写が細かくてすぐにでも食べに行きたくなった。

立ちそばガール! そば このファストで奥深い世界

立ちそばガール! そば このファストで奥深い世界

同僚(若者)と一緒にビールを呑みに最寄り駅近くの居酒屋さんへ。 いろいろ話せてとても楽しかった。別にアルコールがともわずともどういった形であれ、考えていることとかをシェアする場所作っていくの大事だなと思ったので夏休み明けから進めていこうと思った。

蕎麦屋で日本酒

一日中、高校野球を見るか本を読むかでやることがなくなったので、夕方くらいから近所の蕎麦屋にいって日本酒を呑んできた。板わさと天ぷらだけ先に食べて〆にもりそばを頂いて帰った。

f:id:hideack:20170812210542j:plain

synapticを使ってXORをニューラルネットワークで再現する

ニューラルネットワーク自作入門を読んでいてサンプルはPythonで書かれているのだけれども、Nodeで書けないかなと思って調べてみたらsynapticというnpmがあったので本で読んだことを踏まえつつXOR(排他的論理和)を再現してみることにした。

www.npmjs.com

XORを再現するために入力層2段, 隠れ層3段, 出力層1段でニューラルネットワークを構成してみる。

var synaptic = require('synaptic');
var Layer = synaptic.Layer,
    Network = synaptic.Network,
    Trainer = synaptic.Trainer;

function Perceptron(input, hidden, output)
{
  // create the layers
  var inputLayer = new Layer(input);
  var hiddenLayer = new Layer(hidden);
  var outputLayer = new Layer(output);

  // connect the layers
  inputLayer.project(hiddenLayer);
  hiddenLayer.project(outputLayer);

  // set the layers
  this.set({
    input: inputLayer,
    hidden: [hiddenLayer],
    output: outputLayer
  });
}

Perceptron.prototype = new Network();
Perceptron.prototype.constructor = Perceptron;

var myPerceptron = new Perceptron(2,3,1);
var myTrainer = new Trainer(myPerceptron);

var learning = [
  {input:[0,0], output:[0]},
  {input:[1,0], output:[1]},
  {input:[0,1], output:[1]},
  {input:[1,1], output:[0]}
];

var parameters = {
  iterations: 2000,
  shuffle: true,
  cost: Trainer.cost.MSE
};

var results = myTrainer.train(learning, parameters);
console.log(`Error rate = ${results.error}`);

// calculate
console.log(`xor(0,0) = ${myPerceptron.activate([0,0])}`);
console.log(`xor(1,0) = ${myPerceptron.activate([1,0])}`);
console.log(`xor(0,1) = ${myPerceptron.activate([0,1])}`);
console.log(`xor(0,0) = ${myPerceptron.activate([1,1])}`);

上を実行すると以下の様にXORを再現できている。(2入力の双方に同値が入れば0に近くなり、異値が入れば1に近くなっている)

$ node xor.js
Error rate = 0.004983333135247337
xor(0,0) = 0.051013797211575035
xor(1,0) = 0.932949883533232
xor(0,1) = 0.9341209212942756
xor(0,0) = 0.08390604881521503

上のプログラム中では学習回数を2000回にしてあるけれども各回数で試行に対しての誤り率をプロットすると以下の様な感じになった。1000回超えると収束していっているのがわかる。

学生時代に簡単にニューラルネットワークについて眺めるくらいはしていたり、今回買った本を読んで原理についてはわかったつもりなのだけれども実際に自分で試してみると学習された様子がわかって面白い。何一つXORのロジックを書いてないのにXOR回路が再現できている。

参考図書

ニューラルネットワーク自作入門

ニューラルネットワーク自作入門

参考サイト

postd.cc