テストステ論

高テス協会会長が, テストステロンに関する情報をお届けします.

強くなってる

今日の筋トレだが

だった.

デッドリフトの最後にはシュラグを3発入れるようにしている. おれは僧帽筋への刺激がテストステロンを高めると信じている. なぜならば, テストステロンが高ければ僧帽筋が発達する. これは僧帽筋がテストステロン受容体が多いからである. では逆に僧帽筋を刺激すればテストステロンが高まるのではないか. そう考えるからである. このシュラグは僧帽筋を破壊する. 肩がぶっ壊れるのではないかというダメージがある. だけど, そういう心配自体が筋肉への刺激を弱めてしまう. 忘れろ. 壊れたらそれまでの人間だったということだと諦めろ.

実は, スクワットについてはもう1発くらいは出来る. デッドリフトも本気を出せばもう1発くらいは出来るだろう. 毎回, 少し余すようにしている. なぜかというと

akiradeveloper.hatenadiary.com

で説明したように, 筋肉を一気に収縮させてレッドゾーンを超えることが出来ればそれで刺激は十分だと考えているからだ. それで結果的に強くなっているし, おれはしばらくこの理論でやっていこうと思っている.

レッドゾーンを超えられるならば極論をいえば1発でもいい. しかしおれは, スピードが維持できる限りは続けるようにしている. なぜかというと, レッドゾーンを超えること「だけ」が筋肥大への唯一のシグナルとまでは考えていないからだ. 例えば, 筋肉を物理的に破壊することも必要なことだと考えているし, 疲労物質を溜めることも必要だと考えている. トータルに考えた結果, スピードが維持できる限りはやる, それ以上はやらないという戦略をとっているにすぎない. それに, 1発目でたまたまレッドゾーンを超えられていない可能性もあるので, 何発かはやった方が安心出来る.

このトレーニング方法は, スクワットとデッドリフトを一日に行うことを可能にするし, トレーニング後でも極度の疲労で何も出来ないということにはならない. 実際おれはトレーニング後にカフェに行きDeep Learningについて本を読んできたし, まとめ記事も書いた. こういう意味で, このトレーニング方法は社会人にとって特にオススメしたい.

筋肉は追い込まなければいけない. しかし「追い込む」というのは日本企業が解釈するところの「潰す」というのとは違う. ではなく, 「この一週間で筋肥大して強くならねえと次は殺される」と筋肉に脳に恐怖を植え付けることである. そうした上で十分な栄養と睡眠をとれば, 筋肉は肥大するのだ. 潰す型のトレーニングでも伸びはするだろう. だからそれが正しいと思ってしまうかも知れないが, おれは間違ってると思う. そういうトレーニング方法はいつか壊れるし, 伸びがいつかは止まってしまうのだ. おれたち社会人はボディビルやパワーリフティングの専門選手でも筋肉系ユーチューバーでもないから, 一日中飯を食ってるわけにはいかないし一日10時間寝るわけにもいかない. だからなおさら, 安全に向上し続けられるトレーニング理論を選択する必要があるのだ.

広告を非表示にする

ゼロから作るDeep Learning まとめ(3)

今日は7章「畳込みニューラルネットワーク」を読んだ.

過去:

  • ニューラルネットワークとの違い
    • ニューラルネットワークは全結合. つまり全部の重みが平等に扱われる. 実際に画像も1次元データにしてから学習した
    • しかしそれは「形」の情報を破棄してるに等しい. 形とは例えば画像では, 近いピクセルは近い色のことが多いとか
    • Affineレイヤ(全結合の内積プラスバイアス)の変わりにReLUをConvolutionレイヤとPoolingレイヤで挟む
    • 出力に近い層ではやっぱりAffineが使われる. 出力としてはsoftmaxが使われることが多い
  • Convolution
    • 画像でいえばフィルタ
    • パディング = 外枠を埋めて出力を大きくする
    • ストライド = フィルタを当てる間隔を大きくして出力を小さくする
    • 入力とフィルタのチャンネル数(RGBとか)は揃える必要がある(一般化するとストライドやパディングの次元以外は揃える必要があるということだとおれは解釈した)
    • バッチ化に拡張可能
  • Pooling
    • MaxプーリングやAverageプーリングがある
    • Maxプーリング = フィルタ内の最大値をとる
    • プーリングでは通常, ウィンドウの大きさ = ストライド (つまりオーバーラップしない)
    • 効果: 微小な位置変化に対してロバストになる (1ピクセルくらいずれていてもウィンドウの中に収まるから)
  • 実装方法
    • 畳み込みを愚直に実装するとforループとなる. しかしこれは性能が悪い
    • 行列をim2colという関数によって変換してしまい, 畳み込み = 内積計算に帰着させる
    • im2colは畳み込みのオーバーラップの分だけ行列が大きくなる. 従ってメモリは食うが, numpyやGPUは行列計算は死ぬほど速い
    • Convolution: 内積に帰着しているため, 計算式はAffineと同じ. 逆伝播も同等に実装出来る
    • Pooling: Maxプーリングの場合, ReLU = max(x, 0)と同じ. 逆伝播も同様に実装出来る
    • im2colで入力を1つの行列に帰着させてしまうことによって, AffineとReLUと同じにしているところがうまい
  • CNNは何を見ているのか
    • 画像でいうと1層目はエッジやまとまりとかプリミティブについて認識している
    • 2層目以降でより上位の認識(ものとか)が出来るようになっていく
  • CNNの実例

