情報学部大学生のダラダラ日記

情報学部大学生のダラダラ日記

勉強したことをアウトプットします。だらだら読んでいただけると助かります。

統計学入門(基礎統計学Ⅰ)第2章演習問題

はじめに

今回は統計学入門(東京大学出版)の第2章の演習問題を解いていきます。

※注意※

本書には解答のみ載っており、導出過程が書かれていません。そのためこのような記事を書こうと思いました。筆者は統計については勉強中ですので誤り等ありましたら教えていただけると嬉しいです。

第2章

2.1は調べても出て来なかったので省略します。

2.2<ジニ係数>

データ{\displaystyle x_1,x_2,...x_n}がある時、

{\displaystyle \sum_i^n\sum_j^n|x_i-x_j|/n^2}

平均差と言います。つまり、全ての要素の組み合わせの差の絶対値の平均です。なので差の平均ですね。

 

{\displaystyle \sum_i^n\sum_j^n|x_i-x_j|/2n^2\overline{x}}

ジニ係数と言います。

詳細は以下のサイトを見てください。ザックリいうと"どれだけ不平等か"を示す時に使われるものです。

bellcurve.jp

今回はA:0,3,3,5,5,5,5,7,7,10

B:0,1,2,3,5,5,7,8,9,10

C:3,4,4,5,5,5,5,6,6,7

について平均差とジニ係数を求めます。それぞれ手計算で平均差を計算してもいいのですが、さすがに10*10の100通りを3回やるのは面倒なのでスクリプトを書きました。

f:id:Parco1021:20200405223347p:plain

わざわざ関数にする必要はなかったのですが、平均差とジニ係数それぞれわかりやすくするためにしました。定義通り計算していくだけです。

 

2.3<エントロピー>

エントロピーとは簡単に言うとどれだけ乱雑かをしめすものです。

{\displaystyle H(p_1,p_2,...p_k) = -\sum_i^kp_ilogp_i}

の形で示されます。{\displaystyle p_i}は相対頻度です。つまり総データ数100においてある事象が10回である時、{\displaystyle p_i=10/100}となります。また、対数の底は2か10を使うのが一般的です(今回は10としています)。

問題は与えられたデータ(現在と10年前の学生100人の出身地のデータ)を集中性の観点から分布を比較せよ、というもの。これには先に述べた通りエントロピーを使う。

f:id:Parco1021:20200405224304p:plain

 この出力からわかる通り、現在も10年前においてもエントロピー、つまり集中性はあまり変化していない。よって現在も10年前も出身地のバラつきはあまり変化していないといえる。

 

2.4<諸得点>

2.2におけるBについて、標準得点と偏差値得点を求める。

標準得点は各データを{\displaystyle z_i=(x_i-\overline{x})/s}とすることである。このようにすることで調整後の平均は0となり、標準偏差sは1となる。

 

偏差値得点は先ほど導出した{\displaystyle z_i}をさらに{\displaystyle T_i=10z_i+50}とすることである。これにより聞き馴染みのある偏差値を導出することができる。平均は50となり標準偏差は10となる。

f:id:Parco1021:20200405225641p:plain

確認のため変更後の平均と標準偏差も求めなおしてみました。0.99999となっていたり、2.22e-17(=2.22^10^-17)となってしまっていますがそれはビット数の都合で省略されてしまっているからです。キチンと出力できているように思えます。

 

あとがき

今回はお試しで2章を解いてみました。想像以上に時間がかかってしまったので3章以降で同様の記事を書くかどうかは決めていません。

 

演習問題の各コードはgithubに挙げておきます。参考までに。

github.com

 

 

【参考書感想】Pythonで動かして学ぶ!あたらしい機械学習の教科書第2版

はじめに

機械学習を学ぶにあたり、少しですが何冊か参考書を読んだのでこれから何回かにわけて感想を書いていきたいと思います。

今回は僕が機械学習系統で初めて読んだ本です。

 

読んだ当時、参考程度に僕は

  • 機械学習機械学習と深層学習って何が違うの??モデル???ナニソレ
  • Python→趣味で少し触った程度。参考書等は読んだことがない

 

紹介 

本書のコンセプトはタイトル通り「機械学習Pythonで実際に手を動かしながら勉強しよう!」です。

対象者は読んでみた限りですがPythonについて何も知らなくてもいいと思います。機械学習については無知で構いません。自分がそうだったので。そこから十分本書を理解できます。

はじめに結論を言いますが、本書は自分的に入門書としてかなり良書だと思っています。理由は追々。

目次

自分は5~7章、9章を重点的に読みました。

Pythonの環境すらない方も読者の対象なので安心です。第1章でPythonの導入をします。本書ではAnaconda、Jupyter Notebookを使います。

2章ではPythonの基本を学びます。if文や四則演算、リストなど簡単なものを学びます。

4章では機械学習に使用する数学、線形や微積Pythonのコードではどのように記述するのかなどを記しながら丁寧に説明してくれます。大学で数学を履修していない方でも読むことができると思います。さすがに高校数学はある程度できないとアレかもしれませんが…。

と、ここまで機械学習のための準備の章が4つありましたがこれだけで150ページ弱かけて丁寧に書かれています。

あとは目次通りの内容です。

感想

はじめに良書だといいました。それは全体を通じて計算過程がほとんど省略されておらず、「なんでこの変形になった!?」と困惑することもストレスとなることも少なかったからです。また、図も多くの場面で説明として使われています。さらに当然本書のコンセプトであるPythonのコードでの説明もされています。これにより図、数式、コードの多方面から理解することが可能です。

parco1021.hatenablog.com

 

実際この辺の記事は参考文献にも挙げている通り本書を参考にして書いています。当然読んでいるだけでは理解が難しいところもあるので本書を見ながら紙に数式を書き自分で解いて~とすることで理解が深まります。

注意点として本書の主は教師あり学習・深層学習なので教師なし学習についてはクラスタリングのことのみ書かれており、強化学習については書かれていません。

また、僕自身機械学習のお勉強を始めて数カ月しか経っていません。本書がどの程度網羅できているかはわかりません。あくまで本書に書かれている範囲はとても丁寧に記述が為されておりわかりやすかったということです。

 

さいごに

本書は入門書としてとても良いと思います。おそらく立ち位置はオライリーのゼロから作るディープラーニングと同じです。あちらは訳本ですので合う合わないがあると思います(僕は合いませんでした)。そういった方にもおすすめです。

 

 

 

おわり。

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村

 

PVアクセスランキング にほんブログ村

【パズドラ】ガネーシャの財窟 超級 ヴェロア×ヴェロア【サタン無し編成】

はじめに

f:id:Parco1021:20200307222544j:plain

リリース8周年イベントでガネーシャの財窟が3/6~3/12の23:59まで来ています。周回することによってニーズヘッグ等の集めるのが面倒くさい奇石が手に入るので是非周回しましょう。8周年イベント後半の公式サイトはこちら↓↓

pad.gungho.jp

超級と地獄級があり、どちらもスタミナが30と同じなので全く同じパーティーならばよりドロップ率の高い地獄級を周回するのが良いと思います。今回はヴェロア×ヴェロアによってタマゴのドロップ率を上げた状態で超級を周回しました。

youtubeやネットで調べるとサタンを大量に使ったパーティーが多く見受けられました。しかし僕はサタンを全く作っていなかったのでサタン無しで考えました。感想としてはやはりネットに載っているサタンを使ったパーティーが楽なのでできることならそちらにしましょう!

 

パーティー編成

f:id:Parco1021:20200307223450j:plain

フレンドはラー継承のヴェロアです。初めに使うスキルを説明します。

  • 1F→ラー
  • 2F→ルシファーor梅宮orバイソン
  • 3F→2Fと同じ。2Fか3Fでルシファーを使用
  • 4F→梅宮orバイソン
  • 5F→ネフティスを使用しずらす

基本的にバイソン、梅宮は4Fのサタン(体力およそ80万)を倒すことができるスキルがあればいいです。注意点としてヴェロア×ヴェロアであるためボスでリーダースキルによる倍率がかかりません。そのため列強化とネフティスのエンハンス、攻撃アップバッチ、堕ルシに回復キラーをアシストしさらに神キラーを3凸することでギリギリボスのガネーシャを倒すことができます。ここをヴェロア×リヴァイにすることでより条件は緩和されるのでそちらの方がいいでしょう。

f:id:Parco1021:20200307223505j:plain

…僕は親友にリヴァイがいないのでこのような感じでごり押ししました。

また、バイソンのスキルが20Tと重めなのでアシストでスキブを盛っています。

 

