強まっていこう

あっちゃこっちゃへ強まっていくためのブログです。

テレビの終焉 吉本騒動

ジャニーズの崩壊に続いて吉本の崩壊。テレビの歴史を作ってきた2事務所が今砕け散ろうとしている。

本日行われた岡本社長らの会見も終始保身で「おかちゃんはやめへんでー!」と自己保身ばかりで話にならない。

事の発端は宮迫氏らのウソで事務所側がすっかりタレントを信用しなくなってしまっているのもわかりはするのだがあの会見はマイナスにしか働かない。

しかし何が一番の問題かと言うとテレビ・新聞・週刊誌等のマスメディアがもはや成立しなくなっていること。

週刊誌は大手事務所が砕け散るようなスキャンダルをぶちまけ、なんとか小銭を稼ごうとしている状態。

テレビは叩かれるのを恐れて新聞・週刊誌のネタをそのまま垂れ流して小銭を稼ごうとしている状態。

これらはもはやタコの足食い。番組が潰れたり再放送出来なくなったりダメージは自分らにすべて返ってくることをわかっているのだろうか。

新聞は社員の大量リストラで既に死に体。新聞とテレビはオーナーが同じと言う世界的には稀というか、あらゆる国で禁止されていること(クロスオーナーシップ=メディア腐敗の原因の1つ)を日本はやってしまっており新聞社が受けるダメージは直接テレビも受ける。

テレビはもう何をやって良いかわからない状態だと思う。

そもそもこういった問題を四方八方から叩いて一体誰が得をするのやら。いっときの数字欲しさに致命傷を負う姿は愚か過ぎて哀れになってくる。

犯罪を犯したわけでもなく、法的には全く問題の無い人間達を犯罪者のように扱い社会的制裁を課す。法治国家としても崩壊している。

山口達也氏の問題、遡れば山本圭一氏の問題。どちらも不起訴なのにも関わらず重罪を犯した人間のような扱いには呆れ果てる。

ダメージを一番食うのは自分達メディア自身だというのが全くわかっていないことにも呆れ果てる。

吉本は自民党の仕事を受けたりネットに進出しようと試みたり様々工夫をしていたが今回の件で崩壊するだろう。

そもそもね、テレビは田中角栄の呪いの放送免許制度で局が少なすぎて見たくもないものを見せられる。でも今の世の中好きなものを好きな時間にネットで見ることができる。

だから今の子供ってテレビを全く見ない。ネット特にユーチューブしか見ない。

嫌なものでも強制的に見せられるテレビにはヘイトが集まる。ちょっとしたことで苦情があふれる。その苦情はヘイトを常々探している連中がたむろするSNSなどでさらにブーストする。SNSで広がったヘイトはテレビ局だけではなくスポンサーなどにまで波及しスポンサーの売上、テレビ局の広告収入と言う金銭面にダメージを与える。

このループが完成してしまっている。

このヘイトを放出しまくっている連中はネットでは自分の好きなものを好きな時間に見ている。だからこそ、嫌いなものを決まった時間に見せられるテレビに対するストレスは倍増する。

長引く不況、やりたい放題で無責任な官僚、自分達とお友達の事しか考えていない政治家に対してイライラが溜まっている土壌がさらに怒りを増長させている。

今回の件はテレビの本格的終焉を現していると思う。

謹慎だの契約解除の解雇だのされた芸能人はさっさとユーチューバーになれば良い。テレビがすべてと言うのは勘違いで、そこにはもう未来はないんだから。

山口達也氏も農家に住み込んでみた、みたいな感じでユーチューバーになれば良い。本来ジャニーズと対立し元SMAP3人を抱える飯島三智氏がネットタレント事務所を起こせば良いのに。

UUUM に媚びへつらっている場合じゃないと思うんだが。まぁあまりセンスが無いのかもしれないが・・・。一番ユーチューブに向いていない草なぎをユーチューバーにしてしまったし・・>・。

島田紳助あたりが戻ってきて一旗あげてくれないかな。

トヨタ大躍進の予感 - ものづくりの本質に目覚めた巨人


豊田章男からのメッセージ ~”自分”のためにプロになれ!~