この前TwitterでCNNがグラフについても適用出来るようになったぞ!グラフも畳み込めるぞ!というのを見てなんとなくしか分からなかったけど重要なのは,

  1. CNNが形状を保存した上での学習であること
  2. それはその形状に対して畳み込みが定義出来れば実現出来ること
  3. その形状がこの本では3次元であり, Twitterで見たものではたまたまグラフだったということ

で, 対象にどういう形状を見出すかということが一つのポイントになってくるのではないかと思っている.

ゼロから作るDeep Learning まとめ(2)

今日は6章を読んだ.

過去:

6章 学習に関するテクニック

  • パラメータの更新方法
    • SGD: 勾配方向に動くので傾きがゼロになると終わる. ジグザグ降りていくことがあり無駄
    • Momentum: ボールを転がす. ジグザグが緩和
    • AdaGrid: 大きく更新されたものは学習率を小さくする
    • Adam: Momentum + AdaGrid
    • どれを使えばいいか?: SGDは悪い. Adamが流行ってる
  • 重みの初期値: アクティベーション(活性化関数の出力)において偏りがないことが良い条件. 偏りがある = いっぱいノード持ってる意味ないじゃん. 特に0,1に偏った場合, sigmoid的に傾き0になるため, 学習が出来なくなる(勾配消失)
    • 重みゼロは明らかにまずい. みんな同じになってしまう
    • Xavier: sigmoid, tanh向き
    • Han: ReLU向き
  • Batch Normalization
    • アクティベーションの分布を適度な広がりを持つように調整するレイヤ. 有能
    • 学習の高速化
    • 過学習の防止(Dropoutを使う必要が減る)
    • 重みの初期値に対してロバストになる
    • DLと相性が良い
  • 過学習 (overfitting)
    • Weight Decay: 正則項 = 大きなパラメータに対するペナルティ
    • Dropout: 過学習の要因の一つである「パラメータが多くて表現力がありすぎる」に対する解. ランダムにノードを落としていく
    • ハイパーパラメータの検証にはテストデータとは別のものを使う必要がある. (検証データという)

ローグワンの感想

今更ながら観た. Youtubeについ最近追加されたもよう. 500円.

おれはスターウォーズ大好きなんだけど, ディズニーに買収されたというのもあるし, それによってなのかEP7になってにわかが湧いてきたなという感じがして, 映画館に行くのが億劫になった. なのでローグワンも観たかったんだけど, 映画館に行きたくなかった. 興行的には成功してるみたいだから, それが勝ちという価値観ならそれは結構だけど, おれはもう映画館には行きたくない. EP8もEP9も映画館では観ない.

トーリー

ローグワンは, 反乱軍がデス・スターの設計図を入手するストーリー, すなわちEP4のちょい前の話を描いた作品. デス・スターの設計者の娘のジンが, デス・スターの破壊を目論む反乱軍に父親のことを聞き出す目的で拉致されて, 結果として仲間になるところから始まり, デス・スター開発のため帝国軍に拉致られた父が決死の覚悟で送ってくれたホログラムからデス・スターのコアに弱点があることと設計図を手に入れる必要があることを知り, 最終的に設計図を手に入れるというお話.

だけど, 設計図を宇宙で待機している軍艦に送信した後, デス・スターの攻撃によって地上にいる反乱軍は全員死ぬというかなり悲しい結末. その後には軍艦にもダースベイダーが乗り込んできて人間がばっさばっさ斬り殺されたけど, 設計図が入ったカードをなんとかリレーして渡してEP4での作戦に繋がる. たくさんの人間が希望のために犠牲になったという描写を強めた.

