2017/02/16

Redmineの次期バージョン3.4の見所

@g_maedaさんのRedmine開発状況の記事を読んで、Ver3.4のリリースが楽しみになってきた。
以下、ラフなメモ書き。

【参考】
2017年1月のRedmine開発状況 | Redmine.JP Blog

2016年12月のRedmine開発状況 | Redmine.JP Blog

2016年11月のRedmine開発状況 | Redmine.JP Blog

【1】Patch #21705: 「長いテキスト」形式カスタムフィールドの「ワイド表示」オプション

Patch #21705: Option for long text custom fields to be displayed using full width - Redmine

テキストエリアのカスタムフィールドの領域を広くしてくれるオプションが付く。
たとえば、障害報告用のカスタムフィールドをたくさん作っている場合、障害原因・是正対策の内容を記載してもらう時に、現在のバージョンでは、テキストエリアの領域が狭いので、書きにくいし読みにくい。
結局、入力が億劫になる。

この改善のおかげで、障害報告チケットの見栄えも良くなり、その分、チケット更新者の動機づけも上がるだろうと思う。

【2】Feature #23265: バージョン形式カスタムフィールドのフィルタをステータスごとにグループ化

Feature #23265: Group versions by status in version custom field filter - Redmine

使い道としては、Redmineのバージョンをシステムのリリースバージョンとして扱っている場合、障害が起きたリリースバージョンとか、影響のあるリリースバージョンのような項目がステータスごとにグルーピングされる。
Redmineの運用期間が長くなるほど、バージョンも多くなってくるので、こういう細かなUI改善は、利用ユーザにとって嬉しい。

【3】Feature #23310: 「プロジェクトへ移動…」ドロップダウンの改善

Feature #23310: Improved "jump to project" drop-down - Redmine

画面右上のプロジェクトプルダウンに、インクリメンタルサーチ機能が付く。
Redmineの運用期間が長くなるほど、プロジェクト数は数百~数千に増えてしまうので、こういう細かな機能改善はありがたい。

【4】Feature #10989: 未完了の子チケットを持つ親チケットのクローズを禁止

Feature #10989: Prevent parent issue from being closed if a child issue is open - Redmine

WBSの階層構造を親子チケットで表現した時、現状のRedmineでは、子チケットが全て終了ステータスでなくても、親チケットは終了ステータスに変更できる。
しかし、本来のWBSの100%ルールでは、そうではない。

この機能改善では、設定画面で、WBSの100%ルールの可否を選べるようになるので、より厳密にWBSをチケットで表現できるようになる。

個人的には、WBSを親子チケットで表現した場合、親チケットが子チケットから独立させない、とか、未完了の子チケットを持つ親チケットのクローズを禁止すべき、というルールを完全に当てはめると、実運用ではやりにくくなる経験が多かった。
結局、適度に緩い運用の方がやりやすい。
この辺りの運用ノウハウは、各地のRedmineエバンジェリストの意見を聞きたいところ。

Redmineの親チケットの値に子チケットをロールアップさせない設定方法: プログラマの思索

チケット駆動の罠~複雑さはチケットの粒度に関連している: プログラマの思索

【5】個人的に欲しい機能は、「Feature #24681: シンタックスハイライトの対応言語を100以上に増やす」だ。

Feature #24681: Syntax highlighter: replace CodeRay with Rouge - Redmine

.NET開発者は普通にたくさんいるので、彼らから、C#もシンタックスハイライトに対応して欲しい、という要望は非常に多い。
しかし、現状のRedmineでは、シンタックスハイライトの対応言語にC#が対応していないという悲しい事実がある。
Redmineはチケット管理だけでなく、Wikiやリポジトリのソース差分表示などもよく使うので、早く実現して欲しいと思う。

【その他】
奈良さんがRedmine本家に、Redmine.orgの全チケットに対し、「+1」のコメントを集計した結果を載せてくれている。
「Redmineの改善要望チケットが埋もれているためにフィードバックされていない」事実に危機感を持っていて、集計結果を掲載することで、実際に行動に移してくれた。

Redmine.org tickets vote count list - Redmine

コントリビュータのMischa The Evilがこんなコメントを残してくれている。

「私は、この拡張リストは、コミュニティの興味を見つけるための素晴らしい情報源だと思う。
そういうわけで、これらは非常に貴重な貢献だと思います。
作成して共有していただきありがとうございます。」

このフィードバックが今後のRedmineのリリース計画に活用されたら、Redmineはもっと使いやすくなるだろうと思う。

Unofficial Redmine CookingプロジェクトでRedmineカスタマイズのノウハウを皆で集めてみよう: プログラマの思索

Redmine本家未取込チケットで人気のあるチケット情報: プログラマの思索

| | コメント (0)

2017/02/13

Redmine 2.x→3.xへVerUpした時に画面レイアウトが崩れる症状に対する対応方法