なんか涙出そう・・・。

トヨタの現社長章男氏は前々からすごいなぁとは思っていたものの、最近Youtubeに専用チャンネルを作り、トヨタの新年社長挨拶を上げてくれています。

ものづくりを忘れたボンクラ共はこの動画をしっかり見て、何が正解なのかをもう一度考えた方が良いです、ほんと。

章男氏の言葉で感銘を受けたものを一部抜粋。

      • -

皆さんは、自分のために、自分を磨き続けてください。

トヨタの看板が無くても、外で勝負出来るプロを目指して下さい。

私たちマネージメントは、プロになり、どこでも闘える実力を付けた皆さんが、

それでもトヨタで働きたいと、心から思ってもらえる環境を作り上げていくために、努力してまいります。

他人と過去は変えられませんが、自分と未来は変えられます。

皆さん、一緒にトヨタの未来を作っていきましょう!

      • -

素晴らしい。こんなこと言われたら優秀なやつほど、やってやろうや無いけ、と思うはずです。

こんなこと言われたら優秀なやつほど、やってやろうや無いけ、と思うはずです。

「自ら行動する人よりも、管理する人。一芸に秀でる人よりも、欠点の少ない人。スキルよりもの年次。こうした、いつの間にかトヨタに根付いてしまった価値観ではなく・・・」

これは途中で出てくる言葉の一部ですが、実際、エンジニアがクソほど嫌いな価値観ですからね、これって。トヨタだけではなく日本中に蔓延してしまった価値観ですが・・・。

技術軽視で日本が死へと向かっているのは紛れもない事実なわけで。

一体エンジニアが何に憧れ、何をかっこいいと思い、どういう風になりたがっているか。それをわかっている企業は強いですよ。

副社長の河合満も、現場叩き上げの鍛造職人で、最初章男氏から役員の話が来た時も断るぐらいの職人で、「好きにやってくれ、責任は全部俺が取る。」なんてことを言うまさに「オヤジ」の相性にふさわしい人だったりしますし。


トヨタの副社長、河合満の日常

なんか動画見ているだけで涙が出そうになってきます。あぁまだこう言う人達が現場でがんばろうとしてくれてるんだな、と。俺もがんばんなきゃな、と。

エンジニアとして共感出来る部分が大いにあるので、感銘を受けまくりです。

トヨタのエンジニアは幸せでしょうね。トヨタ、伸びますよ、こりゃ。

日本はテレビがダメにしました。バラエティー漬けが本当に良くなかった。悪ふざけしたり人を小馬鹿にしてりゃ金になるとかクソみたいな概念をマスメディアでぶちまけ続けるべきじゃなかったんですよ。

ぜひ、こういう動画を見て、次世代の方々には考え方を一新してもらいたいです。

LSTM が良くわからない!グダグダ言わずに使い方教えろ!!と言う短気な方、どうぞ - その1

LSTM についていろいろ調べたもののうだうだ理屈ばっかこねくり回されてよく解らなくなってしまった方々、ようこそ。

パパッとコイツの使い方、教えます。

まずはコイツって何か?と言うと、あるデータの先を予想する奴です。株価予想したりします。文章相手に使うと自然言語処理が出来たり。

どうやるか?

[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]

的なデータがあるとします。こやつを

[ 0, 1, 2 ] [ 3 ]
[ 1, 2, 3 ] [ 4 ]
[ 2, 3, 4 ] [ 5 ]
[ 3, 4, 5 ] [ 6 ]

ってな感じで分けて行くんですな。
前の要素 3 な配列が学習用データで、後ろの要素 1 のやつが正解データです。
1つずつ値をずらしていって、正解データをその先のデータにすりゃ良いだけです。

前の配列の要素数 3 ってのは別になんでも良くて、モノによって調整する値です。

このデータを食わせて学習するわけです。

早速実践しましょうか。

まずはこの画像を見てください。

f:id:wolfbash:20181207232321j:plain

この画像は、2波長分のノイズ入り sin の値を学習させている途中結果を表示したものです。

青の破線。これは、sin の値にランダムなノイズを加えたものになります。
オレンジは、その段階で学習した結果の値をプロットしたものです。