動画

 

まとめ

繰り返しになりますが当然超地獄級の方がドロップ率も高いし金メダルも手に入りやすいそうです。なのでできることならば超地獄級を周回しましょう。

 

 

おわり。

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村

 

PVアクセスランキング にほんブログ村

【パズドラ】3月のチャレンジダンジョン9アリス×ディーナ

はじめに

2020年も3月になりました。今回はチャレンジダンジョン9をアリス×ディーナで攻略しました。

f:id:Parco1021:20200301161855j:plain

 

パーティー構成

f:id:Parco1021:20200301161430j:plain

これにフレンドがディーナです。はっきり言いましょう。

アリスよりランペイドの方が50000倍良いです

アリスの役割はコンボしつつ追撃をするLSだけなのでディーナとの組み合わせを考えるとランペイドの方がいいです。僕は持ってないです!

対策ギミック()内は本PTでの担当キャラ

  • 覚醒無効(リヴァイ武器)
  • オチコン無し(コットン)
  • 根性(アリス、ユウナ)
  • ルーレット(ディーナ)

担当がないキャラ(ぬらりなど)は自由枠です。初ターンでディーナを変身させられるだけのスキブは用意しましょう。

 

ダンジョン

1F

f:id:Parco1021:20200301161420j:plain

99ターンオチコン無しとルーレットをしてきます。ルーレットはディーナのスキルで対策することができるのでここでまずコットンのスキルを使うことでオチコン無しを99Tから1Tに上書きします。

 

2F~4F

f:id:Parco1021:20200301161423j:plain

 

f:id:Parco1021:20200301161425j:plain

 

f:id:Parco1021:20200301161422j:plain

2,3Fはコンボしつつ追い打ちを発動させるだけです。全体として、ディーナを使う前にルーレット内のドロップを持つなどしてドロップの色を調整しつつ光ドロップや水ドロップを確保しましょう。

4Fはヨミが覚醒無効をしてくるので無効解除スキルを使ってください。ここは根性がないのでコンボだけ意識して突破します。

 

5F

f:id:Parco1021:20200301161427j:plain

先制で7万強の攻撃をしてくるので耐えられるようにしておきましょう。

ボスは割と固いのでここまでアリスをできればとっておき、光3コンボ+水2コンボ+12コンボ以上でバチコリ倒しましょう。下に貼る動画ではドロップが繋がったりオチコンがたくさんきたりして運がいいと思いますが基本的にルーレットできちんと調整すれば盤面12コンボはいけると思います。

 

動画

 

おわり。

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村

 

PVアクセスランキング にほんブログ村

ティッシュを爆買いする人達へ

僕は花粉症です。今書いている時点で天気は雨なのに今も辛いです。雨の後は花粉が多く飛ぶので明日が怖いです。

f:id:Parco1021:20200229190511p:plain

そんなスギ花粉シーズンとコロナウイルスが重なりました。コロナウイルスの影響のみでマスクは爆速で売り切れました。さらにあろうことか"マスクと原材料が同じのティッシュとトイレットペーパーもなくなる"というデマ情報に踊らされる人が続出しティッシュやトイレットペーパーが全国のお店から無くなっているという有様です。同じ日本人として恥ずかしいです。ニュースで何年分のティッシュかわからないぐらい爆買いしている人を見てなんか悲しくなってしまいました。

コロナウイルスの影響でマスクが無くなっただけでも花粉症にとっては死活問題なのにティッシュが無くなる、さらにその原因がデマに踊らされただけとなっては本当にキツイものがあります。

花粉症の人からマスクとティッシュを取り上げることがどれだけのことを指すのか花粉症でない人にはわからないと思います。その人達の鼻に花粉をありったけ詰めたいです。

自分はマスクはほぼ残っていませんがティッシュは少しあるので大丈夫です。しかしTwitter等見ていると花粉症の方が本当に辛そうです。さらにデマに踊らされた人のせいでシンプルにティッシュおよびトイレットペーパーを買いたい人も白い目で見られているそうです。

感情のままに書き綴ってしまいましたが当然悪いのはデマを流した人です。しかし現在はデマであることが広く知れ渡っており、必死にお店が「すぐ入荷するから買い占めないで」との通知をしています。この状況で買い占めるのは当然悪です。

また、それら3点は日用品であり言ってしまえばどれだけあっても困りません。しかしそれは自分のことだけを考えた場合ですが…。なので本当であろうが必要以上に買い占めるのは辞めましょう。さらに季節が季節なだけにティッシュを必要としている人が多くいることも忘れないでほしいです。

ドラッグストアの店員さんもマスクの入荷はいつになるのかなどの質問を何度も何度もされて大変だと思います。本当にお疲れ様です。

 

 

 

おわり。

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村

 

PVアクセスランキング にほんブログ村

 

VAEを理論的に理解する

はじめに

今回は、VAE(Variational AutoEncoder)について数式面のみのアウトプットをしたいと思います。VAEとはなんたるか、実装方法等には触れません。そこではじめに参考文献を示します。

参考文献

Variational Autoencoder徹底解説 - Qiita

AutoEncoder, VAE, CVAEの比較 〜なぜVAEは連続的な画像を生成できるのか?〜 - Qiita

オートエンコーダ:抽象的な特徴を自己学習するディープラーニングの人気者 - DeepAge

猫でも分かるVariational AutoEncoder

イェンセン(Jensen)の不等式の直感的理解 - Qiita

正規分布間のKLダイバージェンス - Qiita

本題

初めに目的を明確にしましょう。下に簡単なVAEのモデルを示します。

 

f:id:Parco1021:20200223170120p:plain

 

{\displaystyle EncoderへXを入力します。そして潜在変数zのためのパラメータμおよびσを出力します。}

{\displaystyle そしてzをDecoderへ入力することで本来求めたい\hat{X} を出力します。}Encoderで直接潜在変数{\displaystyle z}を生成するのではなく、{\displaystyle zのためのパラメータμとσ}を生成することが重要です。

ここで推定したいモデルはDecoder側の{\displaystyle p(X)}ですね。この{\displaystyle p(X)}の尤度(尤もらしさ)を最大にするパラメータ{\displaystyle θおよびϕ}最尤推定法を用いて求めます。

また、色々都合がいいので対数尤度{\displaystyle logp(X)}を最大にします。

f:id:Parco1021:20200223175638p:plain

1行目は確率の加法定理を用いています。同時分布{\displaystyle p(X,z)においてz}について加算すると{\displaystyle X}の分布になるということですね。
2行目は{\displaystyle \frac{q(z|X)}{q(z|X)}=1}を掛けているだけです。

3行目はイェンセンの不等式を使いました。上に凸な関数{\displaystyle f(x)}において{\displaystyle f(E[x])≥E[f(x)]}が成り立つといったものです。

4行目は変分下限を新しく定義しました。変分下限はELBO(evidence lower bound)とも呼びます。複雑な確率分布において周辺尤度は厳密には計算することができません。よって周辺尤度の下限{\displaystyle L(X,z)}をなるべく大きくすることで{\displaystyle logp(X)}へ近づけます。下からすくっていくイメージですね。

 

では対数尤度と変分下限の差は何を示すのかを確認しましょう。

f:id:Parco1021:20200223190656p:plain

{\displaystyle KL[]}KLダイバージェンスと言います。簡単に言うと両者の距離を表すものですが絶対値は取らないので厳密な距離ではないことには注意してください。

2行目の第1項は{\displaystyle \int q(z|X)dz=1}を掛けているだけです。

3行目の第1項は{\displaystyle p(X)}{\displaystyle z}に依存しないため積分記号の内へ入れています。第2項は乗法定理から{\displaystyle p(X,z)=p(z|X)p(X)}を代入しています。

4行目は{\displaystyle log}を分解しています。そしてこれから第1項が消えることがわかります。

6行目は対数をまとめています。

 

ここでもう一度変分下限について整理してみます。

f:id:Parco1021:20200223211235p:plain

{\displaystyle logp(X)}は固定値であるため目的とする"L(X,z)を最大化すること"は'第2項を最小化すること'と同義となりました。

では第2項に着目してみましょう。

f:id:Parco1021:20200225214501p:plain

最小化したい第2項がさらに3つの項へ分解されました。

2行目はベイズの定理{\displaystyle p(X|Y)=\frac{p(Y|X)p(X)}{p(Y)}}を代入し、対数の法則から分解しました。

3行目はまず{\displaystyle p(X)}{\displaystyle q_φ(z|X)}に依存しないため期待値の外へ出します。そして今後のために{\displaystyle logp_θ(X|z)}を別で記述します。

