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

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

新規登録して質問してみよう
ただいま回答率
85.48%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

強化学習

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

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

5926閲覧

for文、前ループの値を保持したい

shuto_fujiwara

総合スコア26

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

強化学習

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

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/01/30 17:32

pythonの強化学習を勉強しており、
その中で出てくるQ値の更新式を書きたいです。

csvファイルの中に格納されている状態変数(a,b,c,d,e)を一行ずつ取り出して、
報酬(2r)と割引率(0.9)と計算して更新していきます。

Python

1class Qupdate: 2 def __init__(self,x): 3 self.X = x 4 av = 0.26 # 平均 5 sd = 0.22 # 標準偏差 6 q_value = 1 7 8 # update_q 9 r = (self.X[4]-av)/sd # 報酬の標準化 10 update_y = np.array( 2 * r + 0.9 * q_value) 11 12#main 13if __name__ == '__main__': 14 with open('ex.csv','r') as f: 15 data = pd.read_csv("ex.csv") 16 x = data.loc[:, ['a', 'b', 'c', 'd','e']].values 17 18 for row in x: 19 uq = Qupdate(row) 20 21 f.close

これでいいと思ったのですが間違いがありました!
Q値は一つ前の状態変数と報酬を使って更新しなくてはいけないとのことです。

このような更新式です。

お聞きしたいのは、
main文で一行ずつ取り出した x を別の値 x_prev などと置いて
二回目のループから# update_q の計算をしたいのですが、
イマイチやり方がわかりません。

望んでいるQ値は
for 1 ループ目 value_q = 1
for 2 ループ目 r = x_prev[4]/sd
update_y = np.arrray(2r + 0.9 * value_q)
for 3 ループ目 r = x_prev[4]/sd (2ループ目の状態変数eに更新されている)
update_y = np.arrray(2r + 0.9 * value_q)

....というように改善したいです。
ご回答よろしくお願いいたします。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

iPhoneからなのでテキトーになります。すみません。
i = (i + 1) % 2
で、これを実行するごとにiは0と1を繰り返します。0から始めるのと1から始めるのと2つの変数を用意すれば、それぞれ入れ替え入れ替えになります。csvファイルから読み取る変数を配列で用意しておけば、今回と前回を使い分けられます。

投稿2020/02/01 04:48

Q71

総合スコア995

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問