Redmine 2.x→3.xへVerUpした時に画面レイアウトが崩れる症状が発生して、困っていた。
この対応方法について、@netazone さん、@g_maedaさんに教えてもらったのでメモ。
二人に感謝。

【参考1】
Defect #24617: Browser js/css cache remains after upgrade - Redmine

neta@とんこつしかたべないさんのツイート: "バージョンアップ後のRedmine 3.3 の表示が崩れる、と思ったら再読み込みでなおる。 →つまりブラウザ側のキャッシュか。 Redmineのセッションクリアはやったと思うんだが、これはどうしようもないんかな"

MAEDA, Goさんのツイート: "@netazone パッチが出てます https://t.co/12AcycptT2"

neta@とんこつしかたべないさんのツイート: "@g_maeda @akipii 件のパッチを本番反映してみました。ブラウザ履歴からバージョンアップ前に開いたチケットをいくつか開いてみましたが、発生していません。別PCで1回だけ崩れましたが、ブラウザ開きっぱの端末だったので怪しいです。明日騒ぎにならなければ効いたといえそうです"

MAEDA, Goさんのツイート: "@netazone @akipii 崩れるときはバージョンアップ前に開いたページでなくても崩れます。HTMLのソースの中で読み込んでいるCSSやJSのファイル名の後ろに ?1486805824 みたいに数字がついてればOKです。"

neta@とんこつしかたべないさんのツイート: "@g_maeda @akipii ソース表示で確認できました。ありがとうございます。 Redmine 3.3.2で適用は以下やりました。 ・パッチ適用 ・tmp:cache:clear tmp:sessions:clear(念のため) ・Redmine再起動 https://t.co/4nbGURiyOf"

【参考2】
Redmine3.3で表示崩れする件で色々教えていただいた | UCWD-Studio - @matsuoka_UCWDjp 's Private Projects.

【状況】
Redmineを2.x→3.xにVerUpした時、ローカルPC上では全く問題なのに、サーバー上でVerUP後、画面レイアウトが崩れてしまう。
その原因がどうしても分からず、結局、リストアせざるを得なかった。
サーバー上でキャッシュクリア、クライアントでクッキーをクリアしても、再現してしまうみたい。

【原因】
@g_maedaさんに教えてもらった下記チケットによれば、VerUp時にjs/cssのキャッシュが残ってしまうのが原因みたい。

Defect #24617: Browser js/css cache remains after upgrade - Redmine

本来は、画面ソース上では、
<script src="/redmine/javascripts/application.js?1481777729"></script>
のように、JSやCSSにセッションIDらしき数字がURLに付加されるのに、なぜか、Ver3.3にVerUpすると、
<script src="/redmine/javascripts/application.js"></script>
のように表示されてしまう。

【対応方法】
Defect #24617: Browser js/css cache remains after upgrade - Redmineにあるパッチを当てればいい。

cd redmine/config/initilizers
wget http://www.redmine.org/attachments/download/17275/0001-Adds-asset_id-parameters-to-assets.patch

patch -p1 < 0001-Adds-asset_id-parameters-to-assets.patch
10-patches.rb を入力

念の為にキャッシュクリア
bundle exec rake tmp:cache:clear tmp:sessions:clear

Apache再起動

チケット画面のソースを開くと、JSやCSSにセッションIDらしき数字がURLに付加されている

Redmineaddsasset_idparameterstoasse

色々試してみると、下記のパターンになるみたいだ。

・Ver2.xの時は、JSやCSSにセッションIDらしき数字がURLに付加されている
 ⇒問題なし

・Ver2.x→3.xへパッチを当てずにVerUpすると、JSやCSSにセッションIDらしき数字は付加されない
 ⇒画面レイアウトが崩れる

・Ver2.x→3.xへパッチを当ててVerUpすると、JSやCSSにセッションIDらしき数字は付加される
 ⇒問題なし

【疑問】
なぜ、こういう症状が発生したのか?
上記チケットの下記リンクを見ると、Ver4.2.7で廃止されたrails_asset_idメソッドから作ったパッチを当てると、解決できるらしい。

rails_asset_id (ActionView::Helpers::AssetTagHelper) - APIdock

さらに@marutosijpさんのコメントを読むと、Redmineのconfig/application.rbのasset pipeline がdisabledになっているのが原因みたいらしい。

Patch #13927: Reduce coupling between plugins and the "plugins/" directory - Redmine

config/application.rbの下記の箇所になる。

# Enable the asset pipeline
config.assets.enabled = false

/trunk/config/application.rb - Redmine

Railsの仕様を完全に理解していないので、調べてみる。

【追記1】
下記の意見もあるので、この症状に再現性があるかどうか分からない。

松岡 孝さんのツイート: "@akipii @g_maeda 今のところ問題を感じる挙動には遭遇してません。なお、3.x系は 2.6.xから3.1.1→3.1.3→3.2.1→3.2.3→3.3.2を経由してまして、その間も特に不具合に遭遇してないつもりです(除: 今回のUI部分)"

