読むとGPAが上がるブログ(仮)

GPA芸人が気の赴くままに何かを書くブログ

「えっちなイヤホン」とかいうやつ

えっちなイヤホンってなーんだ?

声優の小岩井ことりさんが「えっちなイヤホン」とか言ってたやつ。 これ↓

おれはこの記事を見て存在を知りました。 文才の塊。

感想

3つほど普通のイヤホンと聴き比べました。

ススメ☆オトメ ~jewel parade~

まさかのデレマス曲。 イヤホンといえば曲を聴くものみたいなとこありますからね。

結果:そんなでもなかった

まあ普通でした。 普通のイヤホンでいいし、むしろそっちの方がいい可能性もあるかと。


某ASMR音声

ゆーちゅーぶで検索して最初の方に出てきたやつを適当に選んで聴きました。

結果:えちえち!!!!!!!!!

正直ASMRなめてました。 ASMRだけに。(は?)

いや、今回聴いたのは割とノーマルなやつなので安心してください。

聴いてたんですけど、普通のイヤホンと比べて声が近くに感じるし、本当に吐息がかかってる感じでもうやばかったですね。 マジで耳に口が触れるんじゃないかみたいな距離で喋られてる感じ。 バイノーラルに特化してるらしいだけあって、移動とかもすごい(語彙力)。 聴いてて体がうずうずするというか落ち着かなくなってしまって5分も聴けなかった。 マジです。

これリアルなVRとかと組み合わせたらそりゃもう大変なことになると思いますよ。

まとめ

新たな世界への入り口は、思っていた以上に近くにあったようです。

強化学習の基礎(その2)

前回の記事の続きです。

シリーズ2回目ということで、より具体的な例を用いて強化学習の概念を説明していきます。 例として、テトリスのマラソンモード(ひたすらテトリミノを消し続けるモード)をプレイする「AI」を強化学習で作成する、みたいな状況を考えます。

前回、「強化学習には報酬の概念がある」ということを書いたと思います。 しかし、その報酬はどこから来るのかについては特に言及していませんでした(似た存在であるところの、教師あり学習における「正解」は、データとして与えられているのでそれを使えばよい)。 これの説明には強化学習のことをもう少し詳しく知る必要があるので、これを説明していきます。 途中で報酬の話も出てきます。

強化学習モデリング

環境とエージェント

強化学習では、「環境」と「エージェント」という2つの概念を用い、これらの相互作用を使って考えることがよくあります。 「環境」とは、いわば「世界」そのもの、もしくは神であり、基本的に考えているプログラムに関する全ての情報を保持します。 一方で、「エージェント」とは、その環境(「世界」)に生きるものと考えられます。

と言っても意味不明なので、テトリスの例で説明します。 環境はゲームのプログラムであると考えられます。 今まで消したライン数や、これからプレイヤーが引いてくるテトリミノの順番など、ゲームに関する全情報を把握しているはずです。 一方で、エージェントはプレイヤーです。 現在のフィールドの情報などは分かりますが、例えば10回後の未来に引いてくるテトリミノの種類などは当然分かりません。

そして、作りたいのはテトリスをプレイする「AI」なので、強化学習の文脈で言えば、エージェントを作る、ということになります。

相互作用

さて、強化学習は、よく環境とエージェントの相互作用でモデル化されるという話でした。 この部分を詳しく見ていきます。

  1. 環境の中のエージェントは、自分から「見える」環境の情報を「見」ます。 これを「観測」と言います。 テトリスの例では、現在のフィールドの状態や、数回後までの引いてくるテトリミノの種類などが観測できます。

  2. 観測で得た情報をもとに、どんな「行動」をするか決め、行動します。 どの列にミノを置くか、ということですね。

  3. 行動をすると、環境から報酬を受け取ります(受け取らない場合はゼロの報酬を受け取ると考える)。 テトリスの例では、例えば消した列数を報酬として受け取るみたいな感じですね。 この場合、消さなかったら報酬ゼロとなります。 ちなみに報酬は負の値でもよいので、例えば上まで積み上がってゲームオーバーになったら負の報酬を貰う、のようにしてもよいです。 ここら辺の報酬の設定は、人間が行います。 教師あり学習で、データに正解をつけるのが人間なのと同じような話です。

  4. 行動をすると、報酬を受け取るだけではなく、同時に環境が変化します。 テトリスの例では、ミノを置けば(行動)、フィールドの状態(環境の一部)が変わるのは当然ですね。 なので、再び観測して情報を得ます。

これを繰り返すのが、強化学習の基本的な流れになります。

学習

前回の記事で述べた通り、機械学習の目的は「入力を受け取り、望ましい出力をできるようにする」ことです。 これは、強化学習においては、

  • 入力 : 観測で得られた情報
  • 出力 : 行動
  • 望ましい : 貰える報酬が多い

と解釈します。

また、前節で述べた通り、基本的にエージェントは繰り返し行動します。 従って、より正確には「望ましい」は「貰える報酬の和が多い」と解釈します。 1回だけ報酬4を貰ってその後貰えないよりは、3回報酬2を貰える方が良いということです。

まとめると、強化学習とは、

「 観測によって得た情報をもとに、貰える報酬の和が大きくなるような行動を取る」ように、エージェントを自動調整すること

となります。

ここまでが強化学習の詳しめの説明となります。 私の日本語力がアレなので分かりにくい説明になってしまいました。 すみません。 次回はいよいよ実装の基本の紹介に入りたいと思います。

強化学習の基礎(その1)

このシリーズでは、強化学習の基礎と、ある程度の実装の基本みたいなところを紹介できればいいな〜と思っています。 全3回くらいを予定しています。

第1回となる今回は、機械学習強化学習の基礎(概念)のさらっとした説明をします。

機械学習とは

目的

機械学習の目的は、超ざっくり言いますと、

何かしら入力が与えられた際、そこに適当な演算等をして望ましい出力を出すこと

です。

(例)手書き文字をスキャンして活字化する、みたいなプログラムの場合、以下のような感じになります。

  • 入力 : 手書き文字の画像
  • 出力 : 文字

「学習」

上の例のようなプログラムは、口で言うのは簡単ですが、じゃあどうやって作るのか、という話になります。

入力に対して何らかの演算をして出力を求めるわけですが、機械学習では、その演算の内容を自動的に調整して、望みの出力が得られるようにします。この作業を「学習」と言います。

その学習に、機械学習では「データ」を用います。 活字化プログラムの例で言えば、色々な人が書いた色々な文字の画像を大量に用意する感じです。

このデータがどんなデータかにより、機械学習は大きく3つに分類されます。

機械学習の種類

教師あり学習

「データを入力とした時に、プログラムが出すべき『正解』」も一緒にデータとして与えられている場合、これを使うのが教師あり学習です。

さっきの活字化プログラムはこれを想定しています。 つまり、例えば100人が書いた「芸」という文字の画像と共に、「これらの字は『芸』である」という正解データを与えるわけです。 こうすれば、他の人が書いた「芸」の字の画像もそんなにデータと違わないはずなので、プログラムは「芸」と出力できるようになる、という感じです。

教師なし学習

先ほど説明した「正解データ」がなく、本当にただデータがあるだけの場合、これになります。 正解が分からないので、データだけから分かるはずの情報しか出せないと思います(教師なし学習は全然分からないので自信ない)。 具体的な使用例としては、与えられた入力を何個かのグループに分類する、みたいなのがあります。

強化学習

はい、前置きがものすごく長くなりましたが、メインの強化学習です。

強化学習は、ある意味で上2つの中間みたいなやつです。 基本的に教師なし学習っぽい感じ(データに正解がない)なのですが、違うのは「報酬」という概念がある点です。 ある入力に対し、何かしらを出力するわけですが、それに対し「報酬」が与えられる場合があります。 当然報酬を貰えた方がいいので、報酬を貰える出力は正解に近い、と考えることができるわけです。

ただ、ここで注意しなければならないのは、報酬を貰えたとしても、その出力が最善かどうかは分からない、ということです。 別の出力をすればもっと多くの報酬を貰えたかもしれません。 また、報酬を貰えるまでにタイムラグがある場合もあり、報酬が貰えた瞬間の出力が良いかどうかは確実には分からないわけです。

ここまでが強化学習の概要になりますが、具体的な例を見ないと分かりにくい部分が多分にあると思われます。 なので具体例を挙げようと思ったのですが、長くなってしまったのでここからは次回の記事に回そうと思います。