例えば67歳で年収$75k (pre tax)の人が引退するとする。35% ($26.25k) from Social Security. その人は引退したら前の70%に抑えて生活するので$52.5k年間必要。Social Securityでは半分だけである。$26.25k足りない分は貯蓄から崩すが利子(5.25%)を引き出して生活するには$500k必要である。利子は3-5%なのでこれは楽観的なほう。
借金は早く返そう。Tax breakがあるかもしれないが、計算すれば借金を早く返した方が得だろう。
Social SecurityとMedicareはとても効率的で良い仕組みなのだが、それだけでは十分ではない。十分ではないということを材料に一部のダメな政治家は削ろうとする。それらの仕組みを支える政治家に投票することが有権者として重要だ。
Narratives are stories that connect a series of events over time, creating large-scale patterns. A narrative, or a story, is a series of events that happen.along the way in the search for a solution to a problem. p.182
Daniel Kahnemanによる研究で人間の記憶や印象は間違って残るという。2001年の同時多発テロから殺人で20万人もが殺されているが、そのうちイスラム教徒によるテロリストは50人だけである。しかし、人々の頭ではテロリストが殺人の原因であるという印象が強い。顔が見える被害者へのバイアスは強い。「一人の死は悲劇であるが、100万人の死は統計である」というのはJoseph Stalinの言葉。
"Veil of Ignorance"というのはどのような社会が望ましいかを考える際に自分のついている属性(人種、性別、土地)を全てとりはらって考えるという思考法である。車が道路にいる5人の人に向かっている。車を脇道にそらせば運転手が死に、脇道に逸らさなければ5人が死ぬ。Veil of Ignoranceの下では自分が5人側にいるか運転手側にいるかはわからないので車を脇道に逸らすという選択をするが、実際に自動運転の車を買おうとしている場合では異なる結論になるだろう。
格差が広がっている。PikettyのCapital in the Twenty-First Centuryが有名。(労働による収入の増加よりも資本から生まれる収入の増加が大きい。なので格差は広がる一方である。)Aghionによると、価値創造をして生まれる利益と既存の資本を貸すことにより生まれる収入(rents)とを区別する必要がある。不動産価格の上昇によって得られた富は社会に価値を創造していない。
Corporate social responsibility and social responsible investment. 企業は2つの原理から成っている。価値の創造と義務(accountability)である。ここでAccountabilityとは企業と取引している人だけでなく、企業の活動によって不利益を被りうる人(stakeholders)への説明責任である。工場の近隣住民(彼らは意思決定に携われない)と工場による公害の予防が良い例。また企業によるリストラによって発生する雇用保険の費用も例に挙げられている。
European Commissionによると企業の社会的責任とは、関係者(stakeholders)との対話と日々の企業活動に、社会的な環境の問題を自発的に組み入れることである。CSRは法によって定められるものではなく、社会全体として見た時に行うべき行為を企業が自発的に取り組むものである。A sustainable view of the enterprise. 長期的に見て行う投資(SRI)。Delegated Philanthropy. フェアトレードで取引された豆を使うコーヒー屋は、そのためなら少しコーヒーが高くなっても問題ないと思う客の需要を表している(代弁している/delegated)。Corporate Philanthropy. 会社が正しいと思うことに利益が減ることになったとしても取り組む。
error[E0271]: type mismatch resolving `<ndarray::OwnedRepr<f64> as ndarray::Data>::Elem == ndarray::ArrayBase<ndarray::OwnedRepr<f64>, D>`
--> src/network.rs:66:18
|
66 | *weights -= (&self.m * lr_t / &self.v.mapv(|v| v.sqrt() + 1e-7));
| ^^ expected f64, found struct `ndarray::ArrayBase`
|
= note: expected type `f64`
found type `ndarray::ArrayBase<ndarray::OwnedRepr<f64>, D>`
= note: required because of the requirements on the impl of `std::ops::SubAssign` for `ndarray::ArrayBase<ndarray::OwnedRepr<f64>, D>`
error[E0277]: the trait bound `ndarray::ArrayBase<ndarray::OwnedRepr<f64>, D>: ndarray::ScalarOperand` is not satisfied
--> src/network.rs:66:18
|
66 | *weights -= (&self.m * lr_t / &self.v.mapv(|v| v.sqrt() + 1e-7));
| ^^ the trait `ndarray::ScalarOperand` is not implemented for `ndarray::ArrayBase<ndarray::OwnedRepr<f64>, D>`
for y in 0..filter_height {
let y_max = min(y + stride * out_h, input_padded_height);
for x in 0..filter_width {
let x_max = min(x + stride * out_w, input_padded_width);
...
let img_slice = img.slice(s![.., .., y..y_max;stride, x..x_max;stride]);
let mut col_slice_mut = col.slice_mut(s![.., .., y, x, .., ..]);
col_slice_mut.assign(&img_slice);
}
Layerの型
最初はニューラルネットワークの層を表すtraitを作ろうとして挫折した。これは層を1つ1つ実装していく中で層の中には4次元の入力を受けるものと2次元の入力を受けるものがあるからだった。今考えると入力の次元数と出力の次元数でgenericsを使ったtraitを作れる気がする。Layer<Input, Output> where Input: Dimension, Output: Dimension みたいな。
Network [ Layer<Ix4, Ix4>, Layer<Ix4, Ix2>, Layer<Ix2, Ix2> ] # => compiles
Network [ Layer<Ix4, Ix4>, Layer<Ix4, Ix4>, Layer<Ix2, Ix2> ] # => error becauase the second output and the third input are different