下記のBlogで原因と対処を詳細に記載してくれてます。

Redmine3.3で表示崩れする件で色々教えていただいた | UCWD-Studio - @matsuoka_UCWDjp 's Private Projects.

(引用開始)
これは Redmine 3.0.0 から Rails のバージョンが 4.2 へ移行した際に、CSS や JavaScript などの静的ファイルに付与されていた GET パラメータが付与されなくなったため、前バージョンの静的ファイルをブラウザ側がキャッシュとして持っていること(=そちらが表示に利用されている)が原因のようです。
(引用終了)

つまり、Ver2.x→3.xではcssなどで大きなUI変更があったために、前バージョンのキャッシュが残ったために画面レイアウトが崩れた。
一方、Ver3.3.1→3.3.2では、大きなUI変更がなかったために、前バージョンのキャッシュが残っていたとしても、画面レイアウトが崩れることはなかった、と推測される。

【追記2】
クライアント側では、ブラウザのスーパーリロードで対応できるらしい。

ブラウザの super reload でゆけそうな気がする。職場の Redmine も 2.x から 3.x 系に移行して更に 3.x で数回更新しているが毎回 super reload するよう案内してる。 - akabekobeko のコメント / はてなブックマーク

君は3つのリロードを知っているか? - os0x.blog
(引用開始)
ブラウザによっては、スーパーリロードという機能を備えています。IEの場合Ctrl+F5(Ctrl+更新ボタン)、Firefoxの場合Ctrl+F5(Shift+更新ボタン)、Chromeの場合Shift+更新ボタン(Ctrl+Shift+R)などでスーパーリロードを呼び出すことができます。
(中略)
リロードは大元のHTMLを受け取ったら、そのページ内のリソースについてレスポンスヘッダを確認しに行っています。その結果304 Not Modifiedが帰ってきて、実際にはキャッシュを使っています。
対してスーパーリロードはキャッシュに関係なく、すべてのリソースを取得しなおしています。
(引用終了)

【追記3】
まとめ記事がある。

QA #301: Redmine 2.x→3.xへVerUpした時に画面レイアウトが崩れる場合がある - Unofficial Redmine Cooking - redmine.tokyo

| | コメント (0)

2017/02/05

第53回IT勉強宴会「深層学習の概要とドメインモデル」の感想

第53回IT勉強宴会で、能見さんの「深層学習の概要とドメインモデル」を聞いてきた。
すごくワクワクして、面白かった。
自分は初心者なので、理解できたことをラフなメモ書き。
間違っていたら後で直す。

【参考】
深層学習の概要とドメインモデル<第53回IT勉強宴会> : ATND

深層学習の概要とドメインモデル<第53回IT勉強宴会> | IT勉強宴会blog

【1】昔流行したニューラルネットワーク理論と深層学習の深い関係

僕の一世代上の人たちから見ると、ニューラルネットワークがすごく流行して冬の時代になったのを知っているので、理論は既に知っているが、本当に使い物になるのか、という思いがあるみたい。

単純パーセプトロンで、0または1に分類するのは、回帰直線による相関分析。
でも、そのままでは当然解けない問題もある。

多層パーセプトロンにすれば、非線形な問題は活性化関数を用いて線形分離できるように変換すればいい。
シグモイド関数が有名だし、それ以外にも色々ある。

多層パーセプトロンのボトルネックは、学習コストを最小化する関数を求める時、真の極小解ではない極小解に落ち込んでしまって、そこから脱出できなくなる点。
誤差逆伝播法で、勾配を少しずつ計算して、誤差をフィードバックして、鞍点にはまらないように学習していく。

でも、過学習の問題も出てくる。
この辺りは、人間が、スポーツや勉強をあるパターンだけで進んでいくと頭打ちになり、いくら努力してもそれ以上伸びない、という症状によく似ている。
他にも、教師あり学習とか、強化学習は子供の躾、ペットの躾に似ているとか、すごくアナロジーしやすい。

そういう時代を過ぎて、2012年に深層学習が画像認識の精度を大きく上げるブレイクスルーが起きて、深層学習が流行し始めた。

講演で最も興味深かった点の一つは、「なぜ、学習の構造はDeep(深層)なのか」。
「なぜディープラーニングが、これほど世の中の多くの問題にうまく適用(特に認識)できるのか?」
「Linの仮説」というものが説明しようとしているが、その理由は、まだ理論として結果は出せていないらしい。

深層学習は 世界をどのように変えられるのか - IBISML

能見さんの「直観的な理解:対象の階層的な構造をうまく取り込めるから」という話を聞くと、人が物事や現象を理解しようとする時、ツリー構造で概念を分解して理解しようとする方法と上手くマッチしているから、と理解している。
たぶん、深層学習の仕組みは、人間の脳の仕組み、人間が物事を考える仕組みの本質に触れているからこそ、プログラムで実装してその威力を発揮できているのだろうと推測する。

