PyTorchを使って連続値制御の深層強化学習のSoft Actor Criticを構築する

前回、深層強化学習における連続値制御のモデル構築について書きました。今回は、その時に構築したモデルを改良し、精度向上に取り組みます。前回の記事をまだ見ていない方は、ぜひご覧ください。 www.dskomei.com 連続値制御の深層強化学習を改良するために…

PyTorchを使って連続値制御の深層強化学習を構築 〜Actor Critic〜

人間と同じように考える機械を作るのは、人間の大きな夢であり、それができるかもしれないと言われているのが強化学習の枠組みです。強化学習は、ディープラーニングを取り入れることでめざましく進化してきました。今回は、そのディープラーニングを使って…

Pytorchを使った深層強化学習!〜Actor Criticの構築〜

最近のレコメンデーションに関して調べていたら、レコメンデーションに深層強化学習( Deep Reinforcement Learning )が使われるようになったことがわかり、深層強化学習に関して再び勉強し始めました。 深層強化学習は、強化学習の際に Deep Learning を使…

PytorchのTransformersのT5を使って要約モデルを作る

インターネットの世界にニュースが溢れる昨今、満足度が高いものを的確に読みたいという方も多いかと思います。そのためには、見るニュースをどれにするか判断することが必要になります。そこで、ニュース全体の主旨を短い文章で表す要約の価値が高まってい…

Pythonを使って日本語の要約データを取得する

自然言語処理のタスクは、Transformer が現れて以来一段と盛り上がっています。これまで精度がいまいちだったタスクで、人間以上の精度になってきています。それは、文章の要約タスクでも同様です。文章要約は、与えれた文章の中で重要なワードや文を抜き取…

Pytorchを使って深層強化学習のモデルDQNを構築する 〜Deep Reinforcement Learning〜

囲碁や将棋のコンピュータって強いですね。初期レベルでも全然勝てなくて、何度待ったをしたことか。 このようなゲームでは、ある手段を選択すると、状態が変化し、次の状態に移り、再び手段の選択をするということを繰り返し、最終的な勝ち負けが決まります…

Pytorchを使ってテキスト生成モデルのT5を構築 〜Transformersでの転移学習による手軽な実践〜

近年、自然言語処理のディープラーニングの発展はめざましく、Transformer をベースとした BERT、GPT-3、T5 によって次々にこれまでの精度を超えるモデルが構築されています。そして、自然言語処理のタスクのラスボスと言ってもいよいテキスト生成において、…

PyTorch を使って Transformer による翻訳モデルを実践する

DeepL や Google 翻訳などの翻訳サービスは、既に人間以上の性能になっており、多くの人々が日常的に使用しています。このような翻訳サービスに使われている予測モデルは、BERT や GPT-3 によって近年精度が格段に上がりました。そして、これらのモデルのベ…

スパース(疎)なデータを非スパースに変換して、XGBoostを高速化

機械学習のモデルを作るときは、とりあえずXGBoostにしとけばよいでしょっていうぐらい、XGBoostが優秀です。ただし、XGBoostはある程度の精度のモデルを何も考えずに構築できる反面、他の機械学習モデルよりは実行時間が長くなります。モデルの学習時間が長…

ディープラーニングを使った因果推定 〜SAMのアルゴリズムを理解する〜

近年、機械学習のアルゴリズムは目覚ましい発展を遂げ、機械学習を使ったサービスが広まっています。そして、今後も機械学習は注目され、さらなる成長が起こるでしょう。しかし、それと共に機械学習のモデルは大きくなっており、予測結果がブラックボックス…

Pythonを使ったデータ加工 〜Pandasによる主要な前処理〜

データの取得から担当者への結果報告というデータ分析の一連のプロセスで最も時間がかかるのはデータの前処理です。平均や標準偏差などの何かしらのデータ集計を行うにしろ、機械学習モデルを作成するにしろ、それらを行う前にデータの前処理が悠然と壁にな…

Pythonを使って時系列データを予測する状態空間モデルの実装 〜トレンド、季節周期、自己回帰を状態とする線形ガウスモデル〜

状態空間モデルは、観測できない状態を推定し、その推定した状態から観測値を予測するモデルです。観測できない状態の形を指定できるため、季節周期やトレンドを表す状態のモデルを構築でき、それぞれの成分に分解できます。これにより、ブラックボックスに…

Pythonを使って状態空間モデルを実装する 〜線形ガウスモデルのトレンド推定モデル〜

状態空間モデルとは、時系列データにおいて、見えない状態を推定し、その推定した状態から観測値を求めるモデルのことです。状態を介して観測値を予測することにより自由度の高いモデルとなっています。状態の表現力の高さは凄まじく、トレンドや季節成分、…

『AIの時代と法』の感想

AIの開発とは、ユーザのデータからカテゴリの分類や値の推定を行うモデルを作ることであり、そのときに使う主なデータがアクティビティログ(ユーザの行動履歴)やユーザの属性情報です。それらのデータを使うことでユーザ自身が気づいていない癖が見え来る…

Pythonを使って多変量時系列データの因果関係を可視化 〜インパルス応答関数〜

多変量の時系列データの良いところは、データから因果関係わかることです。その一つが今回テーマとするインパルス応答関数です。ざっくりいうと、変数の変化が他の変数に与える影響を見ることで因果関係を確認できるようにします。 今回は下記の図のようにイ…

