質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.02%
強化学習

強化学習とは、ある環境下のエージェントが現状を推測し行動を決定することで報酬を獲得するという見解から、その報酬を最大限に得る方策を学ぶ機械学習のことを指します。問題解決時に得る報酬が選択結果によって変化することで、より良い行動を選択しようと学習する点が特徴です。

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

統計

統計は、集団現象を数量で把握することです。また、調査で得られた性質や傾向を数量的に表したデータのことをいいます。

Q&A

解決済

統計Rで、変数の値を変えても、出力結果が変わらない。

YYJP
YYJP

総合スコア22

強化学習

強化学習とは、ある環境下のエージェントが現状を推測し行動を決定することで報酬を獲得するという見解から、その報酬を最大限に得る方策を学ぶ機械学習のことを指します。問題解決時に得る報酬が選択結果によって変化することで、より良い行動を選択しようと学習する点が特徴です。

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

統計

統計は、集団現象を数量で把握することです。また、調査で得られた性質や傾向を数量的に表したデータのことをいいます。

1回答

0グッド

0クリップ

733閲覧

投稿2021/05/15 17:53

前提・実現したいこと

強化学習で、下記の初心者向けの課題に取り組んでいます。

『選択肢A(報酬が70%の確率で得られる), B(報酬が30%の確率で得られる)のうちから行動を選択する、Q学習モデルの仮想実験を、1セット200試行として、1000セット行い、1セットあたりで、報酬が70%の確率で得られるAを選んだ試行の割合を算出しなさい。』
*片平健太郎著 行動データの計算論モデリング:強化学習モデルを例として 問題2.2

上記の課題において、α, βの値を変更することで、Aを選択する割合がどのように変化するかを確認したいのですが、α, βの値を変更しても、出力結果(=print(table(c)) の値)が変わりません。
どうしたら、α, βの値の変更が、反映されるようになるでしょうか?

該当のソースコード

R

1# ----------------------------------------------------- # 2# calc_optimrate() 3# 章末問題2.3の回答に使える関数 4# qlearning_simulation.Rがベース 5# ----------------------------------------------------- # 6 7# 関数calc_optimrateの定義 8# 最適な選択肢を選択した割合を返す関数 9# 引数 10# T: 試行数、pr: それぞれの選択肢の報酬確率、alpha: 学習率、beta: 逆温度 11i<-1 12 13for (i in 1:1000) { 14 15 # 試行数 16 T <- 200 17 alpha <- 0.3 # 学習率 18 beta <- 5.0 # 逆温度 19 20 # それぞれの選択肢の報酬確率 21 pr <- c(0.7,0.3) 22 23 24 calc_optimrate <- function(T, pr, alpha, beta) { 25 26 # 最適な選択肢を必ず1番目の選択肢にする 27 if (pr[1] <= pr[2]) { 28 stop(paste("1番目の報酬確率を2番目より大きくしてください。")) 29 } 30 31 # Q値の初期化(選択肢の数 x T) 32 Q <- matrix(numeric(2*T), nrow=2, ncol=T) 33 34 c <- numeric(T) # 各試行での選択(1=A, 2=B) 35 r <- numeric(T) # 各試行での報酬 36 pA <- numeric(T) # Aの選択確率 37 38 39 40 41 for (t in 1:T) { 42 43 # ソフトマックスで選択肢Aの選択確率を決定する 44 pA[t] <- 1/(1+exp(-beta*(Q[1,t]-Q[2,t]))) 45 46 if (runif(1,0,1) < pA[t]) { 47 # Aを選択 48 c[t] <- 1 49 r[t] <- as.numeric(runif(1,0,1) < pr[1]) 50 } else { 51 # Bを選択 52 c[t] <- 2 53 r[t] <- as.numeric(runif(1,0,1) < pr[2]) 54 } 55 56 # 行動価値の更新 57 if (t < T) { 58 59 Q[c[t],t+1] <- Q[c[t],t] + alpha * (r[t] - Q[c[t],t] ) 60 61 # 選択肢していない行動の価値はそのままの値を次の時刻に引き継ぐ。 62 # 3-c でc=1 なら2, c=2 なら1, というように 63 # 逆側の選択肢のインデックスが求まる。 64 Q[3-c[t],t+1] <- Q[3-c[t],t] 65 } 66 } 67 68 return(list(optimrate=mean(c==1), 69 pr=pr, 70 alpha=alpha, 71 beta=beta)) 72 } 73 74print(table(c)) 75i <- i+1 76}

試したこと

α, βの値を変更することにより、print(table(c))の値が変わることを期待したのですが、変わりません。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答1

0

ベストアンサー

関数を定義しているだけで実行していないので、alphaやbetaをいくら変えてみたところで、「結果」が変わるはずがありません。というか何の結果も出ていないはずです。

投稿2021/05/15 18:12

編集2021/05/15 18:13
KojiDoi

総合スコア13447

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

YYJP

2021/05/16 06:49

そうなんですね。見直して、再度投稿し直します。ありがとうございました。

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

強化学習

強化学習とは、ある環境下のエージェントが現状を推測し行動を決定することで報酬を獲得するという見解から、その報酬を最大限に得る方策を学ぶ機械学習のことを指します。問題解決時に得る報酬が選択結果によって変化することで、より良い行動を選択しようと学習する点が特徴です。

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

統計

統計は、集団現象を数量で把握することです。また、調査で得られた性質や傾向を数量的に表したデータのことをいいます。