【2】深層学習はどこまで知性に近づいているのか

深層学習はニューラルネットワークをプログラムで実現しているので、まさに人の脳の神経回路のシミューレションに近い。
では、深層学習はどこまで人間の知性に近づいているのか?

話を聞く限り、2017年始め時点では、画像認識などの分野で人よりも認識の精度は高いが、全ての分野で置き換えられているわけではない。
まだ知性まで追いついていない。

渡部幸三さんが質問したように、深層学習が画像認識の処理をした後で、「美しさとは何か」という問いに対して、その特徴量、その評価基準が知りたい。
しかし、現時点の深層学習のフレームワークでは、中間パーセプトロンの中身はいちおうトレースできるが、「美しさ」の特徴が何であるか、明示しているわけではない。
深層学習の処理結果として、入力した画像を犬か、猫か、ゴッホの作品なのか、とフィルタリングしているだけ。

深層学習による画像処理において、ある風景写真をゴッホ風にアレンジする、というシミュレーションした絵があって面白かった。
ちょうど、昔のセピア風、プリクラ風の写真の加工に似ている。
では、ゴッホの絵の美しさの特徴は何なのか、と抽象的な概念で言い表して欲しいが、それは明確ではない。

なぜ、美しさの特徴を知りたいのか?
やはり、人間なので、その結果に至る道筋、ロジック、原因が知りたい。
もしそれが完全に判明したとしたら、プラトンのイデア論を立証できることになる気がする。
つまり、美しさの本質はこれこれです、と明確に言えるならば、全ての人の心にはそれが宿っているので、お互いに理解し合えるのだ、というロジックで言いたい。
最終的には哲学の性善説に行き着く気がするが、現時点の深層学習はそこまで人間の心理の本質まで迫っているわけではない。

現在、深層学習をベースとした人工知能の研究は、アメリカと中国で相当激しく進んでいるらしい。
また、東京での人工知能や機械学習の勉強会は、すぐに定員いっぱいになるぐらい人気があるらしい。
今はブームが始まったばかりで、深層学習のどのフレームワークが生き延びて集約されるのか、分からない状態なので、面白いみたい。

| | コメント (0)

2017/02/03

「推計学のすすめ」「経済数学の直観的方法~確率統計編」の感想

推計学のすすめ』と『経済数学の直観的方法』の確率統計編がとても素晴らしくて、すごくはまった。
以下、ロジカルでないラフなメモ書き。
間違っていたら後で直す。

【参考】佐藤信、1968、『推計学のすすめ』 - しょうもないことかきました

直観でわかる統計学 - 講義のページにようこそ

『経済数学の直観的方法 確率・統計編』(その1) 長沼伸一郎著 - ケスケラの読書と旅の日記

『経済数学の直観的方法 確率・統計編』(その2) 長沼伸一郎著 - ケスケラの読書と旅の日記

Amazon.co.jp: 経済数学の直観的方法 確率・統計編 (ブルーバックス)の Nogisuさんのレビュー

【1】統計的仮説検定は正直わかりにくい。
なぜ、わざわざ、主張したい仮説を否定した仮説を立てた後、統計処理を行って否定した仮説を棄却して、主張したい仮説が正しい、というロジックを使うのか。

その理由は、統計的仮説検定は「確率的背理法」の考え方に基づいているから。
つまり、仮で立てた仮説が5%未満でしか確率的に起こり得ない、ということは、ほとんど起こらないだろうから、仮で立てた仮説は成立せず、元々の仮説が正しい、というロジックの流れ。
すなわち、完全な背理法ではなく、95%の確率の正しさで背理法を使った考え方、と思った方がいい。

推計学のすすめ』には、この考え方による統計的仮説検定の事例をたくさんあげて、いろんな統計分布を使った話が載せられていて、とても分かりやすい。

正規分布、t分布、F分布、χ^2分布などをどんな場面で使って、どんな意図で用いるのか、という事例が分かりやすい。
上記Blogの感想に全く同意だが、1960年代に書かれた本なので、その事例に出てくる現象が時代的に古いように感じるのもすごく良い。

(引用開始)
この本はすごい。
1968年に出てるというのがもっとすごい。
筆者の佐藤さん、国税庁醸造試験所に長年勤めていたというのも、ギネスで働きながらスチューデントの筆名で論文出してたゴセットと似ていてかっこよい。
(中略)
推測統計の発想の根本を、懇切丁寧な解説と、豊富な例示とで示してくれるとてもありがたい本。
(中略)
t検定とかF検定とかχ2検定とか、Z標準化とか、なんとなく知ったかぶりでスルーしたけど、結局何なの?どれをいつ使うの?おいしいの?などの疑問がこの本でたいてい氷解する。
推測統計やるなら絶対にまずはじめの一冊。そのあと小難しい本に入っても、混乱したらこの本に戻るといいと思う。とにかく手元に1冊あるとよい。
さすがに60年代の本だけあって、例や言葉遣いが古いがそれがなおさらよい。
(引用終了)

