めもめも

このブログに記載の内容は個人の見解であり、必ずしも所属組織の立場、戦略、意見を代表するものではありません。

Reinforcement Learning 2nd Edition: Exercise Solutions (Chapter 6 - Chapter 8)

Reinforcement Learning: An Introduction (Adaptive Computation and Machine Learning series)

Reinforcement Learning: An Introduction (Adaptive Computation and Machine Learning series)

Chapter 6


Exercise 6.4

github.com


Exercise 6.9, 6.10

github.com

Exercise 6.14

github.com

Chapter 7


Exercise 7.2

The "TD error sum" algorithm is worse than TD(n) because it doesn't get the benefit of newer value estimation achieved in the later steps.

github.com

Exercise 7.3

github.com

Chapter 8

Exercise 8.1

Dyna-Q has an advantage over TD(n) because the learned model can be reused in the later episodes in Dyna-Q whereas the learned path is used only for a single set of updates in TD(n). It is also possible for Dyna-Q to update values on the previous paths using data learned in the later paths.

github.com

Exercise 8.2

It's because Dyna-Q+ has more exploratory nature, but actual advantage depends on hyper-parameters and environment.

Exercise 8.3

Since Dyna-Q+ has more exploratory nature, once the optimal path has been found, Dyna-Q has less fluctuation (i.e. follows the optimal path) than Dyna-Q+.

Exercise 8.4

In terms of performance, the alternate approach is worse than Dyna-Q+ since the alternate approach doesn't propagate the "unvisited information" to other cells.

github.com

Exercise 8.6

It strengthens the sample updates. With highly skewed distribution, you can get the better estimation with fewer samples.

Exercise 8.8

Uniform sampling works better for highly non-deterministic environment.

github.com

「手話で考える」とは

何の話かというと

日本語ネイティブの聴者として、英語に続く、新たな第二言語として、「日本手話」を学び始めて2年ほど経ちました。今の習得レベルは、CEFR にマッピングすると、多分、Bレベルで、こちらのたどたどしい表現につき合ってくれる(こちらに合わせて表現を調整してくれる)相手であれば、それなりに複雑な内容の会話もできる感じです。(ほんとは韓国語も勉強中なんですが、そっちはまだAレベルなので、その話はまた後日。。。)

で、手話を勉強されている方は、日本にもたくさんいらっしゃると思うのですが、世間の情報を見ていると、英語などの第二言語を学んだ上で、次の第二言語(語弊を恐れずにいうと、新しい「外国語」)として日本手話を学ぶという観点での話があんまり出てこないので、ちょっと自分の経験を書き残しておこうかと思った次第です。

※ 英語の勉強については、こちらの資料にまとめてあります。

日本手話と日本語対応手話

話の前提として、この説明がどうしても必要なので、要点だけ簡単に。。。。日本で用いられる手話には、大きくわけて「日本手話(JSL)」と「日本語対応手話」があります。日本手話は、ろう者の間で自然に生まれた「自然言語」としての手話です。日本のろう者の中で生まれたものなので、当然ながら、海外に住んでいるろう者が使う手話とは異なります。さらにいうと、日本語とも異なる、独立した一つの言語です。

日本語対応手話は、日本語を知っている人が、日本語の文章に合わせて、単語レベルで、対応する手話表現を示すものです。文末の「です」など、もともと日本手話に存在しない単語は、後付けで、対応する表現を決めたりしているようです。

ちなみに私の場合は、もともと言語学とか言語哲学に興味もあって、「自然言語」としての手話にとても興味を惹かれて、頭の中から日本語を排除して、純粋に日本手話で思考するという体験をしたくて、日本手話のレッスンに参加を始めました。(というのが、冒頭の Tweet にも繋がっていたりもします。)

ナチュラルアプローチのレッスン

手話のレッスンには「ナチュラルアプローチ」と呼ばれる手法があり、日本手話ネイティブのろう者の講師から、日本語を一切使わずに、日本手話だけで教えてもらうことができます。日本語なしでどうやって教えるのか不思議に思うかもしれませんが、これがホントに魔法のように伝わるんですよ。(このあたりは、講師ごとの教え方のテクニックがあると思うので、まずは、ぜひナチュラルアプローチのレッスンに参加してください。)

私の場合は、前述のような興味があったので、レッスンに参加する時は、頭を空っぽにして(日本語で考えないようにして)もう幼稚園児の気分で、講師の真似をして手を動かしていたのですが、かならず、イラストや身振りを用いて、「今の何の話をしているのか」という文脈が示されるので、「なるほど。こういう状況では、この表現をつかうのかーーー」と、(日本語を介さずに)状況と表現が直接に結びついていくので、日本手話らしい(ネイティブっぽい)表現方法が理解できて楽しいです。