眠たくなくする会議に必要なのは”ファシリテーション”

日常の会議では、やる必要がないものが多いなぁ、声のでかい人・よく喋る人の意見だけが取り上げられるなぁ、いろんなアイディアが出たけど結論がしょぼいなぁ、と感じている人は多いですよね。 私も8割ぐらいの日々の会議は、必要がないなと感じています。…

Pythonを使って多変量時系列データの予測における変数の関係性を分析 〜予測誤差分散分解〜

現在、データを取得しやすくなったことで、多変量の時系列データも増えてきました。多変量時系列データを扱う上で、1変数ずつ見ていくのでもよいのですが、せっかく多変量あるならば、多変量ならではの示唆を得たいですよね。そこで今回は、多変量時系列デー…

Pythonを使ってVARモデルにおける多変量時系列予測モデルの構築

世の中には色んな種類のデータがあり、売上の推移であったり、勉強へのモチベーションの移り変わりであったりといった、数字の並び順自体に意味があるデータがあります。この数字の並び順自体に意味があるデータは時系列データと呼ばれます。時系列データは…

Pythonを使った固定効果モデルでの推定

機械学習から統計に足を踏み入れた身としては、推定や予測の話になると、すぐさま機械学習の枠組みにはめてしまいがちです。何でも機械学習状態です。しかしながら、データによっては注意が必要な場合があります。特にパネルデータでは、複数の観測個体の複…

Pythonを使ってロジスティック回帰の限界効果を求める

私の座右の銘は「限界突破」でした。それは、自分が想像できる範囲の自分で決めた限界を乗り越えることに喜びを覚えていたわけです。まるで、判別境界を少しでも超えたらその瞬間に異なるクラスに振り分けられるように、設定した”限界”を超えた瞬間に突破と…

因果関係の推定 〜Pythonによる傾向スコアマッチングとIPW〜

中学生のときに目がよく合うと感じた人がいたら、それは自分に絶大な好意を持っているからだと思い込んでいましたよね。しかし、現実は思い出のままでした。それは、「よく目が合う」ことと「好意を持つ」ことは相関しているかもしれませんが、因果の関係と…

Pythonを使ったGoogleのAPIを使ってストリーミングでのSpeech to Textの実行

同じ話を何度も聴くたびに同じように愛想笑いをするのは心が無になりますよね。まるで魔法少女まどかマギカの世界のように、繰り返されるたびに絶望感を感じます。そういうときは、録音した音声を一語一句テキスト化し、全く同じ話をしていることを認識して…

PyTorchチュートリアル 〜翻訳モデルを作る Attention付きSeq2Seq〜

人間の思考を彩るのは言語です。言語自体の表現力が乏しいと思考は制限されてしまいます。 つまり、多様な言語から情報をインプットすることで、思考が豊かになります。ただ、一つの言語を学ぶのには多大なリソースを使います。それならば、機械に翻訳しても…

Pytorchチュートリアルのテキスト分類 ~ torchtextとEmbeddingBag ~

世界に舞う無数のとめどない言葉。これらは生まれては、区別の無い大きな箱に積み重なって忘れられていく。まるで情報過多なのに何も残っていない人間の記憶のように。しかし、ひとたび境界線ができると、情報は区別され、整理される。そして、ヒトの理解は…

XGBoostのアルゴリズムを論文を読んで解説

夕焼けと紅葉が同化するような季節になると、毎日の服選びに時間がかかるように、ほんの少し昔に遡ると、機械学習のアルゴリズムを何にするかは迷いの種でした。ところが、今や機械学習のご意見場的な立ち位置になったXGBoostが現れてかららは、XGBoostをと…

PythonでDeep Forestを実行し、理解する

Deep ForestはDeep Learningという巨頭に立ち向かう、まるでラグビー日本代表のような物語が背後にあることがわかりました。 いまや予測モデルを構築する際は、ニューラルネットワークによるDeep Learning一択と言っても過言ではありません。しかし、Deep Le…

AIを脱Black Box! XAI(Explainable AI)を勉強する 〜shap編〜

私達の知らない未来を予測したい。そして予測した未来に至る要因も教えてほしい。という難問をさらっと突きつけるのが人間の欲でもあります。それを叶えてくれそうな今日のAIは、驚きの精度の予測結果を私達に見せてきます。しかし、精度が高ければ高いほど…

AIを脱Black Box! XAI(Explainable Artificial Intelligence)を勉強する〜Permutation Importance〜

予測モデルは精度が命ということで、内部を複雑化させることで予測精度の向上を図ってきました。内部を非線形関数で複雑にしまくっているディープラーニングのように。しかしながら、内部を複雑にすることで精度が上がった一方、予測モデルの中身がBlack Box…

SQLで移動平均 〜指定行数未満はNULL〜

SQLで移動平均を求めます。移動平均はウィンドウ関数を使えば1行で書くことができます。ですが、指定した行数未満しかデータがない部分に関しても平均を出してしまうと、正しい移動平均の比較ができません。そこで、指定した行数未満の箇所に関してはNULLと…

SQLで素数を抽出

最近SQLを勉強していますが、素数をSQLで見つけ出すテーマが面白かったのでメモしておきます。素数という言葉を聞いたことがない人はいないと思いますが、定義は以下のとおりです。 詳細はこちらのブログを欄ください。 定義:「1より大きい整数で、1と自分…