【2】一般に、確率統計はすごく分かりにくい。
サイコロやコインの確率が、なぜそんなに奥深いのか?

【2-1】統計学を生み出したガウスの本来の思想は、確率論ではなく、誤差論だった。
「バラつき=トレンド+ボラリティ」という考え方があり、ボラリティは正規分布の形になる。

では、どうして現実の物事は正規分布に従うのか?
経済数学の直観的方法~確率統計編」によれば、正規分布のイメージはパチンコと同じ。
つまり、パチンコに無数の球を落とすと、パチンコ台の下に積もった球は正規分布の形をなすイメージ。
これがボラティリティに相当する。

しかし、この正規分布の曲線が「exp^(x^(-2))」であるために、その微分・積分が高校数学では扱えないので、多くの人がトラウマになっている、ということらしい。
つまり、パチンコ台に有限個の球を落とすと2項分布になるが、その極限が正規分布の曲線になるという計算は、高校生では解けない。
すなわち、確率分布の計算が複雑怪奇になっていて、とても分かりにくいのは、そこに理由があるのかもしれない。

【2-2】しかし、すべての物事が正規分布に従うという理論はやはり腑に落ちにくい。
たとえば、人の学力は正規分布に落ち着く、というのは本当に正しいのか?
真面目にコツコツ勉強しても間違って暗記した人、要領よく勉強して高得点な人、そんないろんな選択を正規分布は飲み込んでいるのか?

経済数学の直観的方法~確率統計編」によれば、その答えは、中心極限定理が解決してくれる。
実際は、色んなパターンの確率分布の曲線が発生するが、それら様々な確率分布を全て合成して極限に持っていくと、中心極限定理によって、その結果が正規分布になる、と。
つまり、中心極限定理は、二項分布の極限が正規分布になる、というだけでなく、様々な確率分布が合成されて極限に持っていくと正規分布になる、と主張している。(言いすぎかも)

中心極限定理のメリットは、心理学・経済学・社会学のような分野に適用して、それら予測に使えるからだ。
たとえば、株式市場では、政治状況や人々の心理状況などのパラメータに起因するたくさんの確率分布があるが、全て合成して極限に持っていくと、正規分布に落ち着くので、逆に扱いやすくなる。
つまり、株式市場のパラメータがたくさんあったとしても、逆に全ての確率分布を合成するほど、正規分布に近づくので、正規分布の特徴さえ分かれば、株価を予測できるようになる。

【2-3】株式市場への貢献としては、オプション価格の計算に使われたブラック・ショールズ理論がある。
このブラック・ショールズ方程式はとても難しく、経済学部の学生もつまずくものらしい。

ブラック・ショールズ方程式の背後には、ウィーナー過程という考え方がある。
株価のバラつきは理論物理のブラウン運動に似ている。
ブラウン運動では、時間が経つとボラティリティが増大する。
そのボラティリティは時間の平方根に比例する、つまり、「ボラティリティは√tに比例して拡大する」という法則があり、これがウィーナー過程と呼ばれる。

ウィーナー過程は正直分かりにくいが、ブラウン運動でボラティリティが増大する原因は、時間というよりもジグザグ回数が増えることと同じ。
この発想を株式市場に生かすと、株価のボラティリティ(バラつき)は株取引回数が時間と共に増えることであり、それが時間の平方根に比例する。

つまり、ボラティリティが大きいほど、株価は高くなる確率になるので、その時に売れば儲かる。
金利差や価格差を利用して売買して利鞘を稼ぐ裁定取引、いわゆるサヤ取りがこれに相当する。
また、株や国債は長期で保持した方が儲かる、という理由も、ここにあるのかもしれない。

【3】上記のAmazon感想にこんな感想があって、すごく同意した。

(引用開始)
私はいわゆる理系出身で、工業用のセンサ開発に関わっている。
私の働く業界では、本書でいう「ボラティリティ」を最小に抑え込み、「トレンド」を除去することで、品質を一定に管理することに腐心している。
このため、ボラティリティから何等かの「益」を得るという発想を持っていない。
この発想そのものが目から鱗の驚きであった。
(引用終了)

【3-1】製造業の品質管理では、完成品のバラつきを一定の範囲内に閉じ込めるように、厳しくチェックして出荷する。
つまり、たとえば、あるボトルネック工程で部品の歩溜まりが低い、と言った問題点は改善策を用いて解決して、「トレンド」となるバラつきを取り除く。
また、たとえば、全数検査でなく一部しか検査できないために観測できない誤差といった、「ボラリティリティ」のバラつきは最小限に押さえ込む。
たぶん、管理図の手法を使っているのだろう。
それによって、一般消費者は、品質が安定した大量製品を安価に買うことができる。