3行目の第1項がKLダイバージェンスの記述ができるので4行目において置き換えています。

これを最小化したいのですが少しよくわからないので変分下限の式に代入してみましょう。

f:id:Parco1021:20200225214731p:plain

代入することで{\displaystyle logp(X)}が消えました。この式を最大化(変分下限は最大化、先ほどのKLダイバージェンスは最小化)したいのでしたね。そのために第1項を小さくし、第2項を大きくしたいということです。それでは各項に注目します。

第1項

第1項は正則化項(Regularization Parameter)です。KLダイバージェンスの形をしているので当然{\displaystyle p(z)}{\displaystyle q(z|X)}の分布が近ければ近いほどこの値は小さくなります。

f:id:Parco1021:20200225215521p:plain

 

2行目~3行目の導出は正規分布のKLダイバージェンスの導出となり複雑なので理解しなくていいと思います。一応リンク載せます。

qiita.com

 

第2項

f:id:Parco1021:20200225212223p:plain

まずは直感的に理解してみましょう。{\displaystyle q(z|X)}はencoder部分で{\displaystyle p(X|z)}はdecoder部分です。つまりencoderに関してdecoderの対数尤度を求めているということです。これからわかるように当然この式は最大化したいものということです。

画像の各ピクセルを0~1に調整し、ベルヌーイ分布を仮定するとlog{\displaystyle p(X|z)}は以下のようになります。

f:id:Parco1021:20200225213927p:plain

{\displaystyle y}はNNの出力です。

 

 

第1項は潜在変数の事前分布とencoderの分布の差を示す。正則化項。

第2項は入出力の差。

 

 

最後に図としてまとめます。

f:id:Parco1021:20200225220354p:plain

このφおよびθを学習します。 

 

しかしこのままだと確率分布を経由しているため誤差逆伝播法を使用することができません。なので{\displaystyle ε~N(0,I)}としてノイズを発生させ、{\displaystyle z=μ+εσ}とすることで確率分布を経由せずに誤差を逆伝播させることが可能となります。この手法をReparameterization Trickといいます。

 

さいごに

いかがでしたでしょうか。僕自身この確率分布だ~なんだ~の部分はとても苦手としているので非常に理解に時間がかかりました。VAE自体は少し前の技術なのですが今もなお研究が行われているそうですね。僕の卒業研究の選択肢の1つとなりそうです。

是非とも上記のQiita等もご覧になって多くの記事を参考にしてみてください。添え字等間違っていることがあったら(こっそり)教えてください。

 

 

おわり。

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村

 

PVアクセスランキング にほんブログ村

 

【パズドラ】今更ながら妖怪ウォッチコラボ中級をヴェロアで周回する

はじめに

え、今更!?と思ったかもしれません。僕も思います。しかし8周年記念イベントで復帰した方も少なからずいらっしゃるのではないのでしょうか???そういった方は2/24の午前10時まで妖怪ウォッチコラボが行われ、交換所で入手できるキャラクターが優秀なので今からでも頑張りましょう!

f:id:Parco1021:20200222185501j:plain

 

※僕も今から周回します。

 

(僕が)交換するモンスター

 

・ロボニャン

f:id:Parco1021:20200222183410j:plain

スキブ武器。おまけに本体も強い。こいつが最優先だと思います。1体しか交換できないけどたくさんほしい。虹アイテム5個

 

・キュウビ

f:id:Parco1021:20200222183528j:plain

封印&回復強化武器。強い。パーティーによっては溜まっても嬉しいスキル。虹アイテム2個

 

・ウィスパー

f:id:Parco1021:20200222183701j:plain

闇泥強武器。闇パなら悪くないスキル。虹アイテム2個

 

こいつら3体を交換しようとすると虹アイテムが9個も必要となり少し大変です。最悪後者2体は妥協してもいいですがロボニャンは絶対に交換しましょう。

 

中級周回編成

f:id:Parco1021:20200222184156j:plain

相方はラー継承ヴェロアです。

バステト、ハクに超覚醒・ダンジョンボーナスをつけることで卵のドロップ率を少しでも上げます。

継承ですが、全体攻撃×3と単体攻撃×2(単体攻撃は当然全体攻撃でも可)を用意し、かつスキルブースト等で打つことができればなんでも良いです。その点バステトはスキルターンも短いし優秀ですね。

ラーがたくさんいるのなら継承は全てラーで構いません。僕は2体しかいなかったのでテューポーンカードと天ルシで代用しました。テューポーンカードだとスキルヘイストがあるので多少スキルブーストが足りなくても大丈夫です。

また、理想としてはウェルドールにはヴェロア武器をつけてダンジョンボーナスを少しでも上げたかったのですが僕は持っていなかったので適当です。

代用ですが、正直全然バステトもハクもいなくていいと思います。とにかくポチポチで周回したいのなら全体ブレスとスキルブーストだけ注意すればいいです。

 

動画

大体平均2つぐらい卵がドロップします。

 

おわり。

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村

 

PVアクセスランキング にほんブログ村

【パズドラ】ラジエル降臨壊滅級をアリスパで攻略

はじめに

しばらくやっていなかったパズドラ。久しぶりにやると楽しいものですね。8周年イベントで新しい降臨が来ていたので究極アリスで攻略してみました。

 

f:id:Parco1021:20200220192749p:plain

 

ラジエル降臨壊滅級の概要

  • 落ちコン無し
  • スキル使用不可
  • 7×6盤面
  • 枝豆(コンボ)ドロップが常時出現

対策すべきギミック

  • 暗闇
  • ダメージ無効
  • 追い打ち
  • 暗闇
  • テープ
  • お邪魔

下3つは対策必須というわけではないですが、どうせスキルも使えないですしちゃんと対策しましょう。

 

使用したパーティー

おそらくというか絶対ですがこれが最適ではないと思います。僕は自分の手持ちと相談しながら何度もボコされてこれに帰着しました。

f:id:Parco1021:20200220174141j:plain

サブモンスターの採用理由

  • イルム

こいつは完全に3Fのミカエルをシバく用です。超覚醒はドラゴンキラーにして無効貫通×2とドラゴンキラー×2でこいつだけの火力でミカエルを倒せます。

  • ヴァル

ボス用です。超覚醒は神キラーで潜在に攻撃キラー3凸させてるのですがここまで火力が必要なのかは怪しいです。ボスのHPは8億あるのでい、いちおうね??

  • ぬらり

なんでこいついれたんだろう?

火力枠かな?()

  • ユウナ

指のための女。3秒美味しい。超覚醒は追撃で!パズルに自信があればいらない女。召喚士になれた女。

 

アシストは画像の通りです。耐性しか意識していないです。アリスがテープを持ってくれているのでその他のギミックを補ってください。

 

攻略…の前に

初めに述べておきますが、アリスで攻略することはあまりオススメできないかな~と思います。理由としてコンボ加算リーダーではないためボスが枝豆がどれだけ湧くか運になってしまうこと、vsミカエルで光ドロップが12個以上ないかつルーレットを一生吐かれてしまうと回復性能のないアリスでは殴りあえないです。当然立ち回り等でそれらをカバーすることは可能です。

 

攻略

1F

 

f:id:Parco1021:20200220181533j:plain

 

光が2コンボないと倒せないです。ただ、1回なら耐えられるので落ち着いて光を残しつつ他を消して耐えましょう。ここで体力を削られようが削られなかろうがどうせ2Fで99%ダメがくるので変わらないです。注意すべき点はないです。

 

2F

f:id:Parco1021:20200220181908j:plain

 

99%ダメ&根性&8コンボ以下吸収を打ってきます。追い打ち+光2コンボまたは光3コンボで突破しましょう。もし↑の画像のようにう○ち盤面だったら大人しく盤面整理して条件が揃い次第突破してください。追い打ち+光1コンボだと↓の画像のようになります。

 

f:id:Parco1021:20200220182135j:plain

ミリ残しなのでもう1コンボ増えたりしてたら抜けますがそこはPT次第ですね。

このようになっても大丈夫です。攻撃力2倍&操作3秒減少してきますが枝豆もありますし9コンボを出すのはそこまで難しくないと思います。

 

3F

f:id:Parco1021:20200220182454j:plain

 

vsミカエルです。光を12個用意して無効貫通+光1コンボで突破しましょう。

ミカエルは体力が半分を切るまで2ターンおきに5万ダメージ+(二段ルーレットor超暗闇or1列をお邪魔+水に変化)をしてきます。ルーレットをされると無効貫通を組むことが格段に難しくなります。なので連続でルーレットをしてきた場合は割と積んでしまう場合が多いです。