徐々にオレンジが青の破線に近づいていっていることが一目瞭然かと思います。これは学習がうまく行って素敵なモデルが仕上がっている証拠です。

「'loss': ふにゃふにゃ」的な値が出ていますが、これは、間違い率です。学習がうまく行っていれば減って行くもんだと思ってください。

さて、お次はこの画像。

f:id:wolfbash:20181207232324j:plain

これは、学習した結果出来上がったモデルに対して、8波長分に伸ばしたランダムノイズデータを与えてみたものです。

2波長しか与えずに勉強していたのに、それより長い波長でもバッチリマッチしていますよね。
これは、与えられたデータよりも先のデータが予測出来てるってことになります。

さ、なんとなくわかったらお次はコード。

続きを読む

ディープラーニングが解らずお先真っ暗な人が読むと一気に目の前が明るくなる良著改め聖書: はじめてのディープラーニング

暗いと不平を言うよりも、 すすんであかりをつけましょう

読むべし。

どこぞのオライリーの赤いオコゼ本がさも聖書のように持ち上げられているんですが、あれ読んでも実際良くわかんねーっすって人多いでしょ?

もし持っていたら、メルカリで \3,000 で売れるんで速攻叩き売った方が良いです。

売ったお金を使って「はじめてのディープラーニング」を買いましょう。これ読んで解らなかったらもうディープラーニング諦めるしかないんじゃね?ってレベルでちょーーーーーーーわかりやすいです。

jupyter の入れ方、pyton の基本的な文法、matplotlib の使い方、numpy の使い方 と全て取っ掛かりで必要なものが丁寧でわかりやすく説明されています。

なので何も知らない人でもこの本を読むとディープラーニングの入り口まで優しくエスコートされつつ辿り着くことが出来ます。

ディープラーニングで必要な数学部分の説明は数学嫌いの人がより一層嫌いになれるような説明下手さ加減ですが、まぁ数学部分は気にせず、本の中にチョロチョロ出てくる数式もガン無視で OK です。大事なのはコードであり、数値の調整、どんな関数を引っ掛けていくか、が最重要要素なので。

こういった要素を実験する環境を整えることこそが一番大事なんですが、世のドキュメントだとその部分がおざなりで、ひたすら参入障壁を上げているだけという。初心者殺しの分厚い壁を築きすぎです。

この本は文中にコードがしっかり書かれていて大変わかりやすいです。ただ、コードの作りが微妙だったりはします。

グローバルな値がクラスの中にバッチリ入っていたり、何故か関数化されていないものがいたり、プロから見るとご法度系が散見されはしますが。

なので、この本に書かれているコードのロジックは正しいですが、書き方は間違っている事がある、と思って読みましょう。

数学が多いのとコードが微妙なことを除けばパーフェクトな本だと思います。オコゼ本を軽く超えて行く良書です。

自分は前半のエスコート部分は全て知っているのですっ飛ばしたのもありますが、2日で全て読み終わり、メルカルでささっと売りました。

それぐらいライトに読めますので是非。

ディープラーニングで実際簡単なものを学習させてみる

wolfbash.hateblo.jp

上の記事では、学習なしで AND回路を作ってみました。今回は前回のコードに対して学習のコードを加えます。

#!/usr/bin/env python

import os
import numpy as np

class NeuralNetwork():

  saveFile = 'train.npy'

  def __init__(self, inSize, outSize, hidSize):
    if os.path.isfile(NeuralNetwork.saveFile):
      w = np.load(NeuralNetwork.saveFile)
      self.w1 = w[0]
      self.w2 = w[1]
    else:
      self.w1 = np.random.randn(inSize, hidSize)
      self.w2 = np.random.randn(hidSize, outSize)

  def forward(self, x):
    self.z = np.dot(x, self.w1)
    self.z2 = self.sigmoid(self.z)
    self.z3 = np.dot(self.z2, self.w2)
    return self.sigmoid(self.z3)

  def backward(self, data, result, check):
    delta = (result - check) * self.sigmoidPrime(check)
    error = delta.dot(self.w2.T)
    delta2 = error * self.sigmoidPrime(self.z2)
    self.w1 += data.T.dot(delta2)
    self.w2 += self.z2.T.dot(delta)

  def train(self, data, result):
    self.backward(data, result, self.forward(data))

  def save(self):
    np.save(NeuralNetwork.saveFile, np.array([ self.w1, self.w2 ]))

  def predict(self, x):
    print("""
[Prediction]
Data: {}
Result: {}
    """.format(x, self.forward(x)))

  def sigmoid(self, x): return 1 / (1 + np.exp(-x))

  def sigmoidPrime(self, x): return x * (1 - x)