【3-2】一方、株売買、原油の先物取引のような金融取引では、ハイリスク・ハイリターンなので、ボラティリティが大きいほど、儲けが大きくなる。
なぜなら、ファイナンスの世界では、リターン=期待値、リスク=バラつき(偏差)という関係があるからだ。
つまり、ハイリスクで成功すればハイリターンが得られる。

昨今なら、トランプ現象のおかげで、株売買で儲けた人もいるのではないか。
つまり、「ボラティリティから利益を得る」という発想があるのだ。

ブラック・ショールズ方程式では、金融商品のボラティリティを数学的に求めて、金融商品のオプション価格としてあらかじめ算出することに成功した。
そのおかげで、金融取引市場が成立したわけだ。
その背景には、ウィーナー過程の考え方、つまり、「ボラティリティが√tに比例して拡大する」という考え方がある。

【3-3】この辺りの話はイマイチ分かりにくいが、以前、簿記1級を受講していた時、先生からこんな話を聞いたことがある。
本来の株式市場では、100株1000万円のような株を買いたい場合は、普通は手持ちのお金がなければ買えない。
しかし、ノーベル経済学賞を取った偉い学者(ブラックさん?)のおかげで、株式市場に、ある一定の入場料を支払えば、「株を将来買う権利」「株を将来売る権利」という形で、株の売買に入場できるようになった、と。
つまり、株式市場で金融取引を行うための入場料が、ブラック・ショールズ方程式で求められるオプション価格なわけだ。

そのおかげで、株式市場にもっと大量の人が簡単に入場できるようになり、株の売買がより一層活発になる、というメリットが生まれる。
日本政府がNISAなどを導入して、株式市場を活発化させたい、という意図はそんな所にも関連しているのだろうと思う。
株価が上がれば、NISAなどに投資した人にもお金が行き渡り、日本人の収入向上に役立つから、という流れなのだろう。

最終的には、企業はランダムな世界でも物事の連動性に注目して適切に意思決定することにより、ボラリティリティから利益を得ることが可能という事実から、企業は恒常的に利益を上げ続けることができる、という流れ。
この発想の類推から、マクロ経済学における経済成長理論につながるのだろう。

【4】こういう確率統計の理論の本を色々漁ってみると、チケット駆動開発の時と同じような匂いを感じる時がある。

【4-1】たとえば、従来の統計学では、計算力不足のために、大量データがあっても簡単に計算することができなかった。
昔は、数学的理論で確からしさは保証されているのに、コンピューティングパワーが不足していたから、その理論を使った実地検証がしづらかったわけだ。

しかし、今は、強力なコンピューティングパワーが安価で誰でも手に入るようになったので、統計学の理論をバックにプログラミングを縦横無尽に使って、文系理系を問わず、従来の自然・工学分野だけでなく、心理・社会・経済のような分野に適用して、色んな知見が得られるようになってきた。
たとえば、「ワーク・ルールズ」の本のように、Googleが自社の人事施策に統計理論を使っているように。

つまり、自然科学や工学で使われている従来の理論に対し、その適用分野を心理・社会・経済へ変えることで、別の新たな知見を見出だせる。
たとえば、理論の使い道をちょっと変えるだけで「ボラティリティを押さえ込む」のではなく「ボラティリティから利益を引き出す」という発想が生まれるわけだ。

【4-2】最近の人工知能も、その流れに似ている。
深層学習の背景にあるパーセプトロン、ニューロン、確率降下法という考え方は既に1960年代頃から理論として構築されていた。
だが、当時はコンピューティングパワーが不足していて、そもそも意味ある計算を実現できなかった。
しかし、今は違う。

その気になれば、PythonやR、AIのOSSのフレームワークを使えば、プログラムでいくらでも計算して、応用できる。
つまり、昔の数学や物理の理論を知らなくても、プログラミングできるならば、実際にプログラムで計算実行させて、意味ある応用結果を導ける。
その計算の後に、そのプログラムの背後にある諸理論を勉強しなおせば、実際の具体例をたくさん知っているのだから、理解しやすくなるだろう。
抽象的な理論ばかり勉強しても、その理論を武器に実際に使えなければ無意味だから。

今の時代は、数学や物理の理論からトップダウン的に勉強するのではなく、まずはプログラムを書いて動かして、たくさんの具体例を経験した後で理論を勉強し直す、と言うボトムアップ的な勉強方法の方が向いている気がする。
そんな流れがあるから、日本の小学生もプログラミングに慣れましょう、という方向に傾いているのかもしれない。

| | コメント (0)

2017/02/02

経済数学の直観的方法の感想

『経済数学の直観的方法』のマクロ経済学編確率統計編がとても素晴らしくて、すごくはまった。
下記の感想記事もとてもすばらしい。
以下、ロジカルでないラフなメモ書き。
あやふやな理解で間違っているかもしれないが、その場合は後で直す。

【参考】
『経済数学の直観的方法』 長沼伸一郎著 - ケスケラの読書と旅の日記

『経済数学の直観的方法 確率・統計編』(その1) 長沼伸一郎著 - ケスケラの読書と旅の日記

