Stanの現状と将来(v2.0.1)
STAN RELEASE NOTESとTo Do Listから個人的に気になる項目をピックアップしました。
DIC, WAIC,multi-threading,疎行列、ragged array、user-defined functionなどがきになります。MATLAB,Julia,Stataなどのインターフェースも提供予定?だそうです。
盛りだくさん過ぎてすべて実施できるのかはわかりません。
STAN RELEASE NOTES
v2.0.1 (24 October 2013)
Bug fixのみです。
fixed multi_normal distribution's gradient calculations
他2点
v2.0.0 (16 October 2013)
Enhancements
* all new hierarchical command-line interface
* compiler flags to build with Xcode 5 (which has too-small template-depth)
* BFGS optimization
* print variable name when initialization fails
* reserved function names (breaks backward compatibility)
* deprecate direct use of lp__ in favor of increment_log_prob()
* unfolded softmax for more efficiency, optimized and vectorized categorical
* new Cholesky factor data type
* upgraded to Boost 1.54 and Eigen 3.2.0
* added flag to suppress Jacobian adjustment in log prob (for optimizers)
* added Rayleigh distribution
* added Bessel (and modified Bessel) functions of first and second kind
* added Pochhammer functions (rising/falling factorials)
* completed vectorization of univariate distributions
* trapped use of "." in variable names and print error
* moved RStan into its own subproject
* rewrote writer interface for samples
* added delete method to chainables to allow exceptions in constructors
* added sort and rank functions
* improved doc and coding for GP example models
* shuffle function signature tests for test speed
* new gradient functionality for memory allocation and cleaning and to reduce code duplication
Bug fix
To Do List
Priorities
- R compiler for regression syntax
- DIC, WAIC
- vectorization
- multi-threading
- ensemble samplers,DREAM, Ensemble walk, stretch moves,RM-HMC, SoftAbsなど多様なsampler とMetropolis法
-Modeling Language
- replace explicit use of lp__ with an increment_log_prob() function
- unsized variable declaration that can then be read in
- discrete sampling
- ragged arrays
- sparse vectors, matrices, arrays
- matrix literal-like expressions a la MATLAB
- subroutines in modeling language
- initialization block in model w. randomization
- user-specified language extensions (plug in facility to declare, compile, link)
最後の方は色々ありすぎて発散しているようです。
-Command and Interfaces
C++ API
内部の実装に関する話になっていきます。
- Higher-order autodiff(Reference)
- log_minus_exp(x,y) = log(exp(x) * (exp(x)/exp(x) - exp(y)/exp(x))) = log(exp(x)) + log(1 - exp(y)/exp(x)) = x + log(1 - exp(y - x)) = x + log1m(exp(y-x)) or, following http://snipplr.com/view/12707/
- multi_logit_log(int|vec,vec)
Modeling
user-defined functions
- get line numbers into error messages
- integer subtypes, real subtypes, matrix slice and assign