if __name__ == '__main__':
  sample = np.array(([ 0, 0 ], [ 0, 1 ], [ 1, 0 ], [ 1, 1 ]))
  sampleResult = np.array(([ 0 ], [ 1 ], [ 1 ], [ 1 ]))

  nn = NeuralNetwork(2, 1, 3)
  for i in range(1000):
    print("""
# {}
Data: {}
Result: {}
Prediction: {}
Diff: {}
    """.format(i, sample, sampleResult, nn.forward(sample), np.mean(np.square(sampleResult - nn.forward(sample)))))
    nn.train(sample, sampleResult)
  nn.save()

  challenge = np.array([ 1, 1 ])
  nn.predict(challenge)

このコードでは、学習が終了次第 train.npy に対して学習結果を保存します。
np は save と load の便利なメソッドを持っているのでそれを利用して、学習結果である重みを保存しています。
一度学習したら次回はそのセーブデータからデータをロードして初期値として使います。叩けば叩くほどどんどん賢くなっていくと言うわけです。

前回の NeuralNetwork と比べ増えているメソッドとして、backward、train、save、predict、sigmoidPrime があります。

forward から学習結果が吐き出されそれを、backward に叩き込み、実際の正解を比べてみて、重みを微調整して行きます。

(この例ではかなり簡易化しているのですが、通常は forward の処理が何個もあるので、backward の処理は forward と逆の順番で次々と処理を流していくことになります。)

backwardの詳しい処理に関しては数学の偏微分、全微分あたりがもりもり出てくるので、追わない方が良いです。幸せになれません。
sigmoidPrime をかましてふんふんすると良い感じになるんだな、ぐらい思っておいて OK です。ディープラーニングで大事なのって数学の知識ではないので。
そこいらは、数学好きな変態達が便利なものを作ってくれるのでそれを使うだけで良い、ぐらいに思っておいてください。

エフェクターの作りは知らんが、そいつらを使って音は作れる、そんなノリがマジで大事ですんで。そうしないと心がブチ折られ続けます。

世のドキュメントはまじで数学知識を要求しすぎですって。普通に使う分には要らないでしょ・・・。
実は簡単すぎるからってそこで敷居を上げたがっているとしか思えない。

で、結局深いことする時は数学知識がトップランクの連中がよってたかっても解らず、なんとなくいろいろ数値いじって関数かまして、なんとなくうまく行ったヨ!とかやってんでしょ?
秘伝のレシピを作るノリで。じゃぁ最初からなんとなくうまく行ったよ!をみんなにやらせるべきだと思いますわ。

今回こそボヤくまい、と思ったのに結局ボヤくと言うね。

話戻します。

train は実際の学習処理になります。サンプルデータとその回答データを食わせて学習させます。

学習は、1000 回ループで回しています。やればやるほど正解率が上がっていきますが、物によってはやりすぎも良くなかったりします。過学習とか言う状態です。そういう話もまたおいおい。

学習させた NeuralNetwork に値を与えて予想させるのが、predict になります。

ある程度学習を回した回路に 1, 1 を与えると

[Prediction]
Data: [1 1]
Result: [0.98882596]

が返ってきます。0.98 ですが、まぁ 1 に近い値が出てますね。なんじゃこのポンコツマシーンはと思いましたか?こんなもんなんす。

で、これは回帰って言います。ディープラーニングには複数種類があります。回帰は株価予想や業績予想など任意のデータから結果の数字を予想するものです。
一方分類ってのがあります。これは、グループ分けになります。その他諸々ありますが、まぁそんなのもおいおい。