『経済数学の直観的方法 確率・統計編』(その2) 長沼伸一郎著 - ケスケラの読書と旅の日記

【1】『経済数学の直観的方法』を読むと、現代経済学が、現代数学や現代物理学並みに難解になっている事実が良く分かる。
ミクロ経済学では、消費者の消費行動、企業の購買活動を最小化する・最大化するという文言が多いけれど、それを精緻に理論化するには、解析力学が必要なわけだ。

物理学では、解析力学で使う変数XとXドットは、位置と速度、速度と加速度のように事前に決まる場合が多い。
一方、経済学では、解析力学の前提となる変数がうまく当てはまる場合は少ない。

昔に見つけられたモデルは、消費と消費の変化率から最適成長経路を導出するラムゼイ・モデル。
それ以外の経済モデルはなかなか見当たらなかった。

しかし、著者によれば、ルーカスの合理的期待形成仮説によって、経済事象とその事象を変化させる要素の二つのペアを解析力学の変数とみなすことで、動学的均衡理論が生まれた、というストーリー。
そして、リアルオプションという経済理論が作られて、ノーベル経済学賞を取った。

たとえば、マクロ経済学では、失業率とインフレ率は負の相関であるというフィリップス曲線の理論が出てくるけれど、その理論がそもそも成り立たない場合が現状でよく見られる。

その理由は、インフレを皆がすでに織り込み済みで行動するから、期待通りの経済政策の効果が出ない、というストーリーみたい。
そこで、インフレ率とインフレ変化率の二つを解析力学の変数とみなすことで、経済政策の効果を最大化するようにシミュレーションできるというストーリーなのだろう。

だから、最近の日銀は、国民が織り込み済みの行動を取らないように、故意にサプライズと称した経済政策を次々に打ち出すわけだ。
よって、中央銀行のインフレターゲット政策では、動学的均衡理論が必須のスキルであるということなのだろう。

【1-1】ここで、動学的均衡理論が現代経済学の寵児となった理由は、この理論によって、論文が大量生産されるようになったからだ、と著者は言う。

つまり、ルーカスの合理的期待形成仮説によれば、経済法則は経済事象のパラメータだけでなく、その事象を変化させる要素も考慮しなければならない。
そこで、経済事象のパラメータとそのパラメータを変化させる要素(つまりパラメータの微分)の二つのペアを解析力学の変数とみなすことで、数多くの経済現象の理論をモデル化できるわけだ。
その最たる例が、インフレ期待理論であり、中央銀行がデフレ対策としてその理論を駆使しているわけだ。

但し、著者は、このような優れた理論の価値は認めているが、これによって論文が大量生産される事象については皮肉っぽく言っているように聞こえる。
理論を生み出した超一流の天才と、その理論を拝借して論文を大量生産する一般の学者の違いはそこなんだよ、と。

【2】そんな流れを読むと、文系だから経済学部に行く、という考えは浅はかであり、理論物理学のスキルをマスターしておかないと、そういう最新の経済学に追いつけなくなっているわけだ。
経済学の知識は公務員になるなら必須知識みたいだが、最新の経済学を研究するには、さらに理論物理学のスキルまで必要となると、正直大変なのだろう、と推測する。

物理学のラグランジュアンやハミルトニアンもイメージしにくいが、その概念を経済学で置き換えた場合、どのように考えることができるか?

物理では、ラグランジュアンは最小作用の原理を実現するための概念、ハミルトニアンはエネルギーやポテンシャルみたいな保存則を満たすような概念イメージ。
経済学では、ラグランジュアンは経済政策の成果の最大化やコストの最小化に用いる概念、ハミルトニアンは総資産かGDPみたいなイメージかな。

そう思うと、現代経済学は、既に知られている数学や物理学の理論を片っ端から適用しまくって、その中から上手くいった結果だけを見せているだけなので、そんな背景を知らない理系・文系の人にとっては、本当にチンプンカンプンなのだろうと思う。

以上は自分のもやもやしたアイデアを書いただけなので、もう少し精緻化していく。

| | コメント (0)

最尤推定法とベイズ推定法の違いの記事のリンク

「従来の推定法とベイズ推定法の違い」の記事がとても分かりやすいのでリンクしておく。
以下はラフなメモ書き。

【参考】
従来の推定法とベイズ推定法の違い | Sunny side up!

心理学者のためのベイズ統計入門

ベイズ統計が最近流行っているらしい。
高校時代に、条件付き確率の計算として習ったが、それ以上の知識もなく、今までイマイチどこがすごいのかわかりにくかった。
また、従来の統計的推定では、故意に、主張したい仮説の逆の主張を前提にして、それを統計的処理で棄却する、というやり方を取るが、慣れないとこのロジックそのものが分かりにくい。
「統計的推定は、確率的背理法である」という言葉をどこかで拾って、ああなるほど、とようやく理解した覚えがある。

上記の記事は直観的で分かりやすい。

