About#

私は高専卒業後,某電力会社で計装保全業務を担当するプラントエンジニアです.保全計画の策定(長期工事計画の策定、方針作成、予算編成)、工事実施(工事設計、工事管理、工事結果確認、検収)、各種保全情報に基づく評価(不具合懸案評価、点検手入れ前評価)、保全標準(点検内容・周期・方式)の見直しというPDCAサイクルを回し、保全活動の継続的な改善、保全の有効性評価による機器の保全最適化を実施しています.

高専 (NIT; National Institute of Technology)#

電気電子工学を専攻し,理論電気磁気学,

μFμν=μ0Jν,ϵμνρσνFρσ=0,dpμdτ=qFμνuν\partial_\mu F^{\mu\nu}=\mu_0J^\nu, \quad \epsilon^{\mu\nu\rho\sigma}\partial_\nu F_{\rho\sigma}=0,\quad \frac{dp_\mu}{d\tau}=qF_{\mu\nu}u^\nu

半導体デバイス,電気回路,電子回路,パワエレ,電気機器学,古典・現代制御工学, 電力工学,論理学(述語論理),論理回路,プログラミング,情報通信概論などについて学びました.卒業研究ではオフライン強化学習アルゴリズムの提案に取り組みました.研究テーマは,CQL(Conservative Q-Learning)アルゴリズムの単純化と,識別ネットワークを用いた分布シフトの定量化です.

強化学習(RL; Reinforcement Learning)とは,最適な意思決定のルールを求めることを目的とする分野であり,専門的になりますが,全ての軌道の割引累積報酬を最大化する最適な方策

πarg maxπEτpπ()[t=0Hγtr(st,at)],pπ(τ)ρ0(s0)t=0Hπ(atst)T(st+1st,at)τ(s0,a0,,sH),M=(S,A,T,ρ0,r,γ)\begin{align*} \pi^\star \triangleq \argmax_\pi \mathbb{E}_{\tau\sim p_\pi(\cdot)} \left[ \sum_{t=0}^H \gamma^t r(s_t,a_t) \right],\quad p_\pi(\tau)\triangleq \rho_0(s_0)\prod_{t=0}^H \pi(a_t\mid s_t)T(s_{t+1}\mid s_t,a_t)&\\ \tau\triangleq (s_0,a_0,\cdots,s_H),\quad \mathcal{M}=(\mathcal{S},\mathcal{A},T,\rho_0,r,\gamma) \end{align*}

を環境との相互作用により見出すことが目的となります.オフライン強化学習では,以前に収集した大規模なデータセットD={(st,at,rt,st+1,dt)i}\mathcal{D}=\{(s_t,a_t,r_t,s_{t+1},d_t)_i\}を活用する強化学習の変種です.

この研究を通じて,強化学習における理論と実装,そしてアイディアを形にする面白さを味わうことができました.

sql-hkr
/
offline-rl-research
Waiting for api.github.com...
00K
0K
0K
Waiting...

上記アルゴリズムの損失関数を参考までに掲載:

LD(ξ)=E(s,a)D,a~πϕ(s)[log(Dξ(as))+log(1Dξ(a~s))]\mathcal{L}_D(\xi)=\mathbb{E}_{(s,a)\sim\mathcal{D},\tilde{a}\sim \pi_\phi(\cdot\mid s)} \left[ \log(D_\xi(a\mid s))+\log(1-D_\xi(\tilde{a}\mid s)) \right]
ireul/algo/modelfree/scql_d.py
lossD = 0.5 * F.binary_cross_entropy(
disc_real, torch.ones_like(disc_real)
) + 0.5 * F.binary_cross_entropy(
disc_fake, torch.zeros_like(disc_fake)
)
TπQ(s,a)r(s,a)+γEsT(s,a),a~πϕ(s)[minj=1,2Qθj(s,a)αlogπϕ(a~s)]\mathcal{T}^\pi Q(s,a)\triangleq r(s,a)+\gamma \mathbb{E}_{s'\sim T(\cdot\mid s,a),\tilde{a}'\sim \pi_\phi(\cdot\mid s')} \left[ \min_{j=1,2}Q_{\theta_j}(s,a)-\alpha\log\pi_\phi(\tilde{a}'\mid s') \right]LQ(θi)=E(s,a)D[12(Qθi(s,a)TπQ(s,a))2]+λQEsD,a~πϕ(s)[(1Dξ(a~s))Qθi(s,a~)]\mathcal{L}_Q(\theta_i)=\mathbb{E}_{(s,a)\sim\mathcal{D}} \left[ \frac{1}{2} \left( Q_{\theta_i}(s,a)-\mathcal{T}^\pi Q(s,a) \right)^2 \right] +\lambda_Q\mathbb{E}_{s\sim\mathcal{D},\tilde{a}\sim \pi_\phi(\cdot\mid s)} \left[ (1-D_\xi(\tilde{a}\mid s))Q_{\theta_i}(s,\tilde{a}) \right]
ireul/algo/modelfree/scql_d.py
qf1_ood_loss = (
(1 - disc_fake.detach()) * self.critic1(obs, _a)
).mean()
qf2_ood_loss = (
(1 - disc_fake.detach()) * self.critic2(obs, _a)
).mean()
qf1_loss = F.mse_loss(q1_pred, q_target) + self.lam * qf1_ood_loss
qf2_loss = F.mse_loss(q2_pred, q_target) + self.lam * qf2_ood_loss
Lπ(ϕ)=EsD,ϵN(0,1)[αlogπϕ(fϕ(s,ϵ)s)minj=1,2Qθj(s,fϕ(s,ϵ))]\mathcal{L}_\pi(\phi)= \mathbb{E}_{s\sim\mathcal{D},\epsilon\sim\mathcal{N}(0,1)} \left[ \alpha\log\pi_\phi(f_\phi(s,\epsilon)\mid s)- \min_{j=1,2}Q_{\theta_j}(s,f_\phi(s,\epsilon)) \right]fϕ(s,ϵ)tanh(μϕ(s)+σϕ(s)ϵ)f_\phi(s,\epsilon)\triangleq \tanh(\mu_\phi(s)+\sigma_\phi(s)\odot\epsilon)
ireul/algo/modelfree/scql_d.py
policy_loss = (alpha * log_pi - q_new_actions).mean()
TIP

当ブログでは,強化学習の理論的枠組み並びに実装技術について論じております.ご一読いただければ誠に幸いです.

Skill Set#

Certifications#

  • 第一種電気主任技術者(1次試験合格)
  • 第三種電気主任技術者
  • 第二種電気工事士

Languages#

  • C, C++, C#
  • Python
  • Java
  • Swift
  • HTML, CSS, JavaScript
  • SQL

Frameworks#

  • PyTorch
  • TensorFlow
  • React

S/W#

  • Git
  • Docker
  • Neovim
  • Visual Studio Code
  • Xcode
  • TeX
  • Blender
  • Unity
  • Unreal Engine
  • LTSpice

Algorithms#

sql-hkr
/
algo
Waiting for api.github.com...
00K
0K
0K
Waiting...