投稿

3月, 2015の投稿を表示しています

classloaderとstatic変数

classloaderとstatic変数の関係を調査してみた。 基本的にはclassloaderが異なると、static変数の値も異なるというのが仕様のようだ。 ただし、classloaderのhierarchyで同じparentを共有していると、static変数は共有される。 詳細はstackoverflowで。 Multiple instances of static variables ちなみに下記の日本語ブログでも、static変数はクラスローダごとに別になるとの情報があるが、ブログに載ってるサンプルコードを実行したところ、2つのクラスローダでstatic変数は共有されているようだった。 [Java]別々の ClassLoader にロードされたクラスのフィールドは別になる URLClassLoaderとPluginClassLoaderが階層的にどういう関係にあるのか調べてないけど、親をどっかで共有してたりするのだろうか。または、2006年の情報なのでjavaのバージョンが関係して足りすのだろうか。

RHELでCentOSのレポジトリを使用する方法まとめ

RHELは標準構成ではほとんどソフトウェアがインストールされていないので、いろいろ開発していると追加でインストールする必要が出てくる。 RHELにソフトウェアをインストールする方法は大きく2つ。 rpmをどっかから持ってきてインストール yumを使う ただし、yumを利用する場合RedHatの契約が必要になる。 正式運用環境ならともかく、単なる開発環境ではそんなもの用意してられないので、こういう時はCentOSのレポジトリにつないでインストールするといい。 ここではそのための設定をまとめる。 レポジトリの設定 下記のパスのファイルを新規作成し、下記の内容を記述する。 /etc/yum.repos.d/CentOS-Base.repo [base] name=CentOS-6 - Base mirrorlist= http://mirrorlist.centos.org/?release=6&arch=$basearch&repo=os baseurl= http://mirror.centos.org/centos/6/os/$basearch/ gpgcheck=1 gpgkey= http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6 プロキシの設定 プロキシを使っていない場合は、この設定は不要。 下記のファイルに /etc/yum.conf 下記の設定を行う proxy=<url>:<port>

Counterfactual regret minimization(CFR)

概要 ポーカーとかのAIで有名なcounterfactual regret minimization(CFR)。 ひとことで言うと、近似ナッシュ均衡を求めるための手法。 Regret Minimization まず、CFRの元となったRegret Minimizationの説明から。 Regret Minimizationとは、その名の通り、過去の学習データから、regret(後悔)が最も小さくなる(minimization)手を選択する手法。 じゃんけんの例 例として、二人でじゃんけんを繰り返し行う場合を考える。 この時、勝つと1点、負けると-1点、引き分けると0点もらえるとし、これを繰り返し試行する仮定する。 まず1回目としてプレイヤーAがグー、プレイヤーBがパーを出したとする。 そしてプレイヤーAは負けたので-1点となる。 ここでプレイヤーAはパーを出してれば引き分けで0点、チョキを出していれば勝利で1点もらえる。 つまりプレイヤーAは1回目の戦略に対して、下記のように後悔の値を定量化することが出来る。この定量化した値をregretと呼ぶ。 戦略パー       0 - (-1) = 1 戦略チョキ   1-  (-1) = 2 CFRでは、2回目の戦略を決めるにあたって、regretに比例した確率で戦略を決定する。 つまり、2回目にチョキを選ぶ確率は2/3、パーを選ぶ確率は1/3、グーを選ぶ確率は0である。 ここで2回目の試行としてプレイヤーAがチョキ、プレイヤーBがグーを出したとする。 2回目の試行もプレイヤーAの負けなので、-1点となる。regretはそれぞれ次のようになる。 戦略パー    1 - (-1) = 2 戦略グー   0 - (-1) = 1 3回目の試行では、1,2回目を通したregretの値を利用する。 戦略パー     1 + 2 = 3 戦略チョキ 2 + 0 = 2 戦略グー  0 + 1 = 1 よって、3回目の試行でそれぞれの戦略が選ばれる確率は、パーが3/6=1/2、チョキが2/6=1/3、グーが1/6である。 こ...

CFR(Counterfactual regret minimization)で三目並べ(Tic Tac Toe)

RHELは標準構成ではほとんどソフトウェアがインストールされていないので、いろいろ開発していると追加でインストールする必要が出てくる。 RHELにソフトウェアをインストールする方法は大きく2つ。 rpmをどっかから持ってきてインストール yumを使う ただし、yumを利用する場合RedHatの契約が必要になる。 正式運用環境ならともかく、単なる開発環境ではそんなもの用意してられないので、こういう時はCentOSのレポジトリにつないでインストールするといい。 ここではそのための設定をまとめる。 レポジトリの設定 下記のパスのファイルを新規作成し、下記の内容を記述する。 /etc/yum.repos.d/CentOS-Base.repo [base] name=CentOS-6 - Base mirrorlist= http://mirrorlist.centos.org/?release=6&arch=$basearch&repo=os baseurl= http://mirror.centos.org/centos/6/os/$basearch/ gpgcheck=1 gpgkey= http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6 プロキシの設定 プロキシを使っていない場合は、この設定は不要。 下記のファイルに /etc/yum.conf 下記の設定を行う proxy=<url>:<port>