従来の最尤推定法では、真値が一つであると仮定して、サンプルを増やしたり回数を増やせば、その誤差は小さくなり平均値である真値に近づくはずだ、という考え方。
一方、ベイズ推定では、真値を確率分布としてとらえて、サンプルを増やしたり回数を増やすごとに、真値の分布を最新化していく、という考え方。

(引用開始)
信頼区間(confidence interval)と信用区間(credible interval)の違いは、ベイズ主義と頻度主義の考え方の違いを顕著に示しているといえます。

頻度主義では真値は一つと考えるので、「信頼区間の中に95%の確率で真値がある」という言い方は間違いになります。確率的に変動するのはデータのほうなので、「何度も同じサンプルサイズのデータを取ると、真値が95%の確率で信頼区間内に入る」という意味になります。

一方、信用区間はベイズ主義に基づくもので、仮に真の値を考えると「95%の確率でその範囲に真値がある」という解釈になります。
(引用終了)

ベイズ統計が使いやすい分野はたとえば、計量経済学があるだろうと思う。
何らかの経済政策の効果を測定する時に、最小のコストで最大のメリットを得るには、どんな方法でどれだけ予算を投入すべきか、という発想に使いたいから。
つまり、ある前提条件を仮で置いて、その投資対効果を求める時に使うのだろうと推測する。

たとえば、子供向け政策、高齢者向け政策、公共事業の政策の投資対効果の測定・評価など。
今流行りのベーシックインカム、少子高齢化の政策も同様だろう。
東京五輪のように、昨今は経済政策では投資対効果やコスト削減がうるさいので、こういう手法が必要とされるのかな、と思ったりする。

上記の記事では、従来の心理学の実験には統計的推定が使われていたが、ベイズ推定を使うのも可能性があるよ、と話されている。
確かに、ある前提条件を仮で置いて、ベイズ推定でどんどん仮説の精度を高めていく方法は、経済学でなくても心理学でも有効だろうと思う。

この辺りの考え方も整理していく。

| | コメント (0)

2017/01/22

Elastic Search+Logstash+Kibana+TimelionでRedmineのBIを実現する記事のリンク

フューチャアーキテクトさんの記事で、Elastic Search+Logstash+Kibana+TimelionでRedmineのデータマイニングニングを行う記事があったのでメモ。
全てOSSのツールで、RedmineのBIを実現できるのは素晴らしい。

【参考】
マネージャーがうれしいRedmineデータのグラフ表示方法を公開します!! | Tech Blog - Future Architect

マネージャーがうれしいRedmineデータのEVM表示方法を公開します!! | Tech Blog - Future Architect

QLIKVIEWでの分析方法 - Google グループ

RedmineのチケットデータをRedmine外部のBIツールで表現するアイデア: プログラマの思索

仕組みとしては、下記の流れになる。
JDBCドライバを通じて、RedmineのDBにSQLを直接発行して、データを取得し、グラフィカルに表示するらしい。

(引用開始)
大まかな流れ

下記の手順でグラフを表示します。

1.ELKのインストール
2.RedmineデータをELKに取り込む
3.グラフ表示

1.ELKのインストール

はじめに、ELKの説明です。
ELKはelastic社が提供する、データ可視化OSSの総称。
Elastic Search+Logstash+Kibanaそれぞれの頭文字をとって、ELKと呼びます。
今回、ELKを利用して、Redmineデータの可視化環境を構築します。
(引用終了)

LinuxだけでなくWindows上でも簡単に実現できるのはありがたい。
また、集計した結果を保存でき、集計グラフをブラウザ上で閲覧できるのも良い。

毎日、集計バッチを動かすようにしておけば、上司や開発者も好きな時に見れるし、チームの開発状況を自然に見える化できるようになる。
また、チケット集計の内容だけでなく、ソースの品質情報なども公開すれば、開発者の品質意識の向上にも役立つ。

RedmineのチケットデータをRedmine外部のBIツールで表現するアイデア: プログラマの思索にも書いたが、Redmineのデフォルトのチケット集計機能が弱くても、今は、OSSで簡単にRedmineのBI機能を実現できる。
つまり、自分達が欲しい観点の集計ビューを、OSSのBIツールを駆使して作っていけばいい。

むしろ、自分達で、Redmineに不足した機能を実現していく、というプロセスの方が重要だ。
なぜなら、Redmineを通じて、自分達のソフトウェア開発プロセスをより良くしていくモチベーションの向上に役立つからだ。
上からのお仕着せのプロセス改善ではなく、メンバーが自主的に行うボトムアップ型のプロセス改善の方がはるかに意義があると思う。

Redmineの運用や集計ビューを通じて、自分達の開発プロセスのボトルネックは何なのか、どうすればより良いソフトウェア開発ができるのか、という行動を促していくわけだ。
Redmineが面白い部分はそんな所にあると思う。

| | コメント (0)

«Redmine本家未取込チケットで人気のあるチケット情報