ふたつのテーマ

この「希望のためにたくさんの人が犠牲になることは尊い」というのがローグワンの主たるテーマなんだけど, 「人間とロボットの共存」というもう一つのテーマがあるとおれには感じられた.

最近, AIとかそれを応用したロボットが盛んに開発されていて, 2045年にはAIが人間を上回るシンギュラリティなどというものも提唱されており, いかにして人間とロボットが共存していくかということが, あまり日本ではテーマになってないけど, IT先進国のアメリカではテーマになってるのではないかと思う.

ローグワンではK-2というロボットが自分を犠牲にしてドロイドたちの侵攻から主人公たちを守るシーンが描かれている. ロボットも人間と同じく感情がある・一緒に冒険をしているうちに愛情がわいたという表現だと思った.

昨年出たタイタンフォール2でも, 人間とロボットが通じ合えること・信頼し合えることがテーマとなっている. この動画はストーリーの最後のシーンだが, ロボットのBTが自分を犠牲にして人間のクーパーを守っていてかなり感動的だ.

youtu.be

タイタンフォール2では「信じて」という言葉をBTが2回使っていて, 直接的に人間とロボットの信頼関係を表現している.

youtu.be

ヤリチン ディエゴルナ

最後に, ローグワンに出てくるキャシアンアンドー役のディエゴルナというメキシコ人俳優がクールでかっけえと思ったのだが, 調べてみるとこの男, かなりの浮気野郎で, カミラソディとかいう超かわいい奥さんがいて妊娠中にも関わらずラテン系美女と浮気しまくる最悪のヤリチン. カミラソディが超タイプなだけにクッソむかつく.

mk32kaigaidrama.com

元妻カミラソディ激マブです.

f:id:akiradeveloper529:20170506091340j:plain

広告を非表示にする

Overwatch: マウサーはみんな使ってる!?マウスバンジーとは?

DeathAdderからG403にマウスを変えて, 不満に思ったことがある. それはG403のケーブルがすごく太いことだ.

ケーブルが太いと, マウスを振った時に少し抵抗になり, エイムに影響する. DeathAdderのケーブルは柔らかいので, ぶんぶん振れて鬱陶しいと思うことはあったもののエイムに影響している感じではなかったが, G403の場合はこのままでは快適にプレイ出来ないレベルだった.

マウスバンジーとはケーブルを途中で固定することによって, 必要な長さしか振れないようにするためのものだ. こうすることで, ケーブルの束ねた部分がぶんぶんと振れることもなくなる.

おれは, BenQのやつを買った.

BenQ ゲーミングケーブルアセンブラー ZOWIE CAMADE

BenQ ゲーミングケーブルアセンブラー ZOWIE CAMADE

G403のケーブルは業界の中でももっとも太いクラスなので, 使えるマウスバンジーは限られる. BenQのやつはかなり太いものにも対応出来るものということだったが, G403のケーブルはぎりぎりだった. おそらく他のマウスバンジーではG403は扱えなかったと思う. これからマウスバンジーを買う人は参考にしてほしい.

これからも快適にキルしていきたい.

ゼロから作るDeep Learning まとめ(1)

とりまDeep Learningでも学ぶかみたいな感じで読んでる. 非常によく出来た本で, 分かりやすい. TensorFlowだとかフレームワークを使えるようになることが目標.

GWに読み終わりたい. 3日で5章まで読んだ. ここらで一旦まとめておく.

1章 Python入門

  • PythonとNumPyの紹介. NumPyは本を通じて使っていくが, 別に難しいことはない
  • ブロードキャストは単純な積(内積ではない)を簡単に表現する

2章 パーセプトロン

  • 多層パーセプトロン(というか理論的には2層)を使えばいかなる関数も表現出来る. なぜならばコンピュータを構成するNANDが実現出来るから

3章 ニューラルネットワーク

  • パーセプトロンはステップ関数を使っていたけど, これをシグモイド関数などの滑らかな関数に変更することによって学習が出来るようになる(勾配法では微分を使うから, ステップ関数は傾きゼロでまずい)
  • 線形関数は使ってはいけない. なぜならばそうすると層を重ねることの恩恵が得られないから(1層に出来てしまう)
  • ニューラルネットワークの順伝播は行列計算で出来る. 拡張してバッチ化(複数のテストデータを一気に入力する)することも出来る
  • ソフトマックスは確率を表す. 直接の値を使って学習すると微分が不連続になるためうまくいかない

