タグ

2010年9月11日のブックマーク (3件)

  • libLBFGS: L-BFGS library written in C

    libLBFGS: a library of Limited-memory Broyden-Fletcher-Goldfarb-Shanno (L-BFGS) Introduction This library is a C port of the implementation of Limited-memory Broyden-Fletcher-Goldfarb-Shanno (L-BFGS) method written by Jorge Nocedal. The original FORTRAN source code is available at: http://www.ece.northwestern.edu/~nocedal/lbfgs.html The L-BFGS method solves the unconstrainted minimization problem,

  • Não Aqui! » exp(x)の高速計算 ~理論編~

    ロジスティック回帰やCRFなどの対数線形モデルの学習でよく出てくるのが,expの計算です.これをSSE2を使って高速化するのが,今回のテーマです.まずは,背景の理論を説明します. まず,指数関数を2の指数関数に変換することを考えます(なぜ2の指数関数かはいずれ分かります). 両辺の自然対数をとり,について解くと,.IEEE754など,2を基数とした指数部を採用している浮動小数点形式では,整数に対してを容易に構築できるので,上式の実数解の代わりに整数, を用い,の大まかな値を計算することを考えます.ただし,はを超えない最大の整数を表します. さて,をで近似したときの誤差の範囲は,.誤差にを乗じたものを,と定義すると, 上式の両辺の指数をとると, ここで,はを超えない最大の整数なので,の値域は,. これらのことから,は以下のステップで計算出来ることが分かります. を計算する. を計算する. を

    tettsyun
    tettsyun 2010/09/11
  • Não Aqui! » exp(x)の高速計算 ~実験編~

    最後に,の計算がどのくらい高速化できたのか,実験してみました.アルゴリズムとして,以下のものを比較しました. libcのexp関数 パデ近似を用いたもの(cephesの実装に近いです) 5次~13次でテーラー展開を0を中心として行ったもの 5次~13次の最良多項式近似をの範囲で行ったもの 5次~13次の最良多項式近似をの範囲で行ったもの 5次~11次の最良多項式近似をの範囲で行ったものをSSE2で実装したもの SSE2の実装で11次で打ち止めしているのは,11次と13次で演算精度の差が殆どないことが分かり,単に実装するのが面倒くさかったからだけです.0を中心としたテーラー展開や,最良多項式をの範囲で構成する手法は,の値を切り下げではなく,四捨五入(つまり0.5を足してから切り下げる)で求めます(Wapitiやsse_mathfun.hのexp計算ルーチンは四捨五入を使っています). 実験で

    tettsyun
    tettsyun 2010/09/11