Giter Site home page Giter Site logo

icoxfog417 / baby-steps-of-rl-ja Goto Github PK

View Code? Open in Web Editor NEW
427.0 427.0 259.0 1.21 MB

Pythonで学ぶ強化学習 -入門から実践まで- サンプルコード

License: Apache License 2.0

Python 31.49% CSS 0.23% JavaScript 1.09% HTML 1.17% Jupyter Notebook 66.02%
machine-learning reinforcement-learning

baby-steps-of-rl-ja's People

Contributors

icoxfog417 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

baby-steps-of-rl-ja's Issues

SARSAアルゴリズムについて

指摘事項

p74、「Valueベースの基準はOff-policy」、「Policyベースの基準はOn-policy」と書いています。でも「Off-policy、On-policy」と「Valueベース、Policyベース」関係がないので、「Off-policy、On-policy」で「Valueベース、Policyベース」を区別できません。

SARSAアルゴリズムはOn-policyですが、実はValueベースのアルゴリズムです。論文にもValueベースが書いています。

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

ページ番号: 改訂版第2版 p74

実行環境

  • OS:
  • Python version:
  • pip freezeの実行結果 (下に添付)

エラー内容

(例外のメッセージ、ログ、画面ショットなどを添付)

p.60,61 モンテカルロ法更新式など 誤植 (改訂版第2版)

指摘事項

モンテカルロ法の更新式に誤植を見つけました.

  • 修正前
    texclip20210203135701
  • 修正後
    texclip20210203135806

p.61のepisode end の式にも同様の誤植が存在します.

またepiside end の式最後の項のラムダの次数はT-t-1が正しいと思います.

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

ページ番号: p.60,61

実行環境

  • OS:
  • Python version:
  • pip freezeの実行結果 (下に添付)

エラー内容

(例外のメッセージ、ログ、画面ショットなどを添付)

google_colabにて環境構築できない code : 0-2起動しない

指摘事項

環境構築できない  code : 0-2起動しない

指摘箇所

ページ番号: p6
colabの仮想環境に直接git clone(google driveではなくて)
スクリーンショット 2019-11-28 11 31 04

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"
(例外のメッセージ、ログ、画面ショットなどを添付)

DP/bellman_equation.py の実行結果が違う

指摘事項

p.37 の code2-4 は DP/bellman_equation.py の実行結果だと思いますが, 私の実行結果は以下のようになり, code2-4 と異なりました。

$ python DP/bellman_equation.py 
0.7880942034605892
0.9068026334400001
-0.96059601

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

ページ番号: p.37

実行環境

  • OS: mac
  • Python version:
  • pip freezeの実行結果 (下に添付)

エラー内容

(例外のメッセージ、ログ、画面ショットなどを添付)

Kindle版 4.1.3 code 4-8 にてアンダースコア "_" が消えてるように見える

指摘事項

キャプチャ

Kindle版で 4.1.3 code 4-8 Trainerクラス の trainer_name内の下記部分のアンダースコア "_" が消えてるように見えます(添付画像参照)。

class_name = self.  class  .  name  → class_name = self.__class__.__name__

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

ページ番号: p
Kindle版 No.1430/3649

実行環境

  • OS: Windows PC より Kindle アプリから確認
  • Python version:
  • pip freezeの実行結果 (下に添付)

エラー内容

(例外のメッセージ、ログ、画面ショットなどを添付)

p.20 「報酬の総和」の式の誤植

指摘事項

すでに指摘されているかもしれませんが一応。

image

となっていますが、

image

の間違いだと思います。
あるいは

image

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

ページ番号: p.20, p.32

実行環境

  • OS:
  • Python version:
  • pip freezeの実行結果 (下に添付)

エラー内容

(例外のメッセージ、ログ、画面ショットなどを添付)

code2-6 遷移先の価値の計算について

指摘事項

code2-6 遷移先の価値の計算について、

V[s] = max_reward

上記箇所において、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 を更新しないようにすべきだと思いました。

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

ページ番号: p45

実行環境

  • OS:
  • Python version:
  • pip freezeの実行結果 (下に添付)