次回は、今回みたいな糞の役にも立たないポンコツマシーンではなくて、もうちょっとマシな代物を作って行きます。

ディープラーニングは難しすぎ、とほっぽり出したプログラマへの助け舟

ディープラーニング、気軽な気持ちで調べてみるも「なんじゃこりゃ!」と撤退。ありますよね。

何がニューロンだ、何がシナプスだ、何がニューラルネットワークだ!うざいんじゃボケェ!!

こっちはなぁ、脳みその仕組みを知りたいわけじゃねぇんだよハゲが!!と思うでしょ?

そもそもね、インターネッツなウェッブサイツを作ろうとしているのに、さぁどうやってネットワークカードが通信しているか、その理論からお教えしましょう! なんてことを言っているのと同レベルのドキュメントばかりでうんざりなんですわ。

変な数式なんてこっちは知ったこっちゃ無い。道具の成り立ちなんて知るかよと。その使い方だけ教えろこのポンスケが、ときたもんです。

こんなの読んでね、プログラマに理解しろっつー方が無理ですよ。そんなに暇じゃないんでイラッイラします。

パーセプトロンだかパンシロンだか、デストロンだか知りませんが、変な丸と線を書いてキャッキャ喜んでんじゃねぇよ、と。何故に猫も杓子もすでにどこそこにあるようなものと同じものを書くんでしょう。自分が書いたらもっとわかりやすい絵になるとでも思ってんですかね。

なので、今回はプログラマ視点でこいつの倒し方のコツを伝えます。突破口を開くきっかけになれば、と思いますね。プログラマはね、コードが真っ先に来ないと理解出来ないもんなんですわ。

と言うわけで、はいコード。

#!/usr/bin/env python

import numpy as np

class NeuralNetwork():

  def __init__(self, inSize, outSize, hidSize):
    self.w1 = np.random.randn(inSize, hidSize)
    self.w2 = np.random.randn(hidSize, outSize)

  def forward(self, x):
    self.z = np.dot(x, self.w1)
    self.z2 = self.sigmoid(self.z)
    self.z3 = np.dot(self.z2, self.w2)
    return self.sigmoid(self.z3)

  def sigmoid(self, x): return 1 / (1 + np.exp(-x))

if __name__ == '__main__':
  sample = np.array(([ 0, 0 ], [ 0, 1 ], [ 1, 0 ], [ 1, 1 ]))
  sampleResult = np.array(([ 0 ], [ 1 ], [ 1 ], [ 1 ]))

  nn = NeuralNetwork(2, 1, 3)

  print("Prediction: \n" + str(nn.forward(sample)))
  print("Correct: \n" + str(sampleResult))
続きを読む

gulp で PHP + twig + pug + SCSS あたりで快適にコード書きつつ js、css を min 化するそんな素敵ライフを送る方法

UI のプロトタイプとかちゃちゃっと書きたい時に pug で書いてたりはしたんだけど、pug ばっか書いてすっかり中毒になると、もう素の HTML で twig なんて書いてらんない体に。
pug を twig に変換するやつを書いてくれてる人もいて試しちゃみたけど、どうもイマイチ。ふと思った。pug の | 使って twig を pug 側に書いちまえばええんでねぇの。

こげな感じで。

doctype html
html(lang="ja")
  head
    meta(charset="utf-8")
    meta(http-equiv="X-UA-Compatible" content="IE=edge")
    meta(name="viewport" content="width=device-width, initial-scale=1")
    |{% block meta %}{% endblock %}
    link(href!="{{ siteUrl('css/main.min.css') }}" rel="stylesheet")
    link(href!="{{ siteUrl('fa/css/fontawesome-all.min.css') }}" rel="stylesheet")
    |{% block head %}{% endblock %}
  body
    script(src!="{{ siteUrl('js/jquery.min.js') }}")

for だの if だのも全て | 使って書いちゃえばイケる。快適ライフ過ぎてあっという間に1つアプリを作った。そのうち紹介したりしなかったりするかもしらん。

機嫌が良いので gulpfile.js を公開しようそうしよう。パスはこんな感じを想定。** はディレクトリ階層問わずってこと。

続きを読む