しかし、無効貫通+光1コンボと全力コンボさえしさえばイルム君がシバいてくれます。

 

f:id:Parco1021:20200220183342j:plain

 

ミカエルの体力は約2億でイルムは3億だしてくれているので倒せました。9コンボない場合は火力が当然落ちますのでイルム+その他の無効貫通キャラ(アリスなど)のダメージで突破します。枝豆を残すようにするとボス戦での運要素が少なくなります。

 

5F

f:id:Parco1021:20200220183945j:plain

 

18コンボ吸収+根性とかいうわけのわからないことをしてきます。6×7盤面の最大コンボ数は14なのでLSや枝豆等で最低でも5コンボ盛らないといけません。しかも当然盤面で14コンボなどいつでも組めるわけではないのでそれ以上用意が必要です。

アリスを使用している場合、倒すための必要条件は

  • 光3コンボ19コンボ以上
  • 回復で追い打ち、光2コンボ込み19コンボ以上

であるためかなり厳しいことがわかると思います。ボスも色変換してきたり回復力を半減してきたりするので殴り合うことも盤面を整えるのも運がかなり絡んできます。

本来、上の画像のような盤面(枝豆が3つしかない盤面)の場合は一度枝豆を残して機をうかがうのですが、この時僕は何も考えずにコンボしてしまいました。

 

f:id:Parco1021:20200220190009j:plain

 

何も考えずにコンボしたのですが盤面にたくさんの枝豆が!さらに光も3コンボ分あるので根性対策もできます。

 

f:id:Parco1021:20200220190128j:plain

 

これでギリギリ19コンボです。

 

f:id:Parco1021:20200220190346j:plain

 

19コンボさえしてしまえばさすがにキラーもりもりヴァルキリ―がカンストダメを叩き出して倒すことができました。

 

動画

録画もしましたのでご覧ください。パズルが下手なのは御勘弁を!

 

 

感想

難しかったです。最近のダンジョン事情は知らないですけど。。。

ずっとアリスで攻略しようとしていて何度もミカエルに倒され、倒したとしてもボスで19コンボできずに倒され…が何度もありました。スキル使用不可はまた面白い試みだと思います。

やはり試行錯誤したりするのは楽しいですね。

 

おわり。

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村

 

PVアクセスランキング にほんブログ村

線形基底関数モデルの最適解

はじめに

前回、D次元の線形回帰モデルを解きました。

parco1021.hatenablog.com

話を1次元に戻します。線形回帰モデルを解くとイメージとしては下図のようになります。

f:id:Parco1021:20200206165132p:plain



{\displaystyle y=ax+b }の形ですね。しかしこの分布を見ているとこのようにも見えると思います。

f:id:Parco1021:20200206165016p:plain

汚くてすみません!!

このように、直線よりも曲線を用いた方がより分布に合っています。基底関数を用いてこのような曲線の関数を導出することが線形基底関数モデルの考え方です。

基底関数

まず基底関数について説明します。読んで字の如く関数を表現するためのベース、つまり基底となる関数です。もっとざっくり言うとグニャグニャしている線(曲線)を基底関数を組み合わせて表現しよう!といった感じです。…???同じことを言ったような気がしますが次第にわかると思います。

ガウス基底

{\displaystyle Φ_j(x)=exp\left\{-\frac{(x-μ_j)^2}{2s^2}\right\} }

f:id:Parco1021:20200206171820p:plain

引用元:ガウス関数

ただのガウス関数(正規分布)ですね。{\displaystyle s }は分散のようなイメージでいいと思います。つまり大きくするとそれだけ広範囲に影響が出ます(=グラフの山が潰れて広がるイメージ)。広範囲に影響を及ぼすことはよろしくないので小さい方が望ましいと思います。小さすぎるのもアレだけど。。。{\displaystyle μ_j }ガウス関数の中心位置ですね(山のテッペンの位置)。{\displaystyle s,μ_j }ともに設計者が決めるパラメータで変数は当然{\displaystyle x }のみです。

 

多項式基底

{\displaystyle Φ_j(x)=x^j }

つまり{\displaystyle Φ(x)=1,x,x^2,x^3・・・ }となるわけです。こちらの方が馴染みがあるので扱いやすいかもしれません。

 

解いてみよう

まず、今回解く対象である線形基底関数モデルを明記します。

{\displaystyle y(x,\boldsymbol{w})=\sum_{j=0}^{M} w_jΦ_j(x)=\boldsymbol{w}^T\boldsymbol{Φ}(x) }

ここで、{\displaystyle M }対象となるデータを何分割して基底関数を使うかを示しています。そして{\displaystyle w }は重みを表しています。つまり、M=3であるとしたら対象のデータをx軸方向に3分割して分割したそれぞれに適した重みwを計算します。そして導出した最適な重みを先ほど述べた基底関数に掛けることで曲線を実現させます。当然分割した各々は干渉し合います。

…わかりにくいですね。図示します。

f:id:Parco1021:20200206203406p:plain

 

フリーハンドですみません…。このように、M=3であるため3つのガウス基底で表現を試みます。この3つ各々に重みwを掛けて"いい感じ"にします。最後の項{\displaystyle w_3とΦ_3(x) }は係数のための処理です。

 

それでは、重み{\displaystyle \boldsymbol{w} }の最適解を求めていきましょう。タイトルの通り平均二乗誤差Jを使います。

{\displaystyle J(\boldsymbol{w})=\frac{1}{N}\sum_{n=0}^{N-1} (y(x,\boldsymbol{w})-t_n)^2=\frac{1}{N}\sum_{n=0}^{N-1} (\boldsymbol{w}^T\boldsymbol{Φ}(x)-t_n)^2 }

この形、どこかで見覚えがありませんか???そう、線形回帰モデルと同じ形をしています。

{\displaystyle J(\boldsymbol{w})=\frac{1}{N}\sum_{n=0}^{N-1} (\boldsymbol{w}^T\boldsymbol{x}_n-t_n)^2 }parco1021.hatenablog.com

 

{\displaystyle \boldsymbol{x}_nが\boldsymbol{Φ}(x) }へ変わっただけですね。なのでほとんどの処理は線形回帰モデルのものを応用できそうです。

  • 1次元データ{\displaystyle x_nをM次元(≒何分割するか)のベクトル\boldsymbol{Φ}(x_n) }に変換
  • {\displaystyle M次元入力された各入力\boldsymbol{x}_n }に対して線形回帰モデルを解く

以上のようにすることで線形回帰モデルと同様に処理することが可能であると考えられます。

つまり{\displaystyle 重み\boldsymbol{w} }の最適解は

{\displaystyle \boldsymbol{w}=(\boldsymbol{Φ}^T\boldsymbol{Φ})^{-1}\boldsymbol{Φ}^T\boldsymbol{t} }

となります。但し、

f:id:Parco1021:20200206202538p:plain

このような基底関数をN行M列に並べたものを計画行列(デザイン行列)と言います。

今回はxを一次元入力としましたが、仮にxが多次元であっても{\displaystyle x_n→\boldsymbol{x}_n }とすることで同様に扱うことができます。

 

参考文献

Pythonで「線形回帰」と&quot;確率版の線形回帰&quot;である「ベイズ線形回帰」 - Qiita

第9回 線形回帰[後編]:機械学習 はじめよう|gihyo.jp … 技術評論社

計画行列(デザイン行列)とは何か:PRML編 - 北野坂備忘録

ガウス基底モデル(μ, σランダム調整モデル)

 

 

おわり。

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村

 

PVアクセスランキング にほんブログ村

 

D次元線形回帰モデルを平均二乗誤差を用いて解く

※自分のはてなブログの編集都合上、行列表現がTexで表現できないため画像を挿入します。すみません。※

導入

線形回帰モデルとは

例えば直線モデルについて考えてみます。以下の図を見てください。

 

f:id:Parco1021:20200203134035p:plain

引用元:線形単回帰分析の仕組みをわかりやすく解説! | 全人類がわかる統計学

 

散らばっている点を"それっぽい"直線にしています。直線の式であるので{\displaystyle y(x)=w_0x_o+w_1 }といった形になっています。この{\displaystyle w_1およびw_0 }を求めることが「線形回帰モデルを解く」ということです。

 

本記事の目的

では、本記事の目的を明確にします。先に紹介した直線モデルは1次元モデルであり、それぞれ{\displaystyle w_0,w_1 }を求めることは難しくないです。しかしこれが2次元、3次元あるいはより高次元となった場合にも解くことは可能でしょうか?逐一解いてみても良いと思いますが本記事では高次元である{\displaystyle D }次元を想定します。