エラー内容

(例外のメッセージ、ログ、画面ショットなどを添付)

Google colabにてwelcome.pyを実行するとNo module named 'ple'のエラーが出る

指摘事項

症状としてはタイトルの通りです。以下に経緯を示します。

!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'

p44のコード

指摘事項

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という名前と整合的では無いですが)

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

ページ番号: 44

実行環境

  • OS:
  • Python version:
  • pip freezeの実行結果 (下に添付)

エラー内容

(例外のメッセージ、ログ、画面ショットなどを添付)

day4 数式について

指摘事項

誤植を発見したので、報告します。また、当方は初学者なため誤植でないときは理由を教えていただけば幸いです。

4.4の最後、Policy Gradientに使用する「価値」についてActor Criticを取り上げていますが、そこで以下のような数式が取り上げられています。

image

このnablaのあとにあるthetaは間違いではないでしょうか。

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

ページ番号: p

実行環境

  • OS:
  • Python version:
  • pip freezeの実行結果 (下に添付)

エラー内容

(例外のメッセージ、ログ、画面ショットなどを添付)

IRL/environment.pyを実行した際のテストが失敗する

指摘事項

IRL/environment.pyを実行した際にtest_gridが実行され,GridWorldEnvクラスが正常に動作するかの確認がされていると思います

Grid左下を開始地点とし,左上の終了地点を目指していますが,終了地点に到達した際にd(おそらくdoneの意?)がfalseのままなので,テストが失敗しています

具体的には以下のリンク箇所です

assert d, "Agent should reache the goal"

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

ページ番号: p 254

実行環境

  • OS: MacOS
  • Python version: 3.7
  • 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

