iPX社員によるブログ

iPX社員が"社の動向"から"自身の知見や趣味"、"セミナーなどのおすすめ情報"に至るまで幅広い話題を投下していくブログ。社の雰囲気を感じ取っていただけたら幸いです。

社内システム管理側から見たテレワーク

こんにちわ、 iPX のコクブンです。
最近は社内のシステム管理を中心に作業を行っています。そこで、今回はシステム管理の立場から「テレワーク」について思うことを書き連ねてみたいと思います。

続きを読む

思考、あるいは学習の"性能"

お久しぶりです。堀田です。
他のブログ記事でもたびたび紹介されていますが、弊社では機械学習を用いた案件や展示をいくつか取り組んできました。

数年前のブレイクスルーで持て囃された時期と比較すると落ち着いてきたような印象は受けますが、各所で研究は続けられており様々な手法が提案されています。
しかし、高精度な手法が出てきても要求されるコンピューターの性能がとんでもないものばかりだったり……
例えば、弊社ではオートモーティブワールドにて自己教師あり学習についての展示を行いましたが、自己教師あり学習の代表的な手法であるSimCLRの論文(https://arxiv.org/pdf/2006.10029.pdf)では128 Cloud TPUという機械学習分野に明るくない人にとってはなんかすごそうとしか分からないようなコンピューターが用いられています。

そこで、今回は機械学習にコンピュータースペックがどれくらい必要なのか、簡単に紹介しようと思います。

続きを読む

Behavior CloningとGAILについて

久しぶりの投票になりますが、パルハットです。今回強化学習関連のテーマでの内容になります。最近複数のプロジェクトが強化学習関連の案件でした。主のstable baselinesという強化学習関連のフレームワークを使っていました。そこで色々DQN(Deep Q Network)とかPPO2(Proximal Policy Optimization)といったアルゴリズムを使ったていましたが、今回のメイン内容はBehavior CloningとGAILGenerative Adversarial Imitation Learningの紹介です。

Behavior CloningとGAIL

Behavior Cloningは行動を真似て学習する方法の一種類であります、摸倣学習とも言われています。摸倣学習といえば逆強化学習もありますが、それ以外にGAILも摸倣学習の一種類です。逆強化の場合エキスパートとの行動履歴から報酬を推定するように学習を行います。一方Behavior CloningとGAILは教師あり学習みたいにエキスパートの行動履歴を正解データとして使って損失関数を最小化しながら、上手に摸倣できたらいい報酬を与えるようになっています。Behavior CloningとGAILの場合エキスパートの行動履歴に主にPIDコントローラもしくは人間による手作業からえられてたデータを使うことになっています。 BCとGAILの実行例は概ね一緒です。

エキスパートのデータを作成

一番最初はエキスパートの履歴データを作成します。状況によってPIDによってデータを作成するか、人間の手作業によってデータを作成するかはわかりますが、私が関わった案件でPIDによってエキスパートのデータを履歴を作成したことがあります。その場合stable-baselinesが提供しているメソッドを使えば簡単にデータを作成できます。

env = gym.make('Pendulum-v0')
def dummy_expert(_obs):
    return env.action_space.sample()

generate_expert_traj(dumpy_expert, 'dummpy_expert_pendulum', env, n_episodes=10)

ここからdummy_expert_pendulum.npzというエキスパート履歴データが作成されます。次のステップでそれを用いて学習を行う。

Behavior Cloningを用いてPre-Train(転移学習)を行う

エキスパートの履歴をデータを読んで、データ・セットを作成する。

dataset = ExpertDataset(expert_path='dummpy_expert_pendulum.npz',
                        traj_limitation=1, batch_size=128)

次に使えたアルゴリズムを用いて学習を回しす。純粋のBehavior cloningの場合PPO2等使って転移学習をおこないます、GAILの場合そのまま使います。

model = PPO2('MlpPolicy', 'Pendulum-v0', verbose=1)
model.pretrain(dataset, n_epochs=1000)
#GAILの場合
model = GAIL('MlpPolicy', 'Pendulum-v0', dataset, verbose=1)
model.learn(total_timesteps=1000)
model.save("gail_pendulum")

実際の実行例

以下のコードをそのまま実行したら確認可能です。

import gym

from stable_baselines import GAIL, SAC
from stable_baselines.gail import ExpertDataset, generate_expert_traj

model = SAC('MlpPolicy', 'Pendulum-v0', verbose=1)
generate_expert_traj(model, 'expert_pendulum', n_timesteps=100, n_episodes=10)

dataset = ExpertDataset(expert_path='expert_pendulum.npz', traj_limitation=10, verbose=1)

model = GAIL('MlpPolicy', 'Pendulum-v0', dataset, verbose=1)
model.learn(total_timesteps=1000)
model.save("gail_pendulum")

del model

model = GAIL.load("gail_pendulum")

env = gym.make('Pendulum-v0')
obs = env.reset()
while True:
  action, _states = model.predict(obs)
  obs, rewards, dones, info = env.step(action)
  env.render()

まとめ

今回強化学習関連内容でした、現在ウチの周り皆強化学習をやっているので、IT業界でも結構熱いテーマになっています、と言っても直接AIに絡んで来るので、これからも強化学習関連の新しい技術が関心を持つでしょう。ということで今回はここまでにさせていただきます。

テレワーク

コロナ禍いかがお過ごしでしょうか?iPX寺田です。
弊社では在宅2日、出社3日で1週間を回しております。変化に適応した上で、
今まで熟していた物量を熟す日々。遠隔でのコントロールは以前から体験していましたが、
中々情報伝達というのは上手くいかないものです。

そんな今回は「テレワーク」について感じた事、実際に行っている事など述べていこうと思います。

テレワーク開始

「今までを捨てる」こんなワードが社長から出た事で開始した「テレワーク」でした。
「捨てる」とは今までに固執せず、新たな環境に適合していく事を指します。少なくとも私はそう捉えました。

社内の変化

変化の想定

冒頭でお話した在宅2日、出社3日で1週間を回す事、それは在宅で作業しながら本社にいるメンバーへ指示を出したり、
また本社にいながら在宅作業中のメンバーの状況を確認をする機会が格段に増える事とほぼ同義であることは容易に
想定出来ました。

備え

私はプロジェクトマネージャーという立場になるため、今までは作業者と直接会話して案件を進めていた部分を、
いかに効率良く、遠隔でも直接でも関係なく、同じ情報量のやり取りを行うにはどうするべきか、これを日々追及するように考え方と仕事の取組み方を変化させました。

効果

スタートしてから半年になりますが、テレワークへの備えをしていた事で、メンバーとの意思疎通は円滑に行えていると
言えるくらいのレベルになっていると感じています。
チャットとTEAMS通話を利用して、情報伝達を行う事で、短時間で会話する事が増えて、長時間の会議が淘汰されていくという
効果が生まれています。

社外の変化

想定

お客様との定例会や必要に応じて行う会議も、WEBでのやり取りが増える事が想定されました。
弊社では元々TEAMSを利用したWEB会議が頻繁に行われていたため、さほど変化はなかったのですが、

実感

プロジェクトの立ち上げ時等はその場での反応で要望を感じ取ったり、その場の雰囲気で会話の展開を変えるなど、
対面で会話する事で知りえる情報がありました。
これがテレワークになった時、カメラの向こう側の反応から得られる情報量が少なく、それまで行えていたであろう
意思疎通の難しさを感じました。(現在も継続中・・)

結果的に

「WEB会議では認識齟齬が発生する」くらい複雑な話題になった時、取るアクションはやはり対面での打ち合わせになります。
最低限度の人数での開催が前提となりますが、これがやはり一番多くの情報を得る手段だと考えます。

在宅の変化

変化

大きくは通勤時間帯が変化しました。弊社では時間差通勤が認められています。
10:00出勤を繰り返す日々から、必要に応じて11:00までの出勤で調整が可能になりました。
これにより満員電車による密を回避しつつ、朝の早い時間にない特急に乗れたり、座れたり出社の負担が減りました。

メリット1

私にとって最も大きな変化は「通勤時間0」の日が2日もあることです。家から本社までの通勤時間は約1.5Hなのですが、
この消費していた約1.5Hを仕事時間へ回せるという最大のメリットとなっています。

メリット2

また、妻子持ちの身としては、仕事開始までの間、仕事後すぐに「家事、育児」が出来る事がかなりメリットです。
これにより毎日通勤では実現しえない、「晩御飯を一緒に食べる」「食後に子供と遊ぶ」が実現可能になります。夢ですか?夢ではありません現実です。

見解

私個人ではテレワーク(在宅勤務)によるメリットが大きく、大いに活用させて頂いています。
ただ、中には「電気代がかさむ」「通信パケット量が大幅に上がった事で代金がやばい」など不満の声も少なくありません。
置かれている環境によって、この見解は異なるようです。
そう考えると会社に出社して仕事するって、いろんな費用を負担してもらっているんだなと実感した人もいるようです。

総じて

コロナによって開始した「テレワーク」ですが、「仕事の効率化」「情報伝達方法の見直し」「通勤の必要性」など今までの「仕事」を見直す良い機会になったのだと、ただ遅かれ早かれ「テレワーク」という形態は浸透していたのではないかとも考えます。
私は無駄な会議、無駄な往訪、通勤中の何もできない時間、これは早いところ撲滅出来ないかと考えていました。
今回コロナ禍と呼ばれる環境において、それが現実のものとなった今、これらの時間を他の事に有効活用出来ないか考えていた毎日が活きてきているのだと感じています。

総じて、「テレワーク」が可能な仕事であれば私は賛成です。テレワークでも出社と同等のパフォーマンスが出せるよう、更なる活用法について追及していきたいと思います。
















私の今の仕事内容@2020/10

こんにちは、iPXの須山です。

今年も早いもので もう10月まで来てしまいました。
前(今年の2月)に私が投稿した内容は仕事PC環境周りでしたが、
今回は私がiPXの業務で扱った物・事等の一例を紹介してみたいと思います。
※ちなみに、この記事で記載している内容は 私の場合のケースとなります

続きを読む

人形塗装記

TCDのタキヤマです

前回は車の話ということで車検について書きましたが、
結局車はまだ決まっておらず、あと1年で決められるか?17年目車検しちゃうか?で迷ってます。

いよいよオートモーティブ名古屋も近付いてきたということで、
前回のオートモーティブワールド2020(東京ビックサイト)の出展物であった
「逆強化学習(AI)を用いた軌道推定とモデル予測制御」で使用した歩行者人形の制作過程を紹介しようと思います。
展示会にお越し頂いた方には「ラジコンの展示」で伝わるかと思います。
今回の記事は展示物の本筋の内容とは全く関係のない装飾側の内容です。

元々頭を動かすより手先を動かす方が得意なタイプなので、
なかなかに無茶な作業期間でしたが、わりと楽しく作業していました。

続きを読む

算法少女と皈除得商術について

近況について

お久しぶりです。砂子です。このごろは知識を何如に纏めようかとか、業 務と学習の兼ね合いなどをどうするかを考えていますが、なかなか進展が 見られずなんとも面映い面持ちで日々を過す今日このごろです。

和算書について

"1足す1から現代数論へ:モジュラー形式への誘い"を読んでいる際に、第5章の最初の方 に検算の方法の一つである "九去法(casting out nines)" の使い方とその 原理が説明されていた。同様の手法は知っていたが、九去法という名称は 初耳であったため Wikipedia で詳細を調べると下記のような記述があった。

九去法 - Wikipedia より

電卓やコンピュータの普及により、九去法は最近ではあまり使われなくなっ た。日本では安永4年(1775年)に出版された和算書『算法少女』の第八問 に九去法が取り上げられている[1]。この本によれば「阿波の人が浪花にき てこの術〔九去法〕を十金で売っていた.好事家が争って求めていたとい う.」と解説されている[2]。

和算書「算法少女」というものがありそのなかに九去法が説明されている とのことである。この和算書はその名称から推察できるように日本の古い 数学の本であることは知識としては知っていたが具体的にどのようなこと が書かれているかは知らなかった。 この期に和算書がどのようなものかを 読むのもよいと考え、算法少女をWebで検索すると "和算書「算法少女」を読む" が あった。文庫本であることもあり、購入に少し読んでみることにした。

算法少女について

"和算書「算法少女」を読む" の前書きからいくつかを箇条書きにする。

  • 安永4年(1775年)に書かれた。
  • 算法少女の著者はペンネーム:壺中隠者、本名:千葉桃三である。
  • 算法少女は壺中隠者が娘:平章子に伝授したことを本にした
    • 実際に娘がどの程度関与したかは数学史家によって諸説ある
  • 全部で30題の算題(問題)がある。
  • (算法少女 2006) という同名の小説が注目されるきっかけとなった。

第1章 序文と円周率 「円周を求むる秘術の起源」

"和算書「算法少女」を読む" を読みすすめるとまず円周率の求めかたが2つある。一つ は現在でもよく知られた内接多角形と外接多角形を使用する方法である。

もう一つが「円周を求むる秘術の起源」として記載されている下記の等式で ある。

$$ \pi = 3 + \frac{3 \cdot 1^{2} }{4 \cdot 2 \cdot 3} + \frac{3 \cdot 3^{2} }{4^{2} \cdot 2 \cdot 3 \cdot 4 \cdot 5} + \frac{3 \cdot 3^{2} \cdot 5^{2} }{4^{3} \cdot 2 \cdot 3 \cdot 4 \cdot 5 \cdot 6 \cdot 7} + \frac{3 \cdot 3^{2} \cdot 5^{2} \cdot 7^{2} }{4^{2} \cdot 2 \cdot 3 \cdot 4 \cdot 5 \cdot 6 \cdot 7 \cdot 8 \cdot 9} + \cdots $$

この等式の導出方法も解説されており、それは「弧矢弦叩底」(著:忍 澄,1818)で説明されているものだそうだ。

説明のために書籍にあった図を desmos にて描いてみた。

直径をd、弦ABをc、弦 CB × CB=x1として、下記の等式を導いている。

$$ x_1^{2} - d^{2}x_1 + \frac{c^{2}d^{2}}{4} = 0 $$

しかし、その次の箇所がどうにもよく分からなかった。

これを組み立て除法で解くと、 $$ x_1 = \frac{c^{2}}{4} + \frac{c^{4}}{16d^{2}} + \frac{c^{6}}{32d^{4}} + \frac{5c^{8}}{256d^{6}} $$

"和算書「算法少女」を読む" にはこれ以上詳しくは書かれていなかった。どのように解 くのか興味をもったため少し調べてみた。

皈除得商術

いくつかのサイトや文献を調べてゆく内に "SEKI’S Method of Finding the Length of an Arc of a Circle." を見つけた。そこ に建部賢弘(寛文4年(1664年)-元文4年(1739年))が円周率を求める際に行なっ た手順が詳細に記述されていた。2次方程式からその解を近似的に求める方 法が記述されていた。その名称を皈除得商術というらしい。

この方法が "和算書「算法少女」を読む" に記された方法と一致していると考えたのは 結果の数式の係数が一致していることと書籍の図と論文の図が酷似していた ことからそうではないかと推測した。

"SEKI’S Method of Finding the Length of an Arc of a Circle." では下記の形式の2次方程式を解いている。

$$\begin{align} 4(d - s_1)s_1 = ds \\ -4s_1^{2} + 4ds_1 - ds = 0 \end{align} \qquad (1)$$

まず、準備として下記のように漢字を表のヘッダーに書き込む。

- - - -

次に下記のような対応で表の1行目に2次方程式の係数を書き込む。

  • 商 : 結果
  • 実 : 定数項の値(-ds)
  • 法 : 1次項の係数(4d)
  • 廉 : 2次項の係数(4)
-ds 4d -4

まず、最初の実を補で割る。そして、最初の商を得る。但し、商が負の場合正とする

$$ \frac{-ds}{4d} = -\frac{s}{4} $$

s/4 -ds 4d -4

最初の商と連を乗算し、補の欄に記入する。 $$ \frac{s}{4} \times (-4) = -s $$

s/4 -ds 4d -4
-s

商と補を乗算し、実を上書く。

$$ \frac{s}{4} \times 4d = ds $$

s/4 -ds, +ds 4d -4
-s

商と二番目の補を乗算し、実に書く。

$$ \frac{s}{4} \times (-s) = \frac{-s^{2}}{4} $$

s/4 -ds, +ds 4d -4
-s2 / 4 -s

商と連を乗算し、二番目の補に加える。

$$ \frac{s}{4} \times (-4) = -s $$

s/4 -ds, +ds 4d -4
-s2 / 4 -s, -s

実を相殺(cancell)

s/4 0 4d -4
-s2 / 4, +s2/4 -2s

実を一段目の法で割る $$ \frac{s^{2} / 4}{4d} = \frac{s^{2}}{16d} $$

s/4 0 4d -4
s2/16d -s2 / 4 -2s

商と廉を乗算し、法の三段目とする

$$ \frac{s^{2}}{16d} \times (-4) = \frac{-s^{2}}{4d} $$

s/4 0 4d -4
s2/16d -s2 / 4 -2s
-s2/4d

商と法を乗算し、実の二段目に追加

$$ \frac{s^{2}}{16d} \times 4d = \frac{-s^{2}}{4} $$

s/4 0 4d -4
s2/16d -s2 / 4 , +s^/d -2s
-s2/4d

二段目の商と法の二段目を乗算し、三段目の実をえる

$$ \frac{s^{2}}{16d} \times (-2s) = \frac{-s^{3}}{8d} $$

s/4 0 4d -4
s2/16d -s2 / 4 , +s^/d -2s
-s3/8d -s2/4d

二段目の商と法の三段目を乗算し、三段目の実のdiff(?)をえる

$$ \frac{s^{2}}{16d} \times \frac{-s^{2}}{4d} = \frac{- s^{4}}{64d} $$

s/4 0 4d -4
s2/16d -s2 / 4 , +s^/d -2s
-s3/8d -s2/4d
-s4/64d

二段目の商と廉の一段目を乗算し、三段目の法をえる

$$ \frac{s^{2}}{16d} \times -4 = \frac{-s^{2}}{4d} $$

s/4 0 4d -4
s2/16d -s2 / 4 , +s^/d -2s
-s3/8d -s2/4d, -s2/4d
-s4/64d

商の列を足しあわせればそれが求めていた2次方程式の近似解のようだ。

$$ s = \frac{s}{4} + \frac{s^{2}}{16d} $$

この手順の箇所だけ読んだせいか一般的な規則がいまいち掴みきれないが、 "和算書「算法少女」を読む" にあった組み立て法にて2次方程式を解いている手順はこ れではないかと考えている。ただ、皈除得商術 = 組み立て法 という直接 的な記述はWebで検索した限りでは見つからなかった。

所感

和算書というものに触れる機会はいままでなかった。整数論の本からの脱 線で少しだけ18世紀の日本の数学を調べることになった。目的を持って読 書や調査をすることもよいが、少し脇道に逸れてある程度の時間を割けば いままで縁遠いと感じていた世界が身近に感じることができるかもしれな い。

参考文献

Ash, A., and R. Gross. 2019. *1足す1から現代数論へ: モジュラー形式への誘い*. 共立出版. https://books.google.co.jp/books?id=laroxweacaaj.
Kikuchi, D. 1896. “SEKI’S Method of Finding the Length of an Arc of a Circle.” *Tokyo Sugaku-Butsurigaku Kwai Kiji* 8 (5): 179–98. https://doi.org/10.11429/subutsukiji1885b.8.179.
*算法少女*. 2006. Math & Science. 筑摩書房. https://books.google.co.jp/books?id=nuckaaaacaaj.