今回解く対象の{\displaystyle D }次元線形回帰モデルを示します。

{\displaystyle y(\boldsymbol{x})=w_0x_0+w_1x_1+・・・+w_{D-1}x_{D-1}+w_D }

{\displaystyle w_D }は切片を表します。今回は切片を省略し、以下の式を対象とします。

{\displaystyle y(\boldsymbol{x})=w_0x_0+w_1x_1+・・・+w_{D-1}x_{D-1} }

対象の式をより簡略化して書きたいと思います。行列表記を用いると

f:id:Parco1021:20200203155302p:plain

この{\displaystyle \boldsymbol{w} }が今回着目する文字です。所謂"重み"に似たやつです。

 

では早速解いてみましょう。今回、平均二乗誤差{\displaystyle J }で解きます。

f:id:Parco1021:20200203161319p:plain

ここで目的を明確にしておきます。目的は{\displaystyle y(\boldsymbol{x}) }を誤差の少ない関数とすることです。具体的には損失関数{\displaystyle J }を最小とする最適な{\displaystyle \boldsymbol{w} }を見つけることです。最小とする、つまりみんな大好き微分をします。

行列の計算に慣れていない方はここから紙とペンで実際に解きながら読むことをおすすめします。

 

解く

では早速{\displaystyle w_i }微分しましょう。

f:id:Parco1021:20200203180553p:plain

{\displaystyle w_i }微分すると{\displaystyle x_{n,i} }となることに注意すると

f:id:Parco1021:20200203180052p:plain

となります。注意ですが{\displaystyle x_{n,i} }のnはデータ数、iは(0~D-1)をとります。

{\displaystyle Jを最小にするwは、全てのw_iに対して傾きが0すなわち偏微分したら0となります。このwを求めます。 }

f:id:Parco1021:20200203181517p:plain

このまま{\displaystyle \boldsymbol{w} }について解いてしまいたいですが{\displaystyle x_{n,i} }が邪魔ですね。この方程式は全ての{\displaystyle i }において成り立つため、

f:id:Parco1021:20200203182027p:plain

 となります。ここからさらにわかりやすくするためにベクトル表現でまとめると、

f:id:Parco1021:20200203182555p:plain

簡略化すると、

f:id:Parco1021:20200203183045p:plain

分配法則を用いて、

f:id:Parco1021:20200203183346p:plain

f:id:Parco1021:20200203184353p:plain

このままではΣが邪魔で解きにくいですね。行列表現を用いてΣを消すように試みましょう。

f:id:Parco1021:20200204121601p:plain

f:id:Parco1021:20200204122042p:plain

新しく{\displaystyle \boldsymbol{X} }を導入することでΣを無くすことができました。

では、同様にして第2項も簡略化しましょう。

f:id:Parco1021:20200204123603p:plain

Σを消すことができたので元の方程式を置き換えてみます。

f:id:Parco1021:20200204124749p:plain

あとはこれを{\displaystyle \boldsymbol{w} }について解きます。まずは両辺転置を取ります。

f:id:Parco1021:20200204170848p:plain

これをガンガン解いていきます。

f:id:Parco1021:20200204172327p:plain

これがD次元線形回帰モデルの解です。この式を用いるとxが何次元であっても、すなわちDが何であっても最適な{\displaystyle \boldsymbol{w} }が得られます。お疲れさまでした。

切片を無視していましたね。あと少しです。

切片がある時

では、切片がある時を考えましょう。切片がある時ってどういう時でしょう?初めに示した式を再掲します。

{\displaystyle y(\boldsymbol{x})=w_0x_0+w_1x_1+・・・+w_{D-1}x_{D-1}+w_D }

これを以下のように見ます。

{\displaystyle y(\boldsymbol{x})=w_0x_0+w_1x_1+・・・+w_{D-1}x_{D-1}+w_Dx_D }

この{\displaystyle w_Dが切片ですね。このw_Dを常に出力させたいのでx_Dを常に1とすれば良いのです。このようにD+1次元目のxを常に1とすることで切片を実現させることが可能です。 }つまりD次元線形回帰モデルの解は変えなくて良いです。

 

さいごに 

行列の諸々を忘れていて理解に少し時間がかかってしまいました。しかし1つ1つ紐解いていくと徐々に理解ができて楽しかったです。

 

まとめ

D次元線形回帰モデル

{\displaystyle y(\boldsymbol{x})=w_0x_0+w_1x_1+・・・+w_{D-1}x_{D-1} }

f:id:Parco1021:20200203155302p:plain

の解は

f:id:Parco1021:20200204175037p:plain

但し、

f:id:Parco1021:20200204175133p:plain

 

参考文献

最小二乗法の解の導出 - 機械学習に詳しくなりたいブログ

 

 

おわり。

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村

 

PVアクセスランキング にほんブログ村

 

 

 

 

誤差逆伝播法についてできるだけ丁寧に初心者がまとめる

導入

はじめに

勾配法において、損失関数を重みにおいて偏微分しそれを用いて重みを更新します。その手法の一種として以前に数値微分法という微分の定義に基づき、近似を用いることで勾配を求める手法をまとめました。今回は勾配を求める手法の1つとして誤差逆伝播法についてできるだけ丁寧にまとめたいと思います。僕自身その道について未だ初心者であるので同じような方の助けになれば幸いです。

parco1021.hatenablog.com

 

おねがい

本記事は勉強中の筆者が書いたものです。ゆえに少し解釈違いがあったり、文字が違っていたりするかもしれません。そういった場合にはコメントまたは下の問い合わせフォームから教えていただけると幸いです。

また、誤差逆伝播法を学ぶにあたり文章を読むだけでなく手元に紙とペンを用意して数式を書きながら読んでいただければ理解が捗ると思います。

誤差逆伝播法って聞くと…??

僕は未だ自分でモデルを組む等したことがありません。なので誤差逆伝播法についての認識は"勾配を求めるいい感じの方法"ぐらいでしかないです。その認識は実際に使ってみないと変わらないと思うので今のところはこれで良しとします。

大学の講義や教科書でのBackpropの説明はほとんど,「教師あり学習の文脈で多層パーセプトロンを識別器あるいは関数近似器として訓練する」という文脈でなされます.そのため,初学者はBackpropは教師あり学習のためのアルゴリズムであると誤解してしまうケースが多々あるのではないかと思います.しかし後で説明する通り,Backpropは単に損失関数の微分を効率的に計算する手法の1つであって教師あり学習とか教師なし学習とかは関係ありません

引用元:https://qiita.com/Ugo-Nama/items/04814a13c9ea84978a4c#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB

だそうです。僕は講義で習っておらず、現場でも使っていないのでその誤認はしていないので気を付けます。

ニューラルネットモデル

今回扱うニューラルネットモデルを以下に示します。

f:id:Parco1021:20200112181056p:plain

 今回は、簡略化のために中間層を1層とします。それぞれの変数の定義をします。

  • {\displaystyle x }…入力
  • {\displaystyle v,w }…重み
  • {\displaystyle h(),g() }…活性化関数
  • {\displaystyle b_j=\sum_{i=0}^{D} w_{ji}x_i }

→前の層からの出力(x)に重み(w)を掛けたものを全ての矢印において行っている

  • {\displaystyle z_j=h(b_j) }

→先ほど求めたbを活性化関数に引数として渡す。これにより求めたzが次の層へ渡される

  • {\displaystyle a_k=\sum_{j=0}^{M} v_{kj}z_j }
  • {\displaystyle y_k=g(a_k) }
  • {\displaystyle t_k }…教師データ

{\displaystyle δ }については後述します。

 

誤差逆伝播

では、誤差逆伝播法についてやっていきましょう。誤差逆伝播は簡単に言うと、出力層の重み{\displaystyle v }を更新してから中間層の重み{\displaystyle w }を更新するように、入力層→出力層ではなく、出力層→入力層へと流れていく様子からこの名前が付けられました。バックプロパケーション誤差逆伝搬法とも呼ばれます。

最終的にバックプロップによって最小化したい損失関数は以下のようになります。

{\displaystyle E(v,w)=\frac{1}{N}\sum_{n=0}^{N-1} E_n(v,w) }

この式の意味するところは損失関数を学習に使うデータ数{\displaystyle N }だけ足して平均したものが目的となる関数であるということです。

この関数を最小化するために勾配を求めます。つまり各データ{\displaystyle n }に対する勾配{\displaystyle \frac{∂E_n}{∂w} }を得なければなりません。求めて平均をとることで{\displaystyle \frac{∂E}{∂w} }が得られます。当然、{\displaystyle wだけでなく、v }における勾配も求める必要があります。

