読者です 読者をやめる 読者になる 読者になる

NYBAR - ニューヨーク州司法試験 申し込みのステップ0

NYBAR

LL.M.の学事担当者に、LL.M.入学前に
NYBAR受験に関する問い合わせをした際に得た情報を残しておきます。

受験資格評価と締め切り

海外からの受験希望者は、その学術的なバックグラウンドの証明を行う必要がある。
受験希望者には、少なくとも受験の6ヶ月前までに、オンラインリクエストの提出と、全てのそれを証明する資料の提出がもとめられる。

  1. foreign credential evaluation formを埋める。(https://www.nybarevaluation.org/Intro.aspx)
  2. evaluation form に記載の手順にしたがって、BOLEに必要書類を送ること。
    詳細はこちらに => NYBAR - ニューヨーク州司法試験 の出願必要資料まとめ(2016年版) - naosk8's blog

2017/07の受験希望者は、もれなく2016/10/01までに、BOLEへの関連書類の提出が必要。

全ての提出資料が揃った時点で、レビュー待ちのステータスとなる。
その状態から、実際にレビューに至るまで、最低6ヶ月の期間を要する。

ということで、秋学期が始まる前に、準備は始めておいたほうが良い。

必要資料の概要

BOLEは、伝統的なLL.Bにつながる3年間の大学でのプログラムを受けたものと、それ以外のもの、それぞれに異なる要件を求める。
common law の国出身の学生は、LL.Mに通うことなく、受験資格を得ることができる。
civil lawやその他の国の出身者は、米国にてLL.M資格を得る必要がある。

提出をもとめられる写しや、証明書は、BOLEに対して、各大学や発行機関から直接送付される必要がある。
国によってはこの処理に長い時間を要するので、2017/07の受験を希望するのであれば、すぐに動いたほうが良い。

登録

費用: $750
- https://www.nybarexam.org/applicantportal/

海外からの申し込みについて

NYBAR - ニューヨーク州司法試験 の出願必要資料まとめ(2016年版)

NYBAR

現在LL.M.に在籍中の知人が、卒業直後の2017年7月にNYBARを受験するとのことで、出願に必要な資料を調査した際のメモ。
結構、資料を探しにくくて、一見ややこしかったので展開。
何かのお役に立てれば幸いです。
当然、情報は古くなっていきますし、大本のサイトの記載が正ですので、この資料はダブルチェックに用いる程度にしてください。

要するに、必要な書類

  • ロースクールの成績証明書 with BOLE ID
  • 成績証明書に学位やその取得日の明記がなければ、学位証明書 with BOLE ID
  • 司法研修所の修了証明書 with BOLE ID
  • LL.M. から出席証明 with BOLE ID

1: (学部 +?) ロースクールの成績証明書

Rule 520.6(b)(1) applicants (i.e., MOST foreign-educated applicants):
通っていたロースクールによる公式の成績証明書。(Official transcript)
- 各学期の出席日数(the dates of attendance for each period of study)
- 各学期に選択し、かつ、合格したコース
- 授業出席時間数と評点(grade)
- 取得した学位(degree)
- 学位(degree)の取得日
- だいたい、大学の側が提出に慣れているので問い合わせてみるといい。
(the courses taken and passed for each period of study, the grades, the number of hours of classroom attendance, the degree awarded, and the date the degree was awarded.

2: 学位証明書

学位証明書(Degree Certificate)
- 1.の書類に学位やその取得日の明記がなければ、学位証明書の取得も必要。
- If the official transcript does not clearly state the degree awarded and/or the date such degree was awarded, you must also furnish the degree certificate.

3: 実務に足るだけの教育/訓練を受けたことの証明

母国で法律の実務に足る教育要件を満たしたことの証明(Proof of fulfillment of the educational requirements for admission to the practice of law in the foreign country)
- 司法研修所の修了証明でいいらしい

4: ロースクールが認可を受けたものであることの証明

認定書(Accreditation) ロースクールに通っていた期間中について、その学校が政府機関によって承認されていたことを示す書類の提出が必要。 BOARDは、ロースクールのリストを所持していて、Evaluation formの提出を受けた際に、あなたにその認定書の提出が必要かどうかを支持する。 (Submit a written statement from the competent accrediting agency of
your foreign government that the law school or schools you attended were recognized by
them as qualified and approved throughout your period of study.)
The Board maintains a list of law schools from which we have received proof of accreditation. The confirmation
email that you received upon submission of your Request for Evaluation Form will
indicate whether or not you are required to provide proof of Accreditation.

5: LL.M. への出席証明

LL.M. 出席証明フォームと公式のLL.M.の成績証明書(LL.M. Certificate of Attendance Form & Official LLM Transcript.)
Applicants relying on the cure provision must request their U.S. law school to submit the completed
LL.M. Certificate of Attendance Form and an Official Transcript directly to the Board
office upon graduation.

備考

これらの書類がBOARDに到着する毎に、その連絡をあなたにemailでお伝えします。
もし、それらの連絡が届かなかった場合には、BOARDに確認の連絡を入れてください。
BOARDへの書類の到着確認を行うのは、受験者の責任です。BOARDが書類に関してリマインドすることはありません。

NYBAR事務局に送付する書類について

VI. SUPPORTING DOCUMENTATION
A. 全ての提出書類は、発行元機関や政府により厳封にて直接の郵送が必要。
B. 提出書類は、発行元の学校その他機関によって直接証明された原本、もしくは複写であるひつようがある。
C. 公証人によって保障された、ファックスの複写や、写真複写、もしくは、発行する学校や期間以外によって保障された写真複写は、considerされません。
D. 全ての提出書類には、BOLEアカウントIDを付すこと。

参照: https://www.nybarexam.org/foreign/foreignlegaleducation.htm

Expectimax とは何か? Minimaxとの違いは?

機械学習

Expectimaxについて、 日本語で解説してるサイトを見つけられなかったので
自力で Expectimax を調べてみた結果を整理してみる。

ExpectiMaxとは

行動を確率の分岐として描けるような場合に、
ある分岐以降の価値(重み)を、その分岐の1つ先の階層にある価値を平均した値で表現し、 その値が最大となる分岐を選択する探索方法。

機械学習でも用いられる探索方法の一つ。
特に、2人プレイのゼロサムで、かつ、プレイヤーの実力とサイコロのような運の要素が絡むゲームにおける人工知能分野で活用されている。例えば、バックギャモンや、カーリングなど。

説明資料

ひとまず、概念をざっと見ておく。 f:id:naosk8:20170209173447p:plainf:id:naosk8:20170209173546p:plainf:id:naosk8:20170209173553p:plain
(引用: Washington Univ. Artificial Intelligence Slides, Luke Zettlemoyer, 2011.)

十分伝わった気がする。

有効なケース

  • パックマンの操作ロジックにて、敵が不規則な動きをするように設定された場合に、時に偶然の回避で延命できる。

苦手なケース

  • パックマンの操作ロジックにて、敵が単調な動きをするように設定された場合(最短距離を直進してくる等)に、鉢合わせる可能性がある。

参考資料

Python - 強化学習(マルコフ決定過程)のコードリーディング

機械学習 強化学習

強化学習のメモ

このQiita記事に従って触っていたものの、コードを前にハテナがいくつか浮かんだので、解釈した結果をメモ。
qiita.com

サンプルコード群 By UC Berkeley
github.com

以下、掲題の通り、マルコフ決定過程のサンプルコードに関する解釈です。
https://github.com/aimacode/aima-python/blob/master/mdp.py

サンプルコードの実行方法

  • ドキュメントにある通り
$ python
Python 3.4.6 (default, Feb  8 2017, 16:33:17)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.42.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import mdp
>>> print(mdp.__doc__)
Markov Decision Processes (Chapter 17)

First we define an MDP, and the special case of a GridMDP, in which
states are laid out in a 2-dimensional grid.  We also represent a policy
as a dictionary of {state:action} pairs, and a Utility function as a
dictionary of {state:number} pairs.  We then define the value_iteration
and policy_iteration algorithms.
>>> pi = best_policy(sequential_decision_environment, value_iteration(sequential_decision_environment, .01))

>>> sequential_decision_environment.to_arrows(pi)
[['>', '>', '>', '.'], ['^', None, '^', '.'], ['^', '>', '^', '<']]

>>> print_table(sequential_decision_environment.to_arrows(pi))
>   >      >   .
^   None   ^   .
^   >      ^   <

>>> print_table(sequential_decision_environment.to_arrows(policy_iteration(sequential_decision_environment)))
>   >      >   .
^   None   ^   .
^   >      ^   <

>>>
  • ファイルから実行するならこんな感じ
from mdp import *

// これは定義済みなので不要ではある。自由にいじって実行結果を確認できる。
sequential_decision_environment = GridMDP([[-0.04, -0.04, -0.04, +1],
    [-0.04, None,  -0.04, -1],
    [-0.04, -0.04, -0.04, -0.04]],
    terminals=[(3, 2), (3, 1)])

pi = best_policy(sequential_decision_environment, value_iteration(sequential_decision_environment, .01))

print_table(sequential_decision_environment.to_arrows(pi))

問題のコードリーディング

この関数が鍵で、
https://github.com/aimacode/aima-python/blob/master/mdp.py#L112

特にここが肝。
https://github.com/aimacode/aima-python/blob/master/mdp.py#L120

以下、自分なり解釈(大学生くらいが分かる言葉で書く。そもそも数学的素養はそこまで高くない)。

  while true:
         U = U1.copy()
         delta = 0
         for s in mdp.states:
              U1[s] = R(s) + gamma * max([sum([p * U[s1] for (p, s1) in T(s, a)])
                                        for a in mdp.actions(s)])
+            # ある地点(state)において実行し得る、各行動について: for a in mdp.actions(s)
+            # それぞれ実行し(1マスの移動(3方向)を計算し)、その結果得られる各マスとそこへの移動確率のペアをもとに:  for (p, s1) in T(s, a)
+            # 移動先のマスへの移動確率を加重: p * U[s1]
+            # 行動ごと計算していたのを合計し、その中で、もっとも取り得る確率が高いものを選択: max(sum[ ~ in mdp.actions(s)])
+            # 現在地の報酬に、その"取り得る確率"を薄めた(*gammaした)ものを加算し、そのマスの新たな"取り得る確率 = 移動確率"とする。
+            # この処理を、変化率が特定の閾値を切るまで(雑に言うとゼロに近づくまで)繰り返す。
             delta = max(delta, abs(U1[s] - U[s]))
         if delta < epsilon * (1 - gamma) / gamma:
             return U

とりあえず、メモはここまで。
要するに、この例では、とあるマスから次に進む可能性が高いのはどこかを突き止めて行って、
その移動過程や、ゴールにおける報酬(合計スコア)が低い手ほど、評価が落ちていくので
次第により高報酬 = 適切に正解ルートを辿れる手がとれるようになるってことだと理解した。

理想的な地球語(新言語)を考えてみる ~ 英語は地球語? ~

英語は地球語?

英語は地球語と言われて久しいですね。
エンターテイメント大国のアメリカの主要言語でもあるため、映画を通じて標準語として流布されている印象も受けますが、
たしかに、英語を公用語、準公用語とする人口は世界で20億人ほどいるようです。

世界の言語別使用人口 - 文部科学省
http://www.mext.go.jp/b_menu/shingi/chukyo/chukyo3/015/siryo/05120501/s003.pdf

が、しかし。
これまでに皆さんも英語のイレギュラーな文法、活用、前置詞、発音などに悩まされてはきませんでしたか?
少なくとも、私はそうでした。

そんな中、コンピュータ言語は短期間で進化を遂げてきたというのに、 実際に会話で用いる言語については思考停止になっていることに違和感を覚えたのでオレオレ地球語を考えてみます。

別途、開発言語が一本化されずに派生が進んでいる理由についての考察はこちらに。
なぜコンピュータ言語は1つの言語へと集約されないのか? - naosk8's blog

英語を基準に新言語を考察する

基本的に、英語のイレギュラーな側面を削り、気軽に学び・話しやすい言語を目指す。

名詞は複数形にしない

  • 目的: 単語毎の複数系を覚えるコストをなくす。
  • 日本語に似た取り扱い。「アメリカにはたくさんのIT企業がある」/「企業」は変化しない。
英語: United States has many IT companies.
(新): United States has many IT company. 

主語に応じて動詞を変化させない

  • 目的: 動詞毎の活用を覚えるコストをなくす。
英語: He has one child.
(新): He have one child.

時制に応じて動詞を変化させない

  • 目的: 動詞毎の活用を覚えるコストをなくす。
  • 動詞に基本形のみを用いる代わりに、助動詞を明確に用いるようにする。 以下、過去を示す助動詞を"did"と仮定する。
英語: I stopped watching TV.
(新): I did stop watching TV.

英語: I will have a lunch with my friend.
(新): I will have a lunch with my friend. // 変わらない。

その他

  • 受動態については、それが存在し無くても成立するので一旦なくしてもいいかもしれない。

他にもたくさん考えるべきことはありそうなので、思いついたら追記予定です。
ひとまずここまで。

なぜコンピュータ言語は1つの言語へと集約されないのか?

開発

最近、とある人から「なぜコンピュータ言語は1つの言語へと集約・淘汰されないか?なぜたくさん存在するのか?」を考えさせられる場面がありました。それについて、せっかく考えたのでメモとして残しておきます。

結論、以下のメリットよりもデメリット / 課題が優っているので、集約する方向にはなっておらず、
きっと、これからも各言語が学び合い、進化することや、よほど不人気な言語が廃れることはあっても、
集約されることはないと、個人的には考えます。

集約のメリット

  • エンジニアの流動性やシステムの保守性の向上。
  • その言語自体の議論が活発化することで、共有知の蓄積が進み、また、洗練されたものへと変化する可能性が高まる。

集約のデメリット / 課題

言語毎の得意/不得意

  • 言語によって特性が異なるため、現状、必要な要件(TPO)に合わせて、適切なものを用いることで最適化が図れている。
  • たとえば、エンジニアが記述するコード量を少なくすることをテーマにした言語はコーディングが容易である反面、1を聞いて10を知ってもらうような内部処理がなされやすいため、最終的に機械語となった際のコード量が肥大化しやすく処理速度が劣化しやすい。その逆も然りで一長一短。

美学/思想

  • 言語には、その処理に関する考え方について、大きな枠組みがあり、それぞれなりに一長一短があるため。
  • 有名なところでオブジェクト指向という概念のもとでは、人間が物体を認識する際に感知する、構成要素(パーツ)や状態・動作単位をコードにあてはめることで直感的な構造ルールを担保しているが、同じ命令を出してもその物体の状態によって実行結果が異なるという処理上のリスクを残している。 他方、関数型プログラミングという概念のもとでは、ある処理にAという値を与えたら、常にBという結果が返され、その過程で副作用としてCやDといった要素が変化することを許さない、という数学的な世界で堅牢かつ、再利用性の高い処理を書くことを目的としている。(個人的な解釈)

費用対効果が悪い/現実問題

  • 古い言語で書かれたコードを新たな言語に書き直す作業は、動作検証も含めると当初の工数と同等かそれ以上のものとなる。稼働中のシステムに対しては不具合が生じた場合のビジネスリスクが大きすぎて普通はこの作業は認められない。
  • エンジニアの確保についても複数言語に精通している人材を集めることは多少難度が高まり、費用も相当にかかる。

競争鈍化による進化の低速化

  • 現状、複数言語がしのぎを削ることで、より優れたものが生まれやすい環境ができているものの、言語が一本化された日には、現状よりも進化の速度は遅くなると思われる。そもそも、その状況を許さない開発者が、すぐにも新たな言語を生もうとするだろう。

言語による囲い込み(おまけ)

  • 例えば、iOS開発用言語のSwiftは、それ自体が優れているかもしれないものの、Appleは独自の言語を提供することで、開発者(信者)の囲い込みをより強めることに成功しているかもしれない。

MacでのTensorFlowのPython3.5動作環境の作り方(virtualenv)

TensorFlow Python

TensorFlowに関して、いたるところにかじった情報が転がっているものの

たまにつまづくのでそのメモを。

 

やりたいことは、Macにてvirtualenvを用いて

Python3.5でのTensorFlowの動作環境を作ること。

必要なpython3.5や、pip3等はすでにインストール済みであること。

では早速。

 

環境構築手順

$ cd ~/

~$ virtualenv -p python3.5 tensorflow

~$ cd ~/tensorflow

tensorflow$ source ./bin/activate

(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/tensorflow-0.9.0-py3-none-any.whl

(tensorflow)$ pip3 install --upgrade $TF_BINARY_URL

 

おしまい。

source ./bin/activate でvirtualenv環境を読み込むことをまだよく忘れる今日この頃。

 

参考

https://www.tensorflow.org/versions/r0.9/get_started/os_setup.html#virtualenv-installation