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

不確定特異点

広く深く、ところどころ超深く

LTK でウィンドウを手前に表示する

LTK とは Tk ツールキットを Common Lisp から使えるようにしたものです。Tcl/Tk をベースにしているため、幅広い OS に対応していることや手軽に UI を作成できることが魅力です。Common Lisp でちょっとした GUI を作りたいときにも便利そうですね。 LTK …

学習とニューラルネットワーク (5)

ボルツマンマシン 今回はボルツマンマシンのシミュレーションを実装してみました。 Simple Boltzmann Machine Simulation エネルギー関数として を仮定すると、エネルギーの極小点は の 1 点になります。これを実際にシミュレーションにより再現できるかを見…

Python (NumPy) と Common Lisp (LLA) で行列積の実行速度を比較する

近年、機械学習や Deep Learning などのデータサイエンス分野を筆頭に数値計算の需要が高まってますが、その中でよく使われているのが Python の NumPy というライブラリです。NumPy を使うことで、動的で柔軟なスクリプト言語上で比較的高速に数値計算が可…

学習とニューラルネットワーク (4)

誤差逆伝播法 前回、入力層と出力層からなる、単一ニューロンによる関数近似を実装してみました。特定の関数はうまく近似できましたが、XOR のような関数は学習が収束せず、近似することができませんでした。 今回は中間層を加えてフィードフォワード型の 3 …

簡易的にコメントアウトする

コードの一部をコメントアウトしてプログラムの挙動を確認したい場合があります。コメントアウトするたびに真面目にコード編集していると面倒くさいので、C 言語だと #if 0 〜 #endif でコメントアウトするステートメントを囲い、#if 0 にしたり #if 1 にす…

2つのシーケンスをインターリーブする

例えば、以下のように 2 つのリストの要素を互い違いに組み替えたリストを作りたいとします。 (setf s1 '(1 2 3)) (setf s2 '(a b c)) (interleave s1 s2) ;=> (1 a 2 b 3 c) Common Lisp で書くとしたらどう書くのがシンプルなんだろう?専用の関数を定義せ…

軽量 RTOS の開発 (9)

RTOS に乗せる静的オブジェクト用のコンフィギュレータを作ってみました。JSON をパースして C 言語の構造体リテラルに変換するだけの Common Lisp スクリプトです。 tanakahx/urosgithub.com Roswell スクリプト Common Lisp でスクリプトを書くと、他人に…

cl-lex と CL-Yacc で作る JSON パーサ

Common Lisp の lex/yacc ライブラリを探していたところ、cl-lex と CL-Yacc というそのものズバリのライブラリがありました。 cl-lex CL-Yacc 使い方を理解するために JSON パーサを書いてみました。JSON 文字列を読み込んで S 式に変換するだけです。jsown…

Common Lisp の dpANS を読みやすくする

dpANS のドキュメントを読みやすくするために、A タグでリンクが張られているセクションの本文をすべて埋め込んで、ひとつの HTML にまとめあげるツールを作りました。実行には、あらかじめ SBCL と Quicklisp がインストールされていることが必要になります…

dpANS - the draft proposed ANSI Common Lisp standard

id:g000001 さんに HyperSpec の元になっている dpANS というものの存在を教えて頂きました。(ありがとうございます!) 早速内容を確認してみましたので紹介させて頂きます。 dpans2texi このサイトでは、ドラフト版の ANSI Common Lisp 標準のドキュメン…

Common Lisp の HyperSpec が読みづらい件について

Common Lisp の HyperSpec って何であんなに読みづらいんだろう、と感じるのは僕だけなのでしょうか。調べるキーワードがあらかじめわかっているなら良いのですが、そもそもキーワードがわからないときには、頭からざっと目を通したいものです。それができな…

Common Lisp でバイナリファイルの EOF 判定

ちょっと Common Lisp でバイナリファイルの入力で困ってます。ファイルをオープンしてストリームから read-byte で 1 バイトずつ入力しているときは、EOF にあたるとエラーを返すため、特に問題ないのですが、例えば 4 バイト単位で読んだときに、もしファ…

学習とニューラルネットワーク (3)

ニューロンを使った関数近似 前回使った勾配法をニューロンの学習に応用してみます。例として、2入力1出力の関数 f(x1, x2) を考え、これを単一のニューロンで近似することを考えます。f の入出力関係は以下のように6サンプル定義します。 入力値 : (0 1) (1…

学習とニューラルネットワーク (2)

勾配法 勾配法とは最適解をある関数の極値という形で求める手法です。関数 f(x) というのがあって、これの極小値を探索する場合、ある初期値 x0 から始めて、 のように x を次々と更新していきます。これ以上、x が変動しなくなったら、その時の x の値が求…

学習とニューラルネットワーク (1)

時代は知的情報処理です。というわけで、巷で噂の機械学習や深層学習の勉強を進めてます。そもそも機械学習や深層学習で何ができるのか?その限界は何か?このブームは一過性のものなのか?というあたりを見極められればよいと思ってます。(未だに深層学習…

8クイーン問題を解いてみる

久しぶりに8クイーン問題を解きたくなったのでプログラムを書いてみました。そういえば、Common Lisp で書いたのは今回が初めてかも。 8 Queens Problem 単純にバックトラックしているだけで、ゲーム盤の対称性は考慮してません。 動作結果 N = 8 で 92 個の…

Common Lisp 処理系と開発環境のインストール (2)

前回に続いて Quicklisp をインストールします。Quicklisp とは Common Lisp で広く使われているライブラリ管理ソフトウェアです。ライブラリのダウンロードからインストールまで自動的に行い、ライブラリ間の依存関係も自動的に解決してくれる便利な仕組み…

Common Lisp 処理系と開発環境のインストール (1)

最近、新しい環境に Common Lisp の処理系をインストールすることがあったので、そのときに調べた内容をまとめておきます。まずは SBCL という Common Lisp の処理系をインストールします。(他にも Clozure CL とかでもいいと思います。) MacOS の場合 $ b…

Common Lisp って何がすごいのか?

Common Lisp はマルチパラダイム言語であるとか、高速であるとか、REPL を使ったインタラクティブな開発が可能であるとか、悟りが開けるとかw、いろいろな特徴がありますが、その中でもプログラム可能なプログラミング言語という特徴が他の言語と比較して際…