改訂2版 4刷に向けての修正点一覧

  • p153: Reply => Replay (#36)
  • p.216: Begio先生 => Bengio先生 (#38)
  • p9: 機械学習の基本的な仕組み => 強化学習の基本的な仕組み (#39)
  • p60: r_{T-t} => r_T (#55)
  • p60: エピソード終了(T-t) => エピソード終了(T) (#55)
  • p61: γ^{T-t} => γ^{T-t-1} (#55)
  • p61: r_{T-t} => r_{T} (#55)
  • p64: s = r * nrow + c => s = r * ncol + c (#57)

p.216の誤植

指摘事項

p.216 8行目に「Begio先生」とありますが「Bengio先生」の誤植ではないでしょうか。
(改訂第2版 第1刷)

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

ページ番号: p.216

実行環境

  • OS:
  • Python version:
  • pip freezeの実行結果 (下に添付)

エラー内容

(例外のメッセージ、ログ、画面ショットなどを添付)

tensorflow.python.kerasをtensorflow.kerasに変更

指摘事項

TensorFlow 2.0への移行に伴い、tensorflow.python.kerasをtensorflow.kerasに変更する。
tensorflow.python.kerasだとバグが出る謎の現象がある

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

ページ番号: p

実行環境

  • OS:
  • Python version:
  • pip freezeの実行結果 (下に添付)

エラー内容

(例外のメッセージ、ログ、画面ショットなどを添付)

train_loopのobserve_intervalを0以外にすると、エラーが発生する

指摘事項

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

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

ページ番号: p

実行環境

  • OS:
  • Python version:
  • pip freezeの実行結果 (下に添付)

エラー内容

(例外のメッセージ、ログ、画面ショットなどを添付)

ソースコードによって名前がついていない

指摘事項

本の中で
code3-7のようにコードが出てきますが
ソースコード名がついていないときがあるため、ソースコード名がついていると嬉しいです。

また、それぞれのファイルでどういう由来でそういうディレクトリになっているか本で少しでも記載があると覚えやすいです。
ELの略が分かりませんでした。(EpsilonとLakeでしょうか)

モンテカルロ法での学習率について

指摘事項

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

Kindle版 Day3 code3-7の学習率alphaは

alpha = 1 / N[s][a]

となっています。これは最終的には(state, action) = (s, a)となるケースのQ値の平均をとることになると理解していいでしょうか?
また、TD法と同様に定数をセットしてもいいのでしょうか?一応定数でも学習できてはいるようです。

実行環境

  • OS:
  • Python version:
  • pip freezeの実行結果 (下に添付)

エラー内容

(例外のメッセージ、ログ、画面ショットなどを添付)

Value approximation=状態評価としているが、「価値評価」の方が適切

指摘事項

Value approximation=状態評価としているが、「価値評価」の方が適切

「Value」は状態価値(V)もあれば、行動価値(Q)もある。Day2までは状態評価だけれども、Day3以降は行動価値(Q)の推定であるため推定している内容(行動価値)と言葉(状態評価)が合わなくなっている。

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

ページ番号: p

サンプルコードのインストール: Window => Windows

指摘事項

サンプルコードの箇所。Windowsのsが抜けている

4.	作成した仮想環境を有効化(WindowとMac/Linuxでコマンドが異なるため注意してください)

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

ページ番号: p

実行環境

  • OS:
  • Python version:
  • pip freezeの実行結果 (下に添付)

エラー内容

(例外のメッセージ、ログ、画面ショットなどを添付)

Policy Iteartionの方が常に速いわけではない

指摘事項

Policy Iteartionの方が常に収束が速いわけではないので。「Policy Iterationの方が、Value Iterationよりも若干計算速度が速いと思います。これはPolicy Iterationが全状態の価値を計算しなくても済むためですが・・・」という表現は、表現方法を見直す(効率的な面はあるが、=常に早いではない)。

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

ページ番号: p

実行環境

  • OS:
  • Python version:
  • pip freezeの実行結果 (下に添付)

エラー内容

(例外のメッセージ、ログ、画面ショットなどを添付)

P28のコードの誤植

指摘事項

code1-6のmain関数の中で、ゲームを10回試行しているが、while not done以降のインデントが一段ずれている。

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

ページ番号: p.28

baby-steps-of-rl-ja/DP/tests が 未定義の action_space を参照しているため失敗する

指摘事項

commit f21735d の baby-steps-of-rl-ja/DP/tests が 未定義の action_space を参照しているため失敗します。

  • 修正案
    コードを完全に理解できていませんが baby-steps-of-rl-ja/DP/environment.py の actions を変わりに参照するべきではないでしょうか? コードでの修正は以下です。問題がないようでしたら、pull request を送らせていただきます。
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]))

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

ページ番号: p

実行環境

  • OS: debian buster testing
  • Python version: 3.7.1rc1
  • 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
  • 補足
    • debian 9, python 3.5 の環境でも同じ結果

エラー内容

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 コード

指摘事項

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

ページ番号: p107

実行環境

  • OS:
  • Python version:
  • 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 を使ったほうが良いと思います.

Day3.3 p75の単語誤植

指摘事項

第3刷 Day3.3 p75、本文上から5,7行目それぞれで「Off-poicy」,「On-poicy」となっておりpo l icyのL抜けではないでしょうか。

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

ページ番号: p75

実行環境

  • OS:
  • Python version:
  • pip freezeの実行結果 (下に添付)

エラー内容

(例外のメッセージ、ログ、画面ショットなどを添付)

Day6 Evolution: agent_results から noises に np.array 格納できない

指摘事項

Day6 Evolution: agent_results から noises に np.array に格納できない

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • [* ] Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

ページ番号: p.226

実行環境

  • OS: Ubuntu LTS 20.4
  • Python version: 3.8.4
  • pip freezeの実行
    結果 (下に添付)
    requirement.txt

エラー内容

(例外のメッセージ、ログ、画面ショットなどを添付)

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.

Python2を使っていると小学生にけなされるのか?

指摘事項

こちらをご参考ください。

エンジニア一同衝撃 Python子ども向けワークショップにやってきた小2開発者のさりげない一言

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

ページ番号: p

実行環境

  • OS:
  • Python version:
  • pip freezeの実行結果 (下に添付)

エラー内容

(例外のメッセージ、ログ、画面ショットなどを添付)

DP/bellman_equation.pyのV("state_up_up_up_up_up")の値について

指摘事項

疑問点があるので、質問させていただきます。

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となるように思うのですが、この考えたかは間違っているのでしょうか?

よろしくお願いします。

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • [* ] Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

ページ番号: p35-37

実行環境

  • OS: Windows10
  • Python version:3.6
  • pip freezeの実行結果 (下に添付)

エラー内容

(例外のメッセージ、ログ、画面ショットなどを添付)

p.60 誤字脱字

指摘事項

改訂版のp.60にて
「これがTD法でです。」
となっています。

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • [ へ] Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

ページ番号: p60

p132のコード shapeの勘違い

指摘事項

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))

だと思う。

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

ページ番号: p132

実行環境

  • OS:
  • Python version:
  • pip freezeの実行結果 (下に添付)

エラー内容

(例外のメッセージ、ログ、画面ショットなどを添付)

p.137 誤植

指摘事項

p.137一行目 Experience Reply → Experience Replay

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • [ x ] Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

ページ番号: p. 137

実行環境

第一版です

  • OS:
  • Python version:
  • pip freezeの実行結果 (下に添付)

エラー内容

(例外のメッセージ、ログ、画面ショットなどを添付)

p65 「状態価値」誤植

指摘事項

P.65の1行目にて
「show_q_valueはエージェントの状態価値を可視化するための関数です」とありますが、正しくは
「show_q_valueはエージェントの状態評価を可視化するための関数です」
ではないでしょうか?

(背景)
「状態価値」という単語は本書ではp65で初めて登場した単語で、
次の行を読むと「エージェントは各状態における各行動の評価をQという変数に記録します」とあるので、「状態価値」ではなく「状態評価」が正しいのかと推測しました。
(「状態価値」の意味が分かっていないのですが、定義は本書のどこかでされているのでしょうか?)

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

ページ番号: p65(第1刷)

実行環境

  • OS:
  • Python version:
  • pip freezeの実行結果 (下に添付)

エラー内容

(例外のメッセージ、ログ、画面ショットなどを添付)

Day1 p20 割引現在価値 誤植

指摘事項

”割引現在価値”は未来値を計算しているから、英語はDiscounted Future Rewardだと考えています。そうすると、日本語の翻訳は”割引未来報酬”だと思います。

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

ページ番号: p20

誤植 p.2

指摘事項

p.2(目次の前のページ)、2行目が
Window 10となっているが,Windows 10と間違えていると思います.

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

ページ番号: p.2

実行環境

  • OS:
  • Python version:
  • pip freezeの実行結果 (下に添付)

エラー内容

(例外のメッセージ、ログ、画面ショットなどを添付)

A2Cの勾配計算について

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 で報告されてましたが、これが原因ではないかと推測します。

Day1 p9 機械学習 誤植

指摘事項

機械学習の基本的な仕組みを理解する
->
強化学習の基本的な仕組みを理解する

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

ページ番号: p9

Code1.2のEnvironmentがActionを持っている件について

指摘事項

素晴らしい解説ありがとうございます.課金しました.(本を買いました)
気になったことなのですが,Day1とDay2のマルコフ決定過程で,Environmentが直接Actionを持っている状態のようなのですが,個人的には,EnvironmentがAgentを持っていて,AgentがActionを持っているような気がするのですが,やっぱりActionはEnvironmentが持つべきものなのでしょうか?

と,じゃあどうなるのよと思い,最小限の変更になるようにいじってみたコードは以下になります.
tanakataiki@2226bfe

間違っていましたらすみません.

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

ページ番号: p23~47

実行環境

  • OS: windowos10
  • Python version:requirements通り
  • pip freezeの実行結果 (下に添付)

エラー内容

完ぺきです!

welcome.pyの実行エラー

指摘事項

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
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: 記述してあるプログラムのミス

指摘事項

p28のcode1-6、main関数内のwhile部分のインデントが適切では無い。

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

ページ番号: p28

実行環境

  • OS:
  • Python version:
  • pip freezeの実行結果 (下に添付)

エラー内容

(例外のメッセージ、ログ、画面ショットなどを添付)

p,64 状態の表現について

指摘事項

s = r * nrow + c

の部分に関して、正しくは

s = r * ncol + c

ではないでしょうか?
私が間違っているかもしれませんがご確認をお願いいたします。

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

ページ番号: p64

「経験を状態評価、戦略どちらの更新に利用するか: Off policy vs On policy」について

指摘事項

Day3で「経験を状態評価、戦略どちらの更新に利用するか: Off policy vs On policy」とあるが、「経験を状態評価、戦略のどちらの更新に使用するか」という点と、「Off policyとOn policy」という観点は別の話となる。

  • 状態評価(#1 より、「価値評価」の方が適切)を更新するか、戦略を更新するかというのは「更新対象」の話であり、「On-policyかOff-policyか」というのは価値の見積りに際しての前提のこと(最良行動前提か、戦略前提か)。
  • そのため、図3-1は「Off-policy/On-policy」ではなく「Valueベース/Policyベース」の方が適切。

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

ページ番号: p

welcome.pyの実行エラー

以前の指摘を踏まえて、修正等を行い、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でのパラメータ更新について

指摘事項

4.4のPolicy gradientの説明文およびサンプルコードについて、正しいか疑問に思う点があったので質問させていただけないでしょうか?
当該箇所のサンプルコードでは、毎ステップでreplay bufferを使って過去に得られた全てのエピソードからデータ (state, action, weight) をサンプルして学習を行っていると思います。
しかしながら、Policy gradientにおいては、学習に使って良いデータは現在のポリシーで得られたデータに限るべきなのではないでしょうか? (replay bufferは使わず、更新は一度だけ)
というのも、ここでの ∇J(θ) は現在のポリシーから得られた場合でなくては正しい意味を持たないからです。

OpenAIのサイトの最初の You Should Know とこの書籍の説明とで食い違いがあると思い、疑問に思ったのでissueをあげさせていただきました。

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

コイントスゲームの期待値について

指摘事項

表が出たら100円、裏が出ただ10円、、、その期待値は、、、45円
とありますが、正しくは55円ではないでしょうか?

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

ページ番号: p33

実行環境

  • OS:
  • Python version:
  • pip freezeの実行結果 (下に添付)

エラー内容

(例外のメッセージ、ログ、画面ショットなどを添付)

TD-lambdaの式に誤りがある

指摘事項

TD-lambdaは、Continuousの場合とEpisodicの場合とで式が異なり、本書はEpisodicのケースなのでEpisodicの式でないとTD(1)のときMCにならない。

Continuous

image

Episodic

image

参考: True Online TD(λ)

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

ページ番号: p

実行環境

  • OS:
  • Python version:
  • pip freezeの実行結果 (下に添付)

エラー内容

(例外のメッセージ、ログ、画面ショットなどを添付)

p34 式の誤植

指摘事項

p34下から二つ目の式では、「価値」が最大になる行動を選択した結果得られる価値をV(s)としていると思うのですが、その場合右辺のVにはπは必要でしょうか?

指摘箇所

  • Day1: 強化学習の位置づけを知る
  • Day2: 強化学習の解法(1): 環境から計画を立てる
  • Day3: 強化学習の解法(2): 経験から計画を立てる
  • Day4: 強化学習に対するニューラルネットワークの適用
  • Day5: 強化学習の弱点
  • Day6: 強化学習の弱点を克服するための手法
  • Day7: 強化学習の活用領域

ページ番号: p34

実行環境

  • OS:
  • Python version:
  • pip freezeの実行結果 (下に添付)

エラー内容

(例外のメッセージ、ログ、画面ショットなどを添付)

A2CのSampleLayerのノイズについて

指摘事項

SampleLayerのノイズの計算で下記の式となっていますが、
これだとノイズが大きいと思ったのですが、どのような意図でこの式となっているのでしょうか?
return tf.argmax(x - tf.log(-tf.log(noise)), axis=1)

指摘箇所

  • Day4: 強化学習に対するニューラルネットワークの適用

ページ番号: p
code4-24

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.