Common Lispは非常に単純でありながら簡単に拡張可能な構文を持つ高水準言語です。Lispは昔からAIプログラミングに活用されてきましたが、最近では記号処理ベースのAIから機械学習ベースのAIへと世の中の関心が移っており、Pythonなどが主に用いられるようになっています。 とはいえ、Common Lispは機械学習のような科学計算にも向いています(Common Lispが機械学習に向いていると考えるこれだけの理由)。 Common Lispの科学計算に適した特徴としては、例えば以下のようなものが挙げられるでしょう。 最適化されたネイティブコードを吐き出す優秀なコンパイラがOSSにも商用にも存在する 高水準言語でありながら低レベルな世界に降りていって最適化することもできるので、開発効率と実行効率のバランスを取りやすい Cライブラリを簡単に利用できるインターフェースがある この連載では
ブルームフィルタとは,そのフィルタに要素が登録されているかを確率的に判定し,そのフィルタに要素が登録されていないことを確実に判定できるデータ構造である.ブルームフィルタは要素が登録されているかを判定することはできるが,その要素を取り出すことはできないという特徴を持っている.なので「フィルタ」である。 今回このブルームフィルタをCommon lispで実装した.実装したとはいっても以下のエントリの実装を真似ただけのものである. postd.cc Murmurhash3の実装がなかったので,ハッシュ関数にはひとまずIroncladのadler32を採用した.Ironcladを使った理由は,手頃で一般的なライブラリであること,adler32を使った理由は,そこそこ早いという話をどこかで聞いたからで,大した理由はない. github.com インストール quicklispに登録していないので,b
前回LLAによるCPUを使った行列演算の話をしたので、今回はGPUを使った行列演算の話。 そもそものやりたいこととしては、機械学習ライブラリのMGLをインストールしたいのだが、Quicklispから入るMGLはバージョンが古く、cl-cudaに依存する最新版を入れるにはいくつかのパッケージをGithubからcloneしてくる必要がある。この依存パッケージのインストールなどでつまったので、とりあえずcl-cudaとMGL-MATをインストールして行列積を計算させるところまでのメモを残しておく。 2016/12/3追記: cl-cuda及びMGL-MATがQuicklispに登録されたのでGithubからダウンロードする必要はなくなった。 LLAのインストール MGL-MATは前回紹介したLLAに依存しているので、前回記事の手順でインストールする。BLASライブラリの場所を設定する必要があるの
こんにちは。ブレインズテクノロジー樋口です。 機械学習アルゴリズムを一から実装するシリーズ2回目。今回のお題はロジスティック回帰(Logistic Regression)の実装。 前回と同様あまり難しい説明はなしに実装していくつもりですが、もっと詳しいこと教えんかい( ゚д゚ )クワッ!!となったら以下のような専門書をどうぞ。 machinelearningmastery.com ロジスティック回帰とは ロジスティック回帰(Logistic Regression)は分類問題を解決するための手法で教師あり学習に分類されます。 元々は統計の分野で発展してきたもので、応用先としては ・e-mailのスパム判定 ・病理標本の悪性判定 ・トランザクションの正常性判定 などに使われているようです。 # 名前には回帰(Regression)とついてるんですけど分類なんですね。。。 ロジスティック回帰[理
昨今の機械学習界隈では何故かPythonやRのライブラリが多いのだが、Common Lispも高速なネイティブコンパイラを持ち、C/C++のライブラリも呼べるので、機械学習にも問題なく使える。 実際にCommon Lispで実装された深層学習を可能とするライブラリにMGLがあり、GithubでMITライセンスで公開されている。そんなわけで、先月のLispmeetup #39でMGLを紹介してきた。これがそのときのスライド。 Lispmeetup #39 MGLの紹介: Common Lispによるディープラーニング from Satoshi imai MGLの作者Gábor Melis氏はKaggleの2014年の機械学習コンペHiggs Boson Machine Learning Challengeの優勝者で、今はDeepMindにいるらしい。このコンペのコードが公開されているが、MG
精度を問わず簡単に使える分類器が欲しかったので、Common Lispでナイーブベイズ分類器cl-naive-bayesを作りました。 github.com 使い方は簡単です。まずは学習。学習結果を保持するlearned-storeを用意した後は、learn-a-document関数にこのstore,ドキュメント = 単語のリスト*1,カテゴリ(スパムメール判定であれば「スパム」or「非スパム」)の3つを渡すだけです。 (defparameter *store* (nbayes:make-learned-store)) ; (カテゴリ 単語のリスト) (defparameter *documents* (list '("A" ("a1" "a2" "a3" "a4" "ab")) '("A" ("a3" "a4" "a5" "a6")) '("B" ("b1" "b2" "b3" "b4"
前回の記事ではパーセプトロンと線形SVMを実装したが、より高度な手法として、CW、AROW、SCWといったものがあるらしい。 パーセプトロン等では重みベクトルを直接更新していたのに対して、CWでは重みベクトルが正規分布に従って分布していると仮定して、その正規分布の平均や分散を更新していく。この平均と分散はそれぞれ重みベクトルと特徴量ごとの信頼度に対応し、これがCW(Confidence Weighted)の名前の由来となっている。更新にあたっては、誤分類の確率を一定値以下にするという制約を付けた上で、推定された正規分布とのカルバックライブラーダイバージェンス(分布間の距離的なもの)を最小化するような正規分布の平均と分散を求める。 今回実装するAROWやSCWはCWの派生で、CWがノイズが弱いという問題点を解決した手法である。 AROWやSCWについては解説した記事があるのでそちらを。 AR
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く