4章 ニューラルネットワークの学習

  • 損失関数を最小化するパラメータを探すことが目標
  • 2乗和, 交差エントロピーともに, 逆伝播をした時に都合よい
  • 学習は常にパラメータ空間における勾配(偏微分のベクトル)方向に学習率ごとに進んでいく. 学習率はハイパーパラメータと呼ばれる

5章 誤差伝播法

  • 各パラメータについて数値計算偏微分を行うのは毎回ニューラルネットワークの計算が必要になってしまうし死ぬほど遅い. 実用的ではない
  • 計算をASTのような感じでグラフ化したものを計算グラフと呼ぶ. ニューラルネットはこの組み合わせで書ける
  • 計算グラフに登場するノードをレイヤと呼ぶことにする. レイヤには加算レイヤ, 乗算レイヤなどがある
  • 偏微分の連鎖律を使うと, 各レイヤでの偏微分を逆方向に伝播していくことで上流の偏微分が順に求められる. 偏微分の計算には, 各レイヤでの入力値が必要になることもあるため, 順方向の計算をした後に逆伝播をする
  • レイヤは, forwardとbackwardをもったものとして抽象化出来る. forwardを使うことで順方向の計算が, backwardを使うことで逆伝播が出来る
  • レイヤを重ね合わせることで任意のニューラルネットワークが構築出来る

Overwatch: マウスをロジクールG403に変えた

おれは今まで, KUN先生推奨のRazer DeathAdderというマウスを使っていた. 2016年末に発売されたモデルだ.

色々と不満があり, マウスを変えることにした. まずはその不満を説明する.

最新のDeathAdderにはスクロールボタンの手前に2つのセンシシフトボタンがある. これを押すと, プレイ中にセンシを変更することが出来る. しかしおれの場合, プレイ中はずっと同じセンシでプレイしたいためこのボタンは押さないし, 一体どういうニーズがあってつけられたのかピンと来ない.

問題は, プレイしているとたまにこのボタンを意図せずして触ってしまい, 知らず知らずのうちにセンシが変わっていることだ. 具体的にいうと, 2つあるうちの手前のを押しやすく, 知らず知らずのうちに超ローセンシ(80cm/360度くらい)になってたりして敵を追うことが出来ないということが起こってはじめて気づくということがマッチごとに2回くらいはある感じで, これを無効化しないことには使い物にならないと思っていた.

Razerの製品をチューンするためのRazer Synapseを使うと, これは無効化出来る. はずなのだが, DeathAdderのバグなのか, 設定後にプレイしてみると無効化されていない. 海外の掲示板には同様の悩みを持つ人がいて, それに対して「XIM4を通すとどうやら有効化されてしまうようだ」と書かれていたりするのでたぶんそうなのだと思う.

マウスを分解して回路的に無効化することも考えたが, 分解出来るようになってないようなので諦めた. 強引に分解したとしても, 組み立てた時に0.1mmでもズレが生じたら, FPS用のマウスとしては使い物にならないから諦める他ない.

というわけでよりまともなマウスを探しに秋葉原に行ってきた. Tsukumoのゲーミングマウスコーナーで30分くらいマウスに手を当てて悩み, 結局ロジクールのG403というマウスを買ってきた.

もう一つ, 触ってみて良いなと思ったのはSteelSeriesのRival 300というマウス

【国内正規品】ゲーミングマウス SteelSeries Rival 300 Black 62351

【国内正規品】ゲーミングマウス SteelSeries Rival 300 Black 62351

だが, G403の方が手にしっくりきた. Rival 300はDeathAdderと似たような形をしたマウスで, 外側に行くにつれて低くなっている. こういう形状だとかぶせ持ちで手を置くことが不自然で, 手は少し斜めになってしまう. 結果として手の付け根あたりがマウスパッドに擦れてしまい, エイムに影響が出ていると考えていた. 一方でG403は左右対称でふっくらとしていて, かぶせ持ちをした時に手がマウスに擦れることはなく, 安定してエイム出来る. また, G403はDeathAdderの105gより15g軽い90gで, 体感でだいぶ軽いと感じる. おれのように40cm/360度を超えるローセンシでプレイする場合はマウスが軽いことは重要な要素だと思ったので, 総合的にG403を購入した.

G403の設定はLogicoolゲームソフトウェアというので設定出来る. G403にもセンシシフトボタンがあるのだが, 設定でセンシの段階を1つだけにしたらゲーム中にセンシシフトボタンを押してもセンシが変わることはなかったのでG403はXIM4との相性も良いと言える.

XIM4を使ってFPSをプレイしたい人は参考にしてほしい.