icoxfog417 / baby-steps-of-rl-ja Goto Github PK
View Code? Open in Web Editor NEWPythonで学ぶ強化学習 -入門から実践まで- サンプルコード
License: Apache License 2.0
Pythonで学ぶ強化学習 -入門から実践まで- サンプルコード
License: Apache License 2.0
p74、「Valueベースの基準はOff-policy」、「Policyベースの基準はOn-policy」と書いています。でも「Off-policy、On-policy」と「Valueベース、Policyベース」関係がないので、「Off-policy、On-policy」で「Valueベース、Policyベース」を区別できません。
SARSAアルゴリズムはOn-policyですが、実はValueベースのアルゴリズムです。論文にもValueベースが書いています。
ページ番号: 改訂版第2版 p74
pip freeze
の実行結果 (下に添付)(例外のメッセージ、ログ、画面ショットなどを添付)
モンテカルロ法の更新式に誤植を見つけました.
p.61のepisode end の式にも同様の誤植が存在します.
またepiside end の式最後の項のラムダの次数はT-t-1が正しいと思います.
ページ番号: p.60,61
pip freeze
の実行結果 (下に添付)(例外のメッセージ、ログ、画面ショットなどを添付)
執筆時点ではPowerShellでの有効化が手間だったが、この点が表題の通り改善された。その旨を追記。
環境構築できない code : 0-2起動しない
ページ番号: p6
colabの仮想環境に直接git clone(google driveではなくて)
requirements-colab.txtを読み込ませてインストール。
tensorflowが1.15だったためコンパチエラーがでていたので1.14を入れ直した。
!python "/content/baby-steps-of-rl-ja/welcome.py"
と入れて実行して下記のエラー
day4からGPUを使うことを推奨されているのでcolabを使いたい
ちなみに自分のmacにcondaをいれて環境構築を試みたけれど、Illegal instruction: 4とでて失敗
OS: mac osx 10.12.6
Python version:3.6.8
(google colabは3.7はまだサポートしていないみたいです)
pip freeze
の実行結果 (下に添付)
absl-py==0.8.1
alabaster==0.7.12
albumentations==0.1.12
altair==3.2.0
astor==0.8.0
astropy==3.0.5
atari-py==0.2.6
atomicwrites==1.3.0
attrs==19.3.0
audioread==2.1.8
autograd==1.3
Babel==2.7.0
backcall==0.1.0
backports.tempfile==1.0
backports.weakref==1.0.post1
beautifulsoup4==4.6.3
bleach==3.1.0
blis==0.2.4
bokeh==1.0.4
boto==2.49.0
boto3==1.10.18
botocore==1.13.18
Bottleneck==1.3.0
branca==0.3.1
bs4==0.0.1
bz2file==0.98
cachetools==3.1.1
certifi==2019.9.11
cffi==1.13.2
chainer==6.5.0
chardet==3.0.4
chart-studio==1.0.0
Click==7.0
cloudpickle==1.2.2
cmake==3.12.0
colorlover==0.3.0
community==1.0.0b1
contextlib2==0.5.5
convertdate==2.2.0
coverage==3.7.1
coveralls==0.5
crcmod==1.7
cufflinks==0.17.0
cupy-cuda101==6.5.0
cvxopt==1.2.3
cvxpy==1.0.25
cycler==0.10.0
cymem==2.0.3
Cython==0.29.14
daft==0.0.4
dask==1.1.5
dataclasses==0.7
datascience==0.10.6
decorator==4.4.1
defusedxml==0.6.0
descartes==1.1.0
dill==0.3.1.1
distributed==1.25.3
Django==2.2.7
dlib==19.18.0
dm-sonnet==1.35
docopt==0.6.2
docutils==0.15.2
dopamine-rl==1.0.5
earthengine-api==0.1.206
easydict==1.9
ecos==2.0.7.post1
editdistance==0.5.3
en-core-web-sm==2.1.0
entrypoints==0.3
et-xmlfile==1.0.1
fa2==0.3.5
fancyimpute==0.4.3
fastai==1.0.59
fastcache==1.1.0
fastdtw==0.3.4
fastprogress==0.1.21
fastrlock==0.4
fbprophet==0.5
feather-format==0.4.0
featuretools==0.4.1
filelock==3.0.12
fix-yahoo-finance==0.0.22
Flask==1.1.1
folium==0.8.3
fsspec==0.6.0
future==0.16.0
gast==0.2.2
GDAL==2.2.2
gdown==3.6.4
gensim==3.6.0
geographiclib==1.50
geopy==1.17.0
gevent==1.4.0
gin-config==0.2.1
glob2==0.7
google==2.0.2
google-api-core==1.14.3
google-api-python-client==1.7.11
google-auth==1.4.2
google-auth-httplib2==0.0.3
google-auth-oauthlib==0.4.1
google-cloud-bigquery==1.21.0
google-cloud-core==1.0.3
google-cloud-datastore==1.8.0
google-cloud-language==1.2.0
google-cloud-storage==1.16.2
google-cloud-translate==1.5.0
google-colab==1.0.0
google-pasta==0.1.8
google-resumable-media==0.4.1
googleapis-common-protos==1.6.0
googledrivedownloader==0.4
graph-nets==1.0.5
graphviz==0.10.1
greenlet==0.4.15
grpcio==1.15.0
gspread==3.0.1
gspread-dataframe==3.0.3
gunicorn==20.0.0
gym==0.14.0
-e git+https://github.com/lusob/gym-ple.git@df11bc8566b22011f635f4f74331fbc79fb3a9de#egg=gym_ple
h5py==2.9.0
HeapDict==1.0.1
holidays==0.9.11
html5lib==1.0.1
httpimport==0.5.18
httplib2==0.11.3
humanize==0.5.1
hyperopt==0.1.2
ideep4py==2.0.0.post3
idna==2.8
image==1.5.27
imageio==2.4.1
imagesize==1.1.0
imbalanced-learn==0.4.3
imblearn==0.0
imgaug==0.2.9
importlib-metadata==0.23
imutils==0.5.3
inflect==2.1.0
intel-openmp==2020.0.133
intervaltree==2.1.0
ipykernel==4.6.1
ipython==5.5.0
ipython-genutils==0.2.0
ipython-sql==0.3.9
ipywidgets==7.5.1
itsdangerous==1.1.0
jax==0.1.51
jaxlib==0.1.33
jdcal==1.4.1
jedi==0.15.1
jieba==0.39
Jinja2==2.10.3
jmespath==0.9.4
joblib==0.14.0
jpeg4py==0.1.4
jsonschema==2.6.0
jupyter==1.0.0
jupyter-client==5.3.4
jupyter-console==5.2.0
jupyter-core==4.6.1
kaggle==1.5.6
kapre==0.1.3.1
Keras==2.2.5
Keras-Applications==1.0.8
Keras-Preprocessing==1.1.0
keras-vis==0.4.1
kfac==0.2.0
kiwisolver==1.1.0
knnimpute==0.1.0
librosa==0.6.3
lightgbm==2.2.3
llvmlite==0.30.0
lmdb==0.98
lucid==0.3.8
lunardate==0.2.0
lxml==4.2.6
magenta==0.3.19
Markdown==3.1.1
MarkupSafe==1.1.1
matplotlib==3.1.0
matplotlib-venn==0.11.5
mesh-tensorflow==0.1.4
mido==1.2.6
mir-eval==0.5
missingno==0.4.2
mistune==0.8.4
mizani==0.5.4
mkl==2019.0
mlxtend==0.14.0
more-itertools==7.2.0
moviepy==0.2.3.5
mpi4py==3.0.3
mpmath==1.1.0
msgpack==0.5.6
multiprocess==0.70.9
multitasking==0.0.9
murmurhash==1.0.2
music21==5.5.0
natsort==5.5.0
nbconvert==5.6.1
nbformat==4.4.0
networkx==2.4
nibabel==2.3.3
nltk==3.2.5
notebook==5.2.2
np-utils==0.5.11.1
numba==0.40.1
numexpr==2.7.0
numpy==1.16.4
nvidia-ml-py3==7.352.0
oauth2client==4.1.3
oauthlib==3.1.0
okgrade==0.4.3
olefile==0.46
opencv-contrib-python==3.4.3.18
opencv-python==3.4.7.28
openpyxl==2.5.9
opt-einsum==3.1.0
osqp==0.6.1
packaging==19.2
palettable==3.3.0
pandas==0.24.2
pandas-datareader==0.7.4
pandas-gbq==0.11.0
pandas-profiling==1.4.1
pandocfilters==1.4.2
parso==0.5.1
pathlib==1.0.1
patsy==0.5.1
pexpect==4.7.0
pickleshare==0.7.5
Pillow==4.3.0
pip-tools==4.2.0
plac==0.9.6
-e git+https://github.com/ntasfi/PyGame-Learning-Environment.git@3dbe79dc0c35559bb441b9359948aabf9bb3d331#egg=ple
plotly==4.1.1
plotnine==0.5.1
pluggy==0.7.1
portpicker==1.2.0
prefetch-generator==1.0.1
preshed==2.0.1
pretty-midi==0.2.8
prettytable==0.7.2
progressbar2==3.38.0
prometheus-client==0.7.1
promise==2.2.1
prompt-toolkit==1.0.18
protobuf==3.10.0
psutil==5.4.8
psycopg2==2.7.6.1
ptyprocess==0.6.0
py==1.8.0
pyarrow==0.14.1
pyasn1==0.4.7
pyasn1-modules==0.2.7
pycocotools==2.0.0
pycparser==2.19
pydata-google-auth==0.1.3
pydot==1.3.0
pydot-ng==2.0.0
pydotplus==2.0.2
PyDrive==1.3.1
pyemd==0.5.1
pygame==1.9.6
pyglet==1.3.2
Pygments==2.1.3
pygobject==3.26.1
pymc3==3.7
PyMeeus==0.3.6
pymongo==3.9.0
pymystem3==0.2.0
PyOpenGL==3.1.0
pyparsing==2.4.5
pypng==0.0.20
pyrsistent==0.15.5
pysndfile==1.3.8
PySocks==1.7.1
pystan==2.19.1.1
pytest==3.6.4
python-apt==1.6.4
python-chess==0.23.11
python-dateutil==2.6.1
python-louvain==0.13
python-rtmidi==1.3.1
python-slugify==4.0.0
python-utils==2.3.0
pytz==2018.9
PyWavelets==1.1.1
PyYAML==3.13
pyzmq==17.0.0
qtconsole==4.6.0
requests==2.21.0
requests-oauthlib==1.3.0
resampy==0.2.2
retrying==1.3.3
rpy2==2.9.5
rsa==4.0
s3fs==0.4.0
s3transfer==0.2.1
scikit-image==0.15.0
scikit-learn==0.21.2
scipy==1.3.0
screen-resolution-extra==0.0.0
scs==2.1.1.post2
seaborn==0.9.0
semantic-version==2.8.2
Send2Trash==1.5.0
setuptools-git==1.2
Shapely==1.6.4.post2
simplegeneric==0.8.1
six==1.12.0
sklearn==0.0
sklearn-pandas==1.8.0
smart-open==1.9.0
snowballstemmer==2.0.0
sortedcontainers==2.1.0
spacy==2.1.9
Sphinx==1.8.5
sphinxcontrib-websupport==1.1.2
SQLAlchemy==1.3.11
sqlparse==0.3.0
srsly==0.2.0
stable-baselines==2.2.1
statsmodels==0.10.1
sympy==1.1.1
tables==3.4.4
tabulate==0.8.5
tblib==1.5.0
tensor2tensor==1.14.1
tensorboard==1.14.0
tensorboardcolab==0.0.22
tensorflow==1.14.0
tensorflow-datasets==1.3.0
tensorflow-estimator==1.14.0
tensorflow-gan==2.0.0
tensorflow-gpu==1.14.0
tensorflow-hub==0.7.0
tensorflow-metadata==0.15.1
tensorflow-privacy==0.2.2
tensorflow-probability==0.7.0
termcolor==1.1.0
terminado==0.8.3
testpath==0.4.4
text-unidecode==1.3
textblob==0.15.3
textgenrnn==1.4.1
tflearn==0.3.2
Theano==1.0.4
thinc==7.0.8
toolz==0.10.0
torch==1.3.1
torchsummary==1.5.1
torchtext==0.3.1
torchvision==0.4.2
tornado==4.5.3
tqdm==4.32.1
traitlets==4.3.3
tweepy==3.6.0
typing==3.6.6
typing-extensions==3.6.6
tzlocal==1.5.1
umap-learn==0.3.10
uritemplate==3.0.0
urllib3==1.24.3
vega-datasets==0.7.0
wasabi==0.4.0
wcwidth==0.1.7
webencodings==0.5.1
Werkzeug==0.16.0
widgetsnbextension==3.5.1
wordcloud==1.5.0
wrapt==1.11.2
xarray==0.11.3
xgboost==0.90
xkit==0.0.0
xlrd==1.1.0
xlwt==1.3.0
yellowbrick==0.9.1
zict==1.0.0
zipp==0.6.0
zmq==0.0.0
pygame 1.9.6
Hello from the pygame community. https://www.pygame.org/contribute.html
couldn't import doomish
Couldn't import doom
ALSA lib confmisc.c:767:(parse_card) cannot find card '0'
ALSA lib conf.c:4528:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4528:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1246:(snd_func_refer) error evaluating name
ALSA lib conf.c:4528:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5007:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM default
ALSA lib confmisc.c:767:(parse_card) cannot find card '0'
ALSA lib conf.c:4528:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4528:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1246:(snd_func_refer) error evaluating name
ALSA lib conf.c:4528:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5007:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM default
/usr/local/lib/python3.6/dist-packages/gym/logger.py:30: UserWarning: WARN: Environment '<class 'gym_ple.ple_env.PLEEnv'>' has deprecated methods '_step' and '_reset' rather than 'step' and 'reset'. Compatibility code invoked. Set _gym_disable_underscore_compat = True to disable this behavior.
warnings.warn(colorize('%s: %s'%('WARN', msg % args), 'yellow'))
WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/init_ops.py:1251: calling VarianceScaling.init (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.
Instructions for updating:
Call initializer instance with the dtype argument instead of passing it to the constructor
Traceback (most recent call last):
File "/content/baby-steps-of-rl-ja/welcome.py", line 36, in
welcome()
File "/content/baby-steps-of-rl-ja/welcome.py", line 29, in welcome
env.render(mode="human")
File "/usr/local/lib/python3.6/dist-packages/gym/envs/registration.py", line 176, in render
return env._render(mode, close=False)
File "/content/baby-steps-of-rl-ja/src/gym-ple/gym_ple/ple_env.py", line 62, in _render
from gym.envs.classic_control import rendering
File "/usr/local/lib/python3.6/dist-packages/gym/envs/classic_control/rendering.py", line 27, in
from pyglet.gl import *
File "/usr/local/lib/python3.6/dist-packages/pyglet/gl/init.py", line 239, in
import pyglet.window
File "/usr/local/lib/python3.6/dist-packages/pyglet/window/init.py", line 1896, in
gl._create_shadow_window()
File "/usr/local/lib/python3.6/dist-packages/pyglet/gl/init.py", line 208, in _create_shadow_window
_shadow_window = Window(width=1, height=1, visible=False)
File "/usr/local/lib/python3.6/dist-packages/pyglet/window/xlib/init.py", line 166, in init
super(XlibWindow, self).init(*args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/pyglet/window/init.py", line 501, in init
display = get_platform().get_default_display()
File "/usr/local/lib/python3.6/dist-packages/pyglet/window/init.py", line 1845, in get_default_display
return pyglet.canvas.get_display()
File "/usr/local/lib/python3.6/dist-packages/pyglet/canvas/init.py", line 82, in get_display
return Display()
File "/usr/local/lib/python3.6/dist-packages/pyglet/canvas/xlib.py", line 86, in init
raise NoSuchDisplayException('Cannot connect to "%s"' % name)
pyglet.canvas.xlib.NoSuchDisplayException: Cannot connect to "None"
(例外のメッセージ、ログ、画面ショットなどを添付)
p.37 の code2-4 は DP/bellman_equation.py の実行結果だと思いますが, 私の実行結果は以下のようになり, code2-4 と異なりました。
$ python DP/bellman_equation.py
0.7880942034605892
0.9068026334400001
-0.96059601
ページ番号: p.37
pip freeze
の実行結果 (下に添付)(例外のメッセージ、ログ、画面ショットなどを添付)
Kindle版で 4.1.3 code 4-8 Trainerクラス の trainer_name内の下記部分のアンダースコア "_" が消えてるように見えます(添付画像参照)。
class_name = self. class . name → class_name = self.__class__.__name__
ページ番号: p
Kindle版 No.1430/3649
pip freeze
の実行結果 (下に添付)(例外のメッセージ、ログ、画面ショットなどを添付)
すでに指摘されているかもしれませんが一応。
となっていますが、
の間違いだと思います。
あるいは
ページ番号: p.20, p.32
pip freeze
の実行結果 (下に添付)(例外のメッセージ、ログ、画面ショットなどを添付)
code2-6 遷移先の価値の計算について、
baby-steps-of-rl-ja/DP/planner.py
Line 59 in 1dadc20
上記箇所において、V を更新してしまうと、同じ iteration 内の後続の V(s) の計算に影響がでてしまうと思います。
(V_{i+1}(s_k) の算出に、すでに計算済の s_j の価値 V_{i+1}(s_j) が反映される場合がある)
P.44 の式の通りの計算をするならば、
next_V[s] = max_reward
として、iteration の最後で V を更新(V=next_V
) のようにするなど、同一 iteration 内で V を更新しないようにすべきだと思いました。
ページ番号: p45
pip freeze
の実行結果 (下に添付)(例外のメッセージ、ログ、画面ショットなどを添付)
症状としてはタイトルの通りです。以下に経緯を示します。
!pip install -r requirements-colab.txtを実行したところ、一連のパッケージをインストール中にエラーが発生したため、
!pip install gym numpy pandas scipy scikit-learn matplotlib h5py pygame tqdm
を実行後、
!pip install -e git+https://github.com/ntasfi/PyGame-Learning-Environment.git#egg=ple
!pip install -e git+https://github.com/lusob/gym-ple.git#egg=gym-ple
を実行したところ、エラー無くインストール完了しました。
その後、import welcomeでwelcome.pyを実行したところ、No module named 'gym_ple'のエラーが出ました。
そこで!pip uninstall gym-pleを実行した後改めて!pip install gym_pleを実行しました。
この状態で再びimport welcomeを実行しましたが、
タイトルの通りNo module named 'ple'のエラーが出ました。
Google colab(2023/11/28アクセス)
/usr/local/lib/python3.10/dist-packages/gym_ple/ple_env.py in
2 import gym
3 from gym import spaces
----> 4 from ple import PLE
5 import numpy as np
6
ModuleNotFoundError: No module named 'ple'
baby-steps-of-rl-ja/DP/planner.pyの99〜104行目ですが,
expected_rewardsに入っているQはaction_probがかかっていて,Policy(a|s) * Q(s,a)となっているので,
単純に103行目ではmax_reward = sum(expected_rewards)となるのではないでしょうか?(max_rewardという名前と整合的では無いですが)
ページ番号: 44
pip freeze
の実行結果 (下に添付)(例外のメッセージ、ログ、画面ショットなどを添付)
誤植を発見したので、報告します。また、当方は初学者なため誤植でないときは理由を教えていただけば幸いです。
4.4の最後、Policy Gradientに使用する「価値」についてActor Criticを取り上げていますが、そこで以下のような数式が取り上げられています。
このnablaのあとにあるthetaは間違いではないでしょうか。
ページ番号: p
pip freeze
の実行結果 (下に添付)(例外のメッセージ、ログ、画面ショットなどを添付)
IRL/environment.pyを実行した際にtest_grid
が実行され,GridWorldEnvクラスが正常に動作するかの確認がされていると思います
Grid左下を開始地点とし,左上の終了地点を目指していますが,終了地点に到達した際にd
(おそらくdoneの意?)がfalseのままなので,テストが失敗しています
具体的には以下のリンク箇所です
baby-steps-of-rl-ja/IRL/environment.py
Line 186 in f21735d
ページ番号: p 254
pip freeze
の実行結果 (下に添付)absl-py==0.7.1
alabaster==0.7.12
appnope==0.1.0
asn1crypto==0.24.0
astor==0.7.1
attrs==19.1.0
Babel==2.7.0
backcall==0.1.0
bleach==3.1.0
certifi==2019.6.16
cffi==1.12.3
chardet==3.0.4
Click==7.0
cryptography==2.7
cycler==0.10.0
decorator==4.4.0
defusedxml==0.6.0
docutils==0.14
entrypoints==0.3
flake8==3.7.7
Flask==1.0.3
future==0.17.1
gast==0.2.2
google-pasta==0.1.7
grpcio==1.16.1
gym==0.10.9
-e git+https://github.com/lusob/gym-ple.git@df11bc8566b22011f635f4f74331fbc79fb3a9de#egg=gym_ple
h5py==2.8.0
idna==2.8
imagesize==1.1.0
ipykernel==5.1.1
ipython==7.5.0
ipython-genutils==0.2.0
ipywidgets==7.4.2
itsdangerous==1.1.0
jedi==0.13.3
Jinja2==2.10.1
joblib==0.13.2
jsonschema==3.0.1
jupyter==1.0.0
jupyter-client==5.2.4
jupyter-console==6.0.0
jupyter-core==4.4.0
jupyterlab==0.35.5
jupyterlab-server==0.2.0
Keras-Applications==1.0.8
Keras-Preprocessing==1.1.0
kiwisolver==1.1.0
Markdown==3.1.1
MarkupSafe==1.1.1
matplotlib==3.0.1
mccabe==0.6.1
mistune==0.8.4
mkl-fft==1.0.12
mkl-random==1.0.2
mkl-service==2.0.2
mock==3.0.5
nbconvert==5.5.0
nbformat==4.4.0
notebook==5.7.8
numpy==1.15.4
packaging==19.0
pandas==0.23.4
pandocfilters==1.4.2
parso==0.4.0
pexpect==4.7.0
pickleshare==0.7.5
Pillow==6.0.0
-e git+https://github.com/ntasfi/PyGame-Learning-Environment.git@3dbe79dc0c35559bb441b9359948aabf9bb3d331#egg=ple
prometheus-client==0.6.0
prompt-toolkit==2.0.9
protobuf==3.8.0
ptyprocess==0.6.0
pycodestyle==2.5.0
pycparser==2.19
pyflakes==2.1.1
pygame==1.9.4
pyglet==1.3.2
Pygments==2.4.2
pyOpenSSL==19.0.0
pyparsing==2.4.0
pyrsistent==0.14.11
PySocks==1.7.0
python-dateutil==2.8.0
pytz==2019.1
pyzmq==18.0.0
qtconsole==4.5.1
requests==2.22.0
scikit-learn==0.20.0
scipy==1.1.0
Send2Trash==1.5.0
six==1.12.0
snowballstemmer==1.2.1
Sphinx==2.1.0
sphinxcontrib-applehelp==1.0.1
sphinxcontrib-devhelp==1.0.1
sphinxcontrib-htmlhelp==1.0.2
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==1.0.2
sphinxcontrib-serializinghtml==1.1.3
tb-nightly==1.14.0a20190603
tensorboard==1.13.1
tensorflow==2.0.0b1
tensorflow-estimator==1.13.0
termcolor==1.1.0
terminado==0.8.2
testpath==0.4.2
tf-estimator-nightly==1.14.0.dev2019060501
tornado==6.0.2
tqdm==4.28.1
traitlets==4.3.2
urllib3==1.24.2
wcwidth==0.1.7
webencodings==0.5.1
Werkzeug==0.15.4
widgetsnbextension==3.4.2
wrapt==1.11.2
(例外のメッセージ、ログ、画面ショットなどを添付)
python IRL/environment.py ✘ 1
Traceback (most recent call last):
File "IRL/environment.py", line 189, in <module>
test_grid()
File "IRL/environment.py", line 186, in test_grid
assert d, "Agent should reache the goal"
AssertionError: Agent should reache the goal
p.216 8行目に「Begio先生」とありますが「Bengio先生」の誤植ではないでしょうか。
(改訂第2版 第1刷)
ページ番号: p.216
pip freeze
の実行結果 (下に添付)(例外のメッセージ、ログ、画面ショットなどを添付)
TensorFlow 2.0への移行に伴い、tensorflow.python.kerasをtensorflow.kerasに変更する。
※tensorflow.python.kerasだとバグが出る謎の現象がある。
ページ番号: p
pip freeze
の実行結果 (下に添付)(例外のメッセージ、ログ、画面ショットなどを添付)
train_loopのobserve_intervalを0以外にし、python FN/value_function_agent.py
を実行すると以下のようなエラーとなる。
last_frames = [f[:, :, -1] for f in frames]
IndexError: too many indices for array
ページ番号: p
pip freeze
の実行結果 (下に添付)(例外のメッセージ、ログ、画面ショットなどを添付)
本の中で
code3-7のようにコードが出てきますが
ソースコード名がついていないときがあるため、ソースコード名がついていると嬉しいです。
また、それぞれのファイルでどういう由来でそういうディレクトリになっているか本で少しでも記載があると覚えやすいです。
ELの略が分かりませんでした。(EpsilonとLakeでしょうか)
Kindle版 Day3 code3-7の学習率alphaは
alpha = 1 / N[s][a]
となっています。これは最終的には(state, action) = (s, a)となるケースのQ値の平均をとることになると理解していいでしょうか?
また、TD法と同様に定数をセットしてもいいのでしょうか?一応定数でも学習できてはいるようです。
pip freeze
の実行結果 (下に添付)(例外のメッセージ、ログ、画面ショットなどを添付)
Value approximation=状態評価としているが、「価値評価」の方が適切
「Value」は状態価値(V)もあれば、行動価値(Q)もある。Day2までは状態評価だけれども、Day3以降は行動価値(Q)の推定であるため推定している内容(行動価値)と言葉(状態評価)が合わなくなっている。
ページ番号: p
サンプルコードの箇所。Windowsのsが抜けている
4. 作成した仮想環境を有効化(WindowとMac/Linuxでコマンドが異なるため注意してください)
ページ番号: p
pip freeze
の実行結果 (下に添付)(例外のメッセージ、ログ、画面ショットなどを添付)
Policy Iteartionの方が常に収束が速いわけではないので。「Policy Iterationの方が、Value Iterationよりも若干計算速度が速いと思います。これはPolicy Iterationが全状態の価値を計算しなくても済むためですが・・・」という表現は、表現方法を見直す(効率的な面はあるが、=常に早いではない)。
ページ番号: p
pip freeze
の実行結果 (下に添付)(例外のメッセージ、ログ、画面ショットなどを添付)
code1-6のmain関数の中で、ゲームを10回試行しているが、while not done
以降のインデントが一段ずれている。
ページ番号: p.28
commit f21735d の baby-steps-of-rl-ja/DP/tests が 未定義の action_space を参照しているため失敗します。
yosuke@12e6b7667300:~/baby-steps-of-rl-ja/DP$ git diff
diff --git a/DP/tests/test_environment.py b/DP/tests/test_environment.py
index 2a21b6b..37ab625 100644
--- a/DP/tests/test_environment.py
+++ b/DP/tests/test_environment.py
@@ -14,7 +14,7 @@ class TestEnvironment(unittest.TestCase):
self.assertEqual(state.column, 0)
goal = False
for t in range(10):
- action = random.choice(env.action_space)
+ action = random.choice(env.actions)
state, reward, done = env.step(action)
self.assertTrue(0 <= state.row < len(env.grid))
self.assertTrue(0 <= state.column < len(env.grid[0]))
ページ番号: p
pip freeze
の実行結果 (下に添付)yosuke@12e6b7667300:~/baby-steps-of-rl-ja/DP/tests$ python3 -m pip freeze
asn1crypto==0.24.0
atomicwrites==1.1.5
attrs==18.2.0
cryptography==2.6.1
entrypoints==0.3
keyring==17.1.1
keyrings.alt==3.1.1
more-itertools==4.2.0
numpy==1.16.2
pluggy==0.8.0
py==1.7.0
pycrypto==2.6.1
PyGObject==3.30.4
pytest==3.10.1
pyxdg==0.25
SecretStorage==2.3.1
six==1.12.0
yosuke@12e6b7667300:~/baby-steps-of-rl-ja/DP/tests$ pytest-3
================================= test session starts ==================================
platform linux -- Python 3.7.3rc1, pytest-3.10.1, py-1.7.0, pluggy-0.8.0
rootdir: /home/yosuke/baby-steps-of-rl-ja/DP/tests, inifile:
collected 3 items
test_environment.py F [ 33%]
test_planner.py .. [100%]
======================================= FAILURES =======================================
_________________________ TestEnvironment.test_run_environment _________________________
self = <DP.tests.test_environment.TestEnvironment testMethod=test_run_environment>
def test_run_environment(self):
grid = self.get_sample_grid()
env = Environment(grid)
for i in range(100):
state = env.reset() # initialize agent position
self.assertEqual(state.row, len(env.grid) - 1)
self.assertEqual(state.column, 0)
goal = False
for t in range(10):
> action = random.choice(env.action_space)
E AttributeError: 'Environment' object has no attribute 'action_space'
test_environment.py:17: AttributeError
========================== 1 failed, 2 passed in 0.16 seconds ==========================
ページ番号: p107
pip freeze
の実行結果 (下に添付)細かいですが p107 の最後
def initialize(self, experiences):
raise Exception("You have to implements estimate method")
def estimate(self, s):
raise Exception("You have to implements estimate method")
となっていますが,正しくは
def initialize(self, experiences):
raise Exception("You have to implement initialize method")
def estimate(self, s):
raise Exception("You have to implement estimate method")
(implements implement,estimate initialize)
あとこういう場合は Exception ではなく NotImplementedError を使ったほうが良いと思います.
第3刷 Day3.3 p75、本文上から5,7行目それぞれで「Off-poicy」,「On-poicy」となっておりpo l icyのL抜けではないでしょうか。
ページ番号: p75
pip freeze
の実行結果 (下に添付)(例外のメッセージ、ログ、画面ショットなどを添付)
Day6 Evolution: agent_results から noises に np.array に格納できない
ページ番号: p.226
pip freeze
の実行(例外のメッセージ、ログ、画面ショットなどを添付)
def update(self, agent_results):
の noises = np.array(r[1] for r in agent_results]) で 以下の ValueError
ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 2 dimensions. The detected shape was (20, 4) + inhomogeneous part.
こちらをご参考ください。
エンジニア一同衝撃 Python子ども向けワークショップにやってきた小2開発者のさりげない一言
ページ番号: p
pip freeze
の実行結果 (下に添付)(例外のメッセージ、ログ、画面ショットなどを添付)
疑問点があるので、質問させていただきます。
p. 35のbellman_equation.pyで状態state_up_up_up_up_upに対してVを計算すると、V("state_up_up_up_up_up")=gamma=0.99となります。"state_up_up_up_up_up"はhappy_end状態であり、next_stateは存在しないので、V("state_up_up_up_up_up")=1となるように思うのですが、この考えたかは間違っているのでしょうか?
よろしくお願いします。
ページ番号: p35-37
pip freeze
の実行結果 (下に添付)(例外のメッセージ、ログ、画面ショットなどを添付)
改訂版のp.60にて
「これがTD法でです。」
となっています。
ページ番号: p60
p132、code4-17で
# Convert the feature shape (f, w, h) => (w, h, f).
feature = np.transpose(feature, (1, 2, 0))
となっているが,np.transpose前のfeature shapeは(f, h, w)であるので正しくは
# Convert the feature shape (f, h, w) => (h, w, f).
feature = np.transpose(feature, (1, 2, 0))
だと思う。
ページ番号: p132
pip freeze
の実行結果 (下に添付)(例外のメッセージ、ログ、画面ショットなどを添付)
p.137一行目 Experience Reply → Experience Replay
ページ番号: p. 137
第一版です
pip freeze
の実行結果 (下に添付)(例外のメッセージ、ログ、画面ショットなどを添付)
P.65の1行目にて
「show_q_valueはエージェントの状態価値を可視化するための関数です」とありますが、正しくは
「show_q_valueはエージェントの状態評価を可視化するための関数です」
ではないでしょうか?
(背景)
「状態価値」という単語は本書ではp65で初めて登場した単語で、
次の行を読むと「エージェントは各状態における各行動の評価をQという変数に記録します」とあるので、「状態価値」ではなく「状態評価」が正しいのかと推測しました。
(「状態価値」の意味が分かっていないのですが、定義は本書のどこかでされているのでしょうか?)
ページ番号: p65(第1刷)
pip freeze
の実行結果 (下に添付)(例外のメッセージ、ログ、画面ショットなどを添付)
”割引現在価値”は未来値を計算しているから、英語はDiscounted Future Rewardだと考えています。そうすると、日本語の翻訳は”割引未来報酬”だと思います。
ページ番号: p20
p.2(目次の前のページ)、2行目が
Window 10となっているが,Windows 10と間違えていると思います.
ページ番号: p.2
pip freeze
の実行結果 (下に添付)(例外のメッセージ、ログ、画面ショットなどを添付)
https://github.com/icoxfog417/baby-steps-of-rl-ja/blob/master/FN/a2c_agent.py#L71-L74
このA2Cのlossを計算している箇所ですが、policy_loss
を最小化するための勾配(i.e. policyを改善するための勾配)がadvantages
を通じてvalue functionにまで流れているように見えます。softplusを挟まないとadvantageがおかしな値になることを https://medium.com/programming-soda/%E5%BC%B7%E5%8C%96%E5%AD%A6%E7%BF%92%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8Badvantage%E3%81%AE%E6%94%B9%E5%96%84-9cc0167d9eb2 で報告されてましたが、これが原因ではないかと推測します。
機械学習の基本的な仕組みを理解する
->
強化学習の基本的な仕組みを理解する
ページ番号: p9
素晴らしい解説ありがとうございます.課金しました.(本を買いました)
気になったことなのですが,Day1とDay2のマルコフ決定過程で,Environmentが直接Actionを持っている状態のようなのですが,個人的には,EnvironmentがAgentを持っていて,AgentがActionを持っているような気がするのですが,やっぱりActionはEnvironmentが持つべきものなのでしょうか?
と,じゃあどうなるのよと思い,最小限の変更になるようにいじってみたコードは以下になります.
tanakataiki@2226bfe
間違っていましたらすみません.
ページ番号: p23~47
pip freeze
の実行結果 (下に添付)完ぺきです!
welcome.pyを実行したところエラーが出る。何がおかしいか指摘してほしい。
ページ番号: p6
pip freeze
の実行結果 (下に添付)(例外のメッセージ、ログ、画面ショットなどを添付)
(rl-book) C:\Users\May1217\baby-steps-of-rl-ja>python welcome.py
Traceback (most recent call last):
File "C:\Users\May1217\miniconda3\envs\rl-book\lib\site-packages\numpy\core_init_.py", line 22, in
from . import multiarray
File "C:\Users\May1217\miniconda3\envs\rl-book\lib\site-packages\numpy\core\multiarray.py", line 12, in
from . import overrides
File "C:\Users\May1217\miniconda3\envs\rl-book\lib\site-packages\numpy\core\overrides.py", line 7, in
from numpy.core._multiarray_umath import (
ModuleNotFoundError: No module named 'numpy.core._multiarray_umath'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "welcome.py", line 1, in
import numpy as np
File "C:\Users\May1217\miniconda3\envs\rl-book\lib\site-packages\numpy_init_.py", line 140, in
from . import core
File "C:\Users\May1217\miniconda3\envs\rl-book\lib\site-packages\numpy\core_init_.py", line 48, in
raise ImportError(msg)
ImportError:
IMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!
Importing the numpy C-extensions failed. This error can happen for
many reasons, often due to issues with your setup or how NumPy was
installed.
We have compiled some common reasons and troubleshooting tips at:
https://numpy.org/devdocs/user/troubleshooting-importerror.html
Please note and check the following:
The Python version is: Python3.7 from "C:\Users\May1217\miniconda3\envs\rl-book\python.exe"
The NumPy version is: "1.19.5"
and make sure that they are the versions you expect.
Please carefully study the documentation linked above for further help.
Original error was: No module named 'numpy.core._multiarray_umath'
p28のcode1-6、main関数内のwhile部分のインデントが適切では無い。
ページ番号: p28
pip freeze
の実行結果 (下に添付)(例外のメッセージ、ログ、画面ショットなどを添付)
s = r * nrow + c
の部分に関して、正しくは
s = r * ncol + c
ではないでしょうか?
私が間違っているかもしれませんがご確認をお願いいたします。
ページ番号: p64
Day3で「経験を状態評価、戦略どちらの更新に利用するか: Off policy vs On policy」とあるが、「経験を状態評価、戦略のどちらの更新に使用するか」という点と、「Off policyとOn policy」という観点は別の話となる。
ページ番号: p
以前の指摘を踏まえて、修正等を行い、welcome.pyを実行したところエラーが出る。何がおかしいか指摘してほしい。
指摘箇所
[〇] Day1: 強化学習の位置づけを知る
Day2: 強化学習の解法(1): 環境から計画を立てる
Day3: 強化学習の解法(2): 経験から計画を立てる
Day4: 強化学習に対するニューラルネットワークの適用
Day5: 強化学習の弱点
Day6: 強化学習の弱点を克服するための手法
Day7: 強化学習の活用領域
ページ番号: p6
実行環境
OS: Windows 10
Python version: 3.7.13
pip freezeの実行結果 (下に添付)
absl-py==0.15.0
astunparse==1.6.3
cachetools==5.0.0
certifi==2021.10.8
charset-normalizer==2.0.12
cloudpickle==1.2.2
cycler==0.11.0
flatbuffers==1.12
fonttools==4.31.2
future==0.18.2
gast==0.4.0
google-auth==2.6.2
google-auth-oauthlib==0.4.6
google-pasta==0.2.0
grpcio==1.34.1
gym==0.14.0
-e git+https://github.com/lusob/gym-ple.git@7cedbf4e31be86f5ca2aae5c0dfd9d38825af64e#egg=gym_ple
h5py==3.1.0
idna==3.3
importlib-metadata==4.11.3
joblib==1.1.0
keras-nightly==2.5.0.dev2021032900
Keras-Preprocessing==1.1.2
kiwisolver==1.4.0
Markdown==3.3.6
matplotlib==3.5.1
numpy==1.19.5
oauthlib==3.2.0
opt-einsum==3.3.0
Pillow==9.0.1
-e git+https://github.com/ntasfi/PyGame-Learning-Environment.git@3dbe79dc0c35559bb441b9359948aabf9bb3d331#egg=ple
protobuf==3.19.4
pyasn1==0.4.8
pyasn1-modules==0.2.8
pygame==2.0.0
pyglet==1.3.2
Pygments==2.11.2
pyparsing==3.0.7
python-dateutil==2.8.2
pywin32==303
requests==2.27.1
requests-oauthlib==1.3.1
rsa==4.8
scikit-learn==1.0.2
scipy==1.8.0
six==1.15.0
tensorboard==2.8.0
tensorboard-data-server==0.6.1
tensorboard-plugin-wit==1.8.1
tensorflow==2.5.0
tensorflow-estimator==2.5.0
termcolor==1.1.0
threadpoolctl==3.1.0
tqdm==4.63.1
typing-extensions==3.7.4.3
urllib3==1.26.9
Werkzeug==2.0.3
wincertstore==0.2
wrapt==1.12.1
zipp==3.7.0
エラー内容
(例外のメッセージ、ログ、画面ショットなどを添付)
(rl-book) C:\Users\May1217\baby-steps-of-rl-ja>python welcome.py
2022-04-01 21:34:41.444872: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'cudart64_110.dll'; dlerror: cudart64_110.dll not found
2022-04-01 21:34:41.445852: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
pygame 2.0.0 (SDL 2.0.12, python 3.9.11)
Hello from the pygame community. https://www.pygame.org/contribute.html
couldn't import doomish
Couldn't import doom
C:\Users\May1217\miniconda3\envs\rl-book\lib\site-packages\gym\logger.py:30: UserWarning: �[33mWARN: Environment '<class 'gym_ple.ple_env.PLEEnv'>' has deprecated methods '_step' and '_reset' rather than 'step' and 'reset'. Compatibility code invoked. Set _gym_disable_underscore_compat = True to disable this behavior.�[0m
warnings.warn(colorize('%s: %s'%('WARN', msg % args), 'yellow'))
2022-04-01 21:35:13.657265: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'nvcuda.dll'; dlerror: nvcuda.dll not found
2022-04-01 21:35:13.657446: W tensorflow/stream_executor/cuda/cuda_driver.cc:326] failed call to cuInit: UNKNOWN ERROR (303)
2022-04-01 21:35:13.670938: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:169] retrieving CUDA diagnostic information for host: DESKTOP-BMCCV3C
2022-04-01 21:35:13.671347: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:176] hostname: DESKTOP-BMCCV3C
2022-04-01 21:35:13.725261: I tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX AVX2
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
2022-04-01 21:35:25.884504: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:176] None of the MLIR Optimization Passes are enabled (registered 2)
Traceback (most recent call last):
File "C:\Users\May1217\baby-steps-of-rl-ja\welcome.py", line 36, in
welcome()
File "C:\Users\May1217\baby-steps-of-rl-ja\welcome.py", line 31, in welcome
n_state, reward, done, info = env.step(a)
File "C:\Users\May1217\miniconda3\envs\rl-book\lib\site-packages\gym\wrappers\time_limit.py", line 16, in step
observation, reward, done, info = self.env.step(action)
File "c:\users\may1217\baby-steps-of-rl-ja\src\gym-ple\gym_ple\ple_env.py", line 32, in _step
reward = self.game_state.act(self._action_set[a])
File "c:\users\may1217\baby-steps-of-rl-ja\src\ple\ple\ple.py", line 376, in act
return sum(self._oneStepAct(action) for i in range(self.frame_skip))
File "c:\users\may1217\baby-steps-of-rl-ja\src\ple\ple\ple.py", line 376, in
return sum(self._oneStepAct(action) for i in range(self.frame_skip))
File "c:\users\may1217\baby-steps-of-rl-ja\src\ple\ple\ple.py", line 395, in _oneStepAct
self._setAction(action)
File "c:\users\may1217\baby-steps-of-rl-ja\src\ple\ple\ple.py", line 411, in _setAction
self.game._setAction(action, self.last_action)
File "c:\users\may1217\baby-steps-of-rl-ja\src\ple\ple\games\base\pygamewrapper.py", line 79, in _setAction
pygame.event.post(ku)
pygame.error: posted event keycode must be int
4.4のPolicy gradientの説明文およびサンプルコードについて、正しいか疑問に思う点があったので質問させていただけないでしょうか?
当該箇所のサンプルコードでは、毎ステップでreplay bufferを使って過去に得られた全てのエピソードからデータ (state, action, weight)
をサンプルして学習を行っていると思います。
しかしながら、Policy gradientにおいては、学習に使って良いデータは現在のポリシーで得られたデータに限るべきなのではないでしょうか? (replay bufferは使わず、更新は一度だけ)
というのも、ここでの ∇J(θ)
は現在のポリシーから得られた場合でなくては正しい意味を持たないからです。
OpenAIのサイトの最初の You Should Know
とこの書籍の説明とで食い違いがあると思い、疑問に思ったのでissueをあげさせていただきました。
表が出たら100円、裏が出ただ10円、、、その期待値は、、、45円
とありますが、正しくは55円ではないでしょうか?
ページ番号: p33
pip freeze
の実行結果 (下に添付)(例外のメッセージ、ログ、画面ショットなどを添付)
TD-lambdaは、Continuousの場合とEpisodicの場合とで式が異なり、本書はEpisodicのケースなのでEpisodicの式でないとTD(1)のときMCにならない。
Continuous
Episodic
ページ番号: p
pip freeze
の実行結果 (下に添付)(例外のメッセージ、ログ、画面ショットなどを添付)
p34下から二つ目の式では、「価値」が最大になる行動を選択した結果得られる価値をV(s)としていると思うのですが、その場合右辺のVにはπは必要でしょうか?
ページ番号: p34
pip freeze
の実行結果 (下に添付)(例外のメッセージ、ログ、画面ショットなどを添付)
SampleLayerのノイズの計算で下記の式となっていますが、
これだとノイズが大きいと思ったのですが、どのような意図でこの式となっているのでしょうか?
return tf.argmax(x - tf.log(-tf.log(noise)), axis=1)
ページ番号: p
code4-24
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.