{\displaystyle \frac{∂E}{∂v} }を求める

連鎖律を用いて{\displaystyle \frac{∂E}{∂v}を求めます。 }

{\displaystyle \frac{∂E}{∂v}=\frac{∂E}{∂a}\frac{∂a}{∂v} }

となるのでそれぞれ分解します。繰り返しになりますが、{\displaystyle v }{\displaystyle jk }間の重みであり、{\displaystyle aはj層 }からの入力総和です。

まず、

{\displaystyle \frac{∂a}{∂v}=\frac{∂}{∂v_kj}(\sum_{j} v_{kj}z_j)=\frac{∂}{∂v_kj}( v_{k0}z_0+v_{k1}z_1+…v_{kj}z_j) }=z_jとなります。

次に、

{\displaystyle δ^{(2)}_k= \frac{∂E}{∂a} }とすると

{\displaystyle \frac{∂E}{∂v_kj}=δ^{(2)}_kz_j}となり簡単な式になりました!

f:id:Parco1021:20200130171048p:plain>ちょっと待ちなさい!{\displaystyle δ^{(2)}_k}っていったいなんなのよ!

ごめんなさいお母さん!!

{\displaystyle δ^{(2)}_k= \frac{∂E}{∂a}=\frac{∂E}{∂y}\frac{∂y}{∂a}=\frac{∂E}{∂y}g'(a) }

{\displaystyle \frac{∂y}{∂a} }{\displaystyle y=g(a) }となっているので当然ですね。例えば損失関数を二乗誤差とし、係数など諸々を無視する{\displaystyle \frac{∂E}{∂y}は大体y-t }となります。{\displaystyle yは出力であり、tは教師データです。}ゆえに概要としては結合先で生じた誤差に関する変数といった感じです。

つまり、{\displaystyle \frac{∂E}{∂v_kj}は、}結合元のニューロンの出力{\displaystyle z_j}と結合先での誤差{\displaystyle δ^{(2)}_k}を掛けたものであることがわかります。

重みの更新規則は

{\displaystyle v^{r+1}_{kj}=v^r_{kj}-α\frac{∂E}{∂v_{kj}}=v^r_{kj}-αδ^{(2)}_kz_j}となります。{\displaystyle αは定数です。}

以上で重み{\displaystyle v}については終わりです。次は中間層周りの重み{\displaystyle w}についてです。

 

{\displaystyle \frac{∂E}{∂w} }を求める

では{\displaystyle \frac{∂E}{∂w}}を求めていきましょう。数式が一見複雑そうに見えますが、内容としてはこれまでと同様レベルです。一緒に頑張りましょう。

{\displaystyle \frac{∂E}{∂w}=\frac{∂E}{∂b}\frac{∂b}{∂w} }となります。

ここで先ほどと同様に結合先への総和{\displaystyle b}があるので

{\displaystyle \frac{∂E}{∂b}=δ^{(1)}_j}とします。

{\displaystyle \frac{∂b}{∂w}=\frac{∂}{∂w_ji}(\sum_{i} w_{ji}x_i)=\frac{∂}{∂w_ji}( w_{j0}x_0+w_{j1}x_1+…w_{ji}x_i) =x_i}

よって

{\displaystyle \frac{∂E}{∂w}=δ^{(1)}_jx_i }となり、先ほど同様簡単な形になりました!

f:id:Parco1021:20200130171048p:plain

 

…はい。例のごとく{\displaystyle δ^{(1)}_j}が何を指すのか調査しましょう。k層があるのでΣを用います。

{\displaystyle δ^{(1)}_j=\frac{∂E}{∂b}=\sum_{k}\frac{∂E}{∂y_k}\frac{∂y_k}{∂a_k}\frac{∂a_k}{∂z_j}\frac{∂z_j}{∂b_j}}

{\displaystyle \frac{∂E}{∂y}\frac{∂y}{∂a}=δ^{(2)}_k }であり、{\displaystyle \frac{∂a}{∂z}=v_{kj} }であり、さらに{\displaystyle \frac{∂z}{∂b}= h'(x)}となります。

これらを用いると{\displaystyle δ^{(1)}_j }

{\displaystyle δ^{(1)}_j=h'(b_j)\sum_{k}v_{kj}δ^{(2)}_k }となります。

この式と以下の図に着目してみてください。本来のNNは入力層→出力層(左から右)へと処理が為されるのに対し、中間層の{\displaystyle δ^{(1)}_j}を求めるために出力層から{\displaystyle δ^{(2)}_k}と中間層~出力層間の重み{\displaystyle v}を掛け合わせたものを逆方向へ伝達させていることがわかります。

{\displaystyle δ^{(2)}_k}は先ほども述べた通り出力層の誤差です。誤差を逆方向へ伝播させていることから誤差逆伝播法と言います(と思います)。

 

f:id:Parco1021:20200201203215p:plain

{\displaystyle \frac{∂E}{∂w}が求まったので重みwの }更新規則を書きます。
{\displaystyle w^{r+1}_{ji}=w^r_{ji}-α\frac{∂E}{∂w_{ji}}=w^r_{ji}-αδ^{(1)}_jx_i}

 

ここまで、誤差逆伝播法について数式を交えつつ解説してきました。次はより抽象的に図を主としてイメージを掴みます。

 

誤差逆伝播法のまとめ

①NNにxを入力し、b,z,a,さらに出力yを得て全て保持しておく

入力し出力を得るのでここは普通に順伝播(左から右)

f:id:Parco1021:20200201210825p:plain

 

 

②教師データtと出力yから出力層の誤差δを計算する。そして逆方向へ伝播し、重みvと乗算しΣ計算することで中間層の誤差を計算する

f:id:Parco1021:20200201212023p:plain

 

③δを用いて重みを更新する 

f:id:Parco1021:20200201213547p:plain

 

さいごに

いかがでしたでしょうか。数式は多かったと思いますが1つ1つ丁寧に追っていけば大学1年生レベルのものであることがわかると思います。誤差逆伝播法を使うと何がメリットで何がデメリットなのかわからないので今後調べていきたいと思います。例えば誤差逆伝播法は"人間っぽい"考え方ではないから別の手法を考えていると研究室の先輩が輪講で言ってたような言ってなかったような…みたいな。

 

参考文献

qiita.com

 

 

おわり。

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村

 

PVアクセスランキング にほんブログ村

"RPG感覚でプログラミングが学べる"コードクロニクルで遊んでみた

はじめに

"RPG感覚でプログラミングが学べる"というコンセプトのコードクロニクルで少し遊んでみました。遊んでみた感想を書こうと思います。

 

ゲームの紹介

基本的な流れはRubyPHPPythonのいずれかを選択して↓のように簡単なコードを書いてクエストをクリアする、という感じです。言語は随時追加されるそうです。

f:id:Parco1021:20200128123906p:plain

そして回答する時間を短くするとプラスでボーナスがもらえます。4回間違えると終了です。

 

また、ガチャ要素もありおそらくここに課金要素があります。

f:id:Parco1021:20200128124224p:plain

2回だけ引いたらなんかレア度が高そうなキャラしか出ませんでした。確率はわからないです。うれし。

このキャラによって特徴があり、先に述べたボーナスの貰える時間が増えるなどなどです。

 

コードクロニクルの良い点

おそらく対象が「これからプログラミングを学びたい人」であるので最初の方はとても簡単にできています。さらに、8割ほど完成している雛形が既に書かれているので穴埋め形式で解くだけです。その穴埋めも例えば"a"を出力させる問題である時、print("")まで書いてある問題と"a"のみ書いてある問題があり、多方面から同様の問題を解くことができるので上手くインプットできると思います。

また、解説動画も用意されているのでわからない問題があったり、復習にも使うことができます。

総合としてコンセプトである"RPG感覚でプログラミングが学べる"を満たしていると思いました。

 

少し気になる点

逆に少し気になる点を挙げます。

まずは対象がこれからプログラミングを学ぶ人であるのでしょうがないかもしれませんが何度も全く同じ問題が出され、退屈に感じてしまったことです。丁寧であることに反対ではありませんが、やはり全く同じ問題というのは刺激がなく、疲れてしまいます。

 

2つ目はこれもしょうがないと思うのですが、

例えば、a=2、b=3の時、aかけるbを出力せよというクエストがあり、

print(a*b)とさせたいと思うのですが、print(6)でも通ってしまうのです。

いやこればかりは出力と結果を比較しているだけだと思うのですが、問題の趣旨とはズレてしまうので何かしら対策が欲しいな~と思いました。

 

さいごに

今回ははてなブログの特別お題キャンペーンということでせっかくなのでコードクロニクルで遊んでみました。プログラミングをこれから学びたいという方は一度やってみてはいかがでしょうか。

はてなブログ特別お題キャンペーン #学び応援WEEK

はてなブログ特別お題キャンペーン #学び応援WEEK
by ギノ

 

 

おわり。

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村

 

PVアクセスランキング にほんブログ村

【Dead by Daylight】公式生放送(2020/1/24)まとめと感想

はじめに

f:id:Parco1021:20191222182517p:plain

タイトルの通り、2020年1月24日にDead by Daylight開発チームによるQ&A形式の生放送が行われました。それについての個人的に気になった点のまとめと感想を書けたらいいなと思います。本記事における引用部分は全て以下のサイトです。

forum.deadbydaylight.com

 

まとめと感想

マッチメイキングについて

近日、マッチメイキングに関するニュースをお知らせします。マッチメイキングに多くの変更が加えられ、数週間後には皆さんにも違いが感じられ始めるようになるはずです。技術的な内容を含むお知らせ文を準備中ですので、しばらくお待ちください。

す、数週間後!?

マッチメイキングにどのようなアルゴリズムが用いられているのか僕は存じ上げないのですが、少なくともキラー、サバイバー共にそれなりの分布をしていれば今のような悲惨なマッチにはならないと思います。当然アルゴリズムの見直しも必要ですが問題はキラーが少ないことだと思うのです。数週間後なので結構かかりそうですね。

 

学術書Ⅰでの学び

たくさんのことを学びました。まず完了までにかかる時間が予想よりずっと長かったです。最初の目標は学術書をコンプリートするまでにリフトを完了してもらうことでしたが、マッチメイキングと学術書の調整によって当初の計画とは違うものになりました。チャレンジの難易度は私たちの希望より難しいこともわかりました。学術書Ⅰは途中で難易度を下げましたが、それは学術書Ⅱでも同様です。レベルごとの難易度上昇はⅠよりかなり少ないはずです。また、学術書Ⅱではチャレンジのレイアウトに変更を加え、難しいチャレンジはクリアしなくてもゴールできるようにしたのでゴールは簡単になるはずです。また、学術書でフィーチャーされているDLCキャラクターを持っていなくてもそのキャラのマスターチャレンジを迂回してゴールできるようにしました。DLCキャラを持っていない人は学術書をゴールできないような仕組みにはしたくなかったからですね。

んーまあ確かにⅠの最後の方になると難しかったですね。特にサバイバーは4つ発電機を回さなければならなかったので鯖専の人は大変だったと思います。Ⅱではより簡単になっているそうですね。よかったです。

 

"破滅"について

・変更の経緯

始まりは2019年7月まで遡ります。以前の破滅の効果はとても受け身であり、装備しているだけで何もしなくても効果を得られることに気付きました。加えて、スキルチェックの発生頻度がランダムであることから効果が不安定であることにも注目しました。もし発電機を修理するときにスキルチェックが発生しなければ以前の破滅は何の効果もない一方、スキルチェックが何回も出たときは苦痛に感じることもありました。私たちは初心者がゲームに慣れるのを手助けしたいと思っていますし、熟練者にとっては以前の破滅は何もなかったかのように修理されてしまうだけで効果がないことにも気付きました。

いくつかの効果を検討しましたが、「発電機に関連する呪術パーク」という点は変更したくありませんでした。初期の新・破滅は現在の効果に追加して修理速度を一律で低下させる効果も持っていましたが、強力すぎました。新・破滅は強すぎもなく弱すぎもないところに落ち着かせたいと考えていましたが、現在はちょうどいいところにあると考えています。

…………。

f:id:Parco1021:20200126155610p:plain

何もしなくても効果を得られるのがダメであるのなら有能とか工具箱もそうなのではないのですか??アイテムを引き合いに出すのもアレですけど。。。

スキルチェックのランダム性を述べるのはナンセンスの極みだと思います。"大数の法則"ってご存じでしょうか。是非ともそれを理由に出すのはやめていただきたいです。

また、熟練者には何事もなかったかのように修理されると書いてありますが、ならばなぜ赤帯のキラーの80%以上が採用していたのでしょうか。

現在の破滅は強すぎず弱すぎずとありますが、これは僕がまだ新破滅を使っていないので言及しません。 

 

Q.破滅を非・呪術パークにしないのか

A.しない。するとしたらもっと弱くしていた

感想.後退を20/30/50%でも構わないからトーテム無しにしてほしかったと個人的に思います。

 

Q.グレイトボーナス無しにしないのか

A.検討されたが、しないつもり。動向次第。

 

Q.破滅がある通知をなくしてくれないか

A.しない。初心者プレイヤーにフラストレーション

感想.僕も別に通知はあっていいと思います。

 

Q.破滅以外の遅延パークも変更するのか

A.今後もパーク間のシナジーが無くなるように調整するつもり

感想.オワッタ…。

 

発電機の修理時間を変更するか

現在は工具箱の調整を検討中ですが、基本的な発電機の修理時間を増加させることはしないと思います。生存者が発電機修理中に修理ボタンを押しっぱなしにしてじっとしている時間は現時点でも長いと感じており、発電機の修理時間を延ばす以外にもマッチ時間を延ばす方法があると考えています。マップ全体の大きさやゲーム開始直後生存者に与えられるプレッシャーが少ないという指摘も把握していますのでご安心ください。

現時点でも修理長いって感じてるらしいですよ皆さん!!!!

マッチ時間を延ばすってなんですか??わからないですすみません。

 

強くないパークを変更する予定はあるか

はい、あまり強くなく、使用率が低いパークの調整を検討しています。近い将来変更しようと考えているパークは以下の通りです。

“小さな獲物”
“無慈悲の極地”
“強硬手段”
“ツルツルとした肉体”
“寝ずの番”
“痛みも気から”
“テクニシャン”
他にも機会があったら効果を見直したいパークはたくさんあります。

 はい。上から鯖、キラー、鯖、鯖、鯖、鯖、鯖です。

うーーーーん、草!w

あれれ~?おかしいぞぉ~?キラーで使われていない弱いパークなんてごまんとあるのになぁ~???あっ(察し

 

使用率の高い鯖パークの変更は??

現在最も使用率が高い生存者パークは“セルフケア”です。他にもいくつかのパークはよく使われていますが、破滅ほどではありません。“決死の一撃”はすでに大きな弱体化を受けていますが、皆さんから効果を悪用するような使い方に関するご意見をいただいているため、どのように対処すべきか検討中です。驚くべきことに、“しなやか”の方が“決死の一撃”、“与えられた猶予”、“アドレナリン”のどれよりも使用率が高いんですよ。定番パークや戦法はプラットフォームごとに違うことがあるので皆さんの肌感覚とは違うかもしれないことに注意してください。今後何もしないと決まったわけではありませんが、“呪術:破滅”のような動機で変更されることはないでしょう。先ほどお伝えしたように“セルフケア”がもっとも使用率が高い生存者パークですが、ゲーム内で問題を起こしているとは考えていないため、現在のところ変更予定はありません。

セルフケアが高いのは納得です。しなやかは意外でしたね。あまり使っている人を知らないので。まあセルフケアのナーフはいらないと思います。ちょうどいい感じ。

DSの悪用はロッカーDSのことですね。ロッカーに入り強制的にキラーにキャッチさせることでDSを発動させるう〇ちな技です。

一般的に強いと言われているDSやボロタイよりしなやかの方が使われているということはそれだけサバイバーにライト層が多いということですよね。それに対してキラーは破滅が皆が思っている通り使用率がダントツなのはキラーをやっている人にライト層の方はあまりおらず、キラーの過疎を示唆していることだと思います。少しこじつけのようになってしまいましたが違和感を覚えたので。

 

運営様からの一言

私たちとしては、マッチが開始して最初の数分で発電機が大体2台は修理が終わると考えています。数分後以降も残り5台であり続けることは意図していません。遠くにある発電機数台を諦め、隣接している発電機を守るのに集中した方がいいかもしれませんよ。他にも動画投稿や配信を行っている人の中にはとても上手な人もいますので、参考にしてみるのもいいと思います。学ぶところがあると思いますよ。

曲解します。「破滅のナーフ如きでピーピー言ってないで発電機固めるとか作戦組めよ。自分で考えられないなら動画観て学んでね!でもトンネル対策でDSはあるしキャンプするとランクあがらんけどね!w」

こんな感じでしょうか。うーん。少なくとも"良い"文章ではないですね。

 

さいごに

僕が挙げた以外にもドクターのことについてなどなど書かれていましたが疲れたのとあまり興味がないのでやめます。初心者サバイバーのことは多く配慮されているのにキラーは軒並み無視されているイメージです。今に始まったことではありませんが今後もサバイバーの強化及びキラーの弱体化は進みそうなので焚火オンライン化が進みそうです。

仮に今キラーをやるのなら通電はするものとしてトンネルキャンプノーワンぐらいでしか僕の力では通用しなさそうです。それはそれでつまらないのであまりやりたくないのですが…。現環境でキラーをやってくれている方、この場を借りて御礼を言いたいと思います。ありがとうございます。

 

おわり。

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村

 

PVアクセスランキング にほんブログ村

とある科学の超電磁砲T 第3話 バルーンハンター 感想

はじめに

超電磁砲3期第3話!先週はついに大覇星祭が始まり、競技もスタートしつつ何か怪しげな人物の動きがありましたね。

parco1021.hatenablog.com

 

※注意事項※

  • 著作権に触れるので本記事において公式ページ以外の"あらすじ"まとめはしません。なのでアニメおよび原作をご覧になっていない方は何を言っているのかわからないと思うので是非アニメをご覧になってみてください。AbemaTVで観られます。

  • 本記事の対象者は①アニメを見た方、②原作を読んでおり、アニメを観るか悩んでいる方です。

あらすじ&予告映像

偶然から美琴と間違われて、御坂妹は常盤台中学の選手としてバルーンハンターに参戦することになってしまう。能力者の質で勝る常盤台中学の面々は気合十分、競技開始直後から消極策をとる相手校を前に楽勝かと思われたが、なぜか次々に脱落者が出てしまう。 それは相手校のブレーンである馬場の奇策だった。実は暗部組織『メンバー』の一員である彼は、ある任務のために常盤台中学の選手たちの詳細なデータを集め、綿密な対策を練っていたのだ。 そんな中、「とある」実験での経験を活かした御坂妹が快進撃。それに対して馬場は、「御坂美琴」を封じるための策をみなに伝え、自分の本来の目的を達しようと画策する――。

引用元:とある科学の超電磁砲T公式ページ

 

 

 

感想

今回は「バルーンハンター」という頭の上の風船を割りあう競技が行われた回でした。あらすじは↑で引用した通りなのですが、間違って美琴さんの代わりにミサカが出ることになります。

 

f:id:Parco1021:20200125161242j:plain引用元: とある科学の超電磁砲T公式ページ

 

ミサカが大人数から攻められ、攻撃をかわしつつ反撃するアクションシーンがアニメで再現されていてカッコよかった!漫画だとどうしてもコマだし演出難しいですもんね

ミサカのアクションシーンは是非とも皆さんにみてほしいです。

 

f:id:Parco1021:20200125161741j:plain引用元: とある科学の超電磁砲T公式ページ

 

上条さん上条さん上条さん 

なんででしょうね。超電磁砲での上条さんは異常にかっこよく見えます。乙女フィルターかかっているからかしら…。この後食蜂さんと上条さんが初めて対面するのですが、なぜ"はじめまして"であるにも関わらず上条さんの名前を知っていたかは新約11巻を読めばわかります。やばばです。

 

f:id:Parco1021:20200125161946j:plain引用元: とある科学の超電磁砲T公式ページ

 

今回、原作と異なる点は大覇星祭中の黒子ちゃんがひったくりを捕まえるシーンが追加されていたことです。とてもやる気のなさそうにきちんとジャッジメントのお仕事をしていました。

 

イヤホンをつけてアニメを試聴したんですけど、バルーンハンター中のテレパスでコミュニケーションをとっている時、本当に"テレパスっぽく"て感動しました。テレバスがどんななのかわからんけど。

 

さいごに

毎週この時間を楽しみに生きていると言っても過言ではありません。今週もよかったです。今回は原作8巻最初の45話途中~47話途中まででした。是非原作及び食蜂さんと上条さんのお話である新約11巻も読んでみてください。

©2018 鎌池和馬冬川基/KADOKAWA/PROJECT-RAILGUN T

画像及びあらすじは以下のとある科学の超電磁砲T 公式ページから

とある科学の超電磁砲T アニメ公式サイト

 

 

 

おわり。

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村

 

PVアクセスランキング にほんブログ村

とある科学の超電磁砲T 第2話 "大覇星祭" 感想

はじめに

超電磁砲3期第2話!!先週はイントロダクションということで大分内容を丁寧に放映していたイメージでしたが、今回は本格的に話が進みましたね!第2話は原作で7巻44話~原作8巻45話の途中まででした。下にリンクを貼っておくのでよければ読んでみてください。

 

※注意事項※

  • 著作権に触れるので本記事において公式ページ以外の"あらすじ"まとめはしません。なのでアニメおよび原作をご覧になっていない方は何を言っているのかわからないと思うので是非アニメをご覧になってみてください。AbemaTVで観られます。

  • 本記事の対象者は①アニメを見た方、②原作を読んでおり、アニメを観るか悩んでいる方です。

あらすじ

無事(?)開会式を終え、ついに始まった『大覇星祭』。またしても佐天はとある都市伝説――『不在金属(シャドウメタル)』の話を聞きつけてきて、黒子に大目玉を食らっていた。一方、美琴は本来なら黒子と一緒に出場するはずだったペア競技に、黒子本人の計らいによって婚后との風神・雷神コンビで出場することに。最初の競技となる二人三脚では、対戦校から激しくマークされながらも、能力の使い方に一日の長を見せつけて、さっそく大活躍する。そんな能力者同士が繰り広げる競技を学園都市内外の観客が楽しんでいる中、裏側でなにかを企むものの姿があった――。

引用元:とある科学の超電磁砲T公式ページ

 

予告映像

感想

結論から言うと今回も大満足です。先にも述べた通り、1話半ほどの進行だったのでゆっくりで観やすかったと思います。

 

感想を殴り書きしたものに少し足して下に記します。

大覇星祭で黒子が乗り回していたいかつい車椅子は固法先輩にお願いして用意してもらったらしいです。その時能力で怪我観られて恥ずかしがる黒子…グッジョブ。

 

いよいよ大覇星祭開幕!選手宣誓は第1話で食蜂さんと軍覇さんに決定しました。

ちゃんと選手宣誓の言葉を覚えてきたのに覚えてきていない(忘れてしまった)軍覇さんに食われる食蜂さん可哀想。

f:id:Parco1021:20200118015151j:plain

引用元: とある科学の超電磁砲T公式ページ

 

佐天さんの声が少し違和感があったのですがこんな感じでしたかね??気のせいかな

 

アニメでの第一種目は二人三脚です。御坂さんは婚后さんとの風神・雷神コンビで出場しました。

解説はへそ出しカチューシャこと雲川芹亜さんです。おそらくですが禁書の方でもまだアニメでは出ていないので今回がとあるシリーズ全てを通して初登場かな??

f:id:Parco1021:20200118020040j:plain

引用元: とある科学の超電磁砲T公式ページ

 

常盤台の風神雷神コンビ好き

何がとは言いませんが、ハムスターグッジョブ!

 

「メンバー」のショチトルの声が思ったよりも女の子でしたね。この子禁書のアニメに出てたかしら…??アステカの魔術師周り少しヨクワカンナイ。

 

湾内と泡浮さんの会話ほんわかする。

 

原作と異なる(内容が足された)点

原作では上条さんとの賭け内容は省略されていたんだけどアニメではちゃんと説明があって禁書を知らない方にも配慮されています

 

食蜂さんのリモコン没収するの吹寄ちゃんから固法先輩に変わっていた

 

確信はなかったのですが、Twitterで書かれていました。

 

【速報】ED初登場

あまり僕は歌詞に注意して聞かないので初めて聞いた時には気付かなかったのですが歌詞が原作を読んでいる人にはうおおお!!ってなる(らしい)です。

 

さいごに

今回も情報の補填等にとても気を遣われていたな、という感想です。僕が寝起きで少しぼけーっと見ていたので違う点があったら教えてください。来週の第3話「バルーンハンター」も楽しみです。

©2018 鎌池和馬冬川基/KADOKAWA/PROJECT-RAILGUN T

画像及びあらすじは以下のとある科学の超電磁砲T 公式ページから

とある科学の超電磁砲T アニメ公式サイト

 

 

 

おわり。

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村

 

PVアクセスランキング にほんブログ村

スポンサーリンク