あと、ナチュラルアプローチのいいところは、「話が伝わらない時にどう対応すればよいか」が訓練できることかなぁと。日本語もOKの環境だと、ついつい日本語で聞いたりしちゃうと思いますが、ナチュラルアプローチのクラスでは、筆談も含めて日本語は一切使いません。なので、「その表現の意味がよくわかりませーん」と質問すると、講師は、ヒントとなる関連キーワードを示したり、さまざまな具体例をあげて(場合によっては身振りも含めて)その表現を使うべき状況を説明します。(「ドナルドトランプ」の単語がわからなければ、「アメリカ」「大統領」「ホワイトハウス」などのキーワードを示すとか、「しまい込む」の単語がわからなければ、ヘソクリをタンスの奥にしまい込む様子を手話と身振りで示すとか。)こういうのって、逆に自分が「あ、やばい、今の表現、なんか伝わってない?」と思った時に、とっさに言い換えをするヒントというか、いい練習になる気がしています。

そういえば余談ですが、/考える/方法/という表現の意味がわからなかった時に、その講師は、コップに少しだけ水を入れて、「これを見て、少なすぎると思うか、まだ残っていると思うか」と(日本手話で)説明しました。いや、わかる方にはわかると思いますが、ものすごい「おぉぉぉぉぉ。なるほどー」な体験でした。つまり、日本語で対応する単語(あえて答えは言いません)を示すのは一瞬ですが、実際にそれが何を示しているかという抽象概念をものすごく具体的に噛み砕いて説明しているわけです。たぶんこれ、日本語の単語を聞いてしまったら、それだけ覚えてわかった気になってしまい、実際に、/考える/方法/という表現を使う適切なシーンにまで思考が至らなかったと思うのですよ。言葉を理解するというのは、まさにこういうことなんだなぁと実感した経験でした。

(参考)ナチュラルアプローチの教授法・考え方については、こちらが参考になります。
大学語学科目としての日本手話クラス:カリキュラム開発と授業運営


コードスイッチングの体験

で、ぶっちゃけ、当初の目標の「日本手話だけで思考する」ができるようになったかというと、まだ単語レベルでは、日本語の単語がまず頭に浮かぶこともあって、完全に日本語を排除するのは難しいかなぁという所です。なのですが、日本語で考えている時と手話で考えている時で、頭のモードが切り替わる感覚はわかるようになってきました。(いわゆるコードスイッチングというやつですね。)

これは、日本語と英語のバイリンガルの方(もしくは、どちらかを第二言語としてかなり身につけている方)ならわかると思うのですが、日本語モードの時に、突然、英語で話そうとすると、「うっ」とつまって、ちょっとまって、今、頭を英語に切り替えるから・・・となるやつですね。

で、これに関連して(自分の中での)「あるある」なのですが、たとえば、英語モードの頭で英語で会話していると、突際に、ごく普通の日本語の単語が思い出せなくなることがあります。これは、自分の頭の中に、日本語の回路と英語の回路が独立して出来上がっていて、日本語の単語は日本語回路の方にストアされているので、英語モードの時は、そっちにアクセスできなくなるんだと理解しています。(英語での会話中に、「こんな感じの日本のことわざあるー?」という質問がかなりの強敵で、一回、頭を日本語モードにもどさないと、ぜったいに、ことわざなんて思い出せませんwww)

実は、最近、ついに、この現象が手話での会話中に発生するようになりました。これって、頭の中に手話モードの回路ができてきた証拠なので、個人的には、「いぇーい」な感じです。

とはいえ、日本語→日本手話のコードスイッチングには、まだちょっとウォーミングアップが必要で、手話のレッスンの前は、必ず30分ほど日本手話の動画を見て、頭を切り替えるようにしています。(という意味だと、レッスン中に日本語の会話がまじる環境は、実は、逆に頭が混乱するので、苦手だったりします。)

というわけで、まずはここまで。。。。ご質問などは、コメント、もしくは、Twitter でどうぞ。

おまけ(参考資料)

自然言語としての日本手話の仕組みが学べる本

www.bbed.org

www.kinokuniya.co.jp

日本手話とろう者の文化の関わりが学べる本

www.seidosha.co.jp

www.kinokuniya.co.jp

Reinforcement Learning 2nd Edition: Exercise Solutions (Chapter 2 - Chapter 5)

Reinforcement Learning: An Introduction (Adaptive Computation and Machine Learning series)

Reinforcement Learning: An Introduction (Adaptive Computation and Machine Learning series)

Chapter 2



Sample code for the multi-armed bandits

github.com

Chapter 3





Sample Notebook for Gridworld example

github.com

Chapter 4



Sample code for the Jack's car rental problem

github.com

github.com

github.com

Exercise 4.8

Since p<0.5, if you keep playing with a constant bet, you will eventually lose in average. So, at some points, you need to bet enough to win at once. In this particular case, the player decided to bet 50 when he/she has 50, and to bet 25 when he/she has 75 (hoping to win with this bet). Similarly, the player decided to bet 25 when he/she has 25 to reach 50 (hoping to win at the next bet).

Exercise 4.9

github.com

Exercise 4.10

\displaystyle q_{k+1}(s,a) = \sum_{s',r}p(s',r\mid s,a)\left\{r+\gamma \max_{a'}q_{k}(s',a')\right\}

Chapter 5

github.com

Exercise 5.12

github.com