вівторок, 29 жовтня 2013 р.

Робоче середовище для NuPIC

Одна з платформ, яку я використовую у своїй роботі, це вільна платформа NuPIC, яка є альтернативою сучасному штучному інтелекту. Відправною точкою є сама платформа а також невеличкий вступний урок на Хабрі (знайшов випадково вчора). Тому з вчорашнього дня я займаюся тим, що намагаюся побудувати робоче середовище за допомогою virtualenv з використанням пайтону 2.7.

Для того, щоб запустити таке середовище, потрібні такі залежності:
  1. У Дебіан: libpng-dev libfreetype6-dev libtool automake python-dev
  2. У virtualenv:
    • argparse==1.2.1
    • matplotlib==1.3.1
    • nose==1.3.0
    • numpy==1.7.1
    • pyparsing==2.0.1
    • python-dateutil==2.1
    • six==1.4.1
    • tornado==3.1.1
    • validictory==0.9.1
    • wsgiref==0.1.2
Рядок для pip виглядає таким чином: pip install validictory numpy;pip install matplotlib
Тобто для створення середовища потрібно встановити віртуальне оточення:
$ export NTA=$HOME/nta/eng
$ export NUPIC=/path/to/repo
$ export BUILDDIR=/tmp/ntabuild
$ export MK_JOBS=3
$ cd $NUPIC
$ virtualenv --python=python2.7 venv
$ . venv/bin/activate
(venv) source $NUPIC/env.sh
(venv) ./cleanbuild.sh
Далі запускаємо С++ тести:
$NTA/bin/htmtest
$NTA/bin/testeverything
А також тести на python:
cd $NTA
./bin/run_tests.sh
У тому випадку, якщо ми отримуємо повідомлення: E ImportError: libpython2.6.so.1.0: cannot open shared object file: No such file or directory потрібно видалити вбудовану у NuPIC бібліотеку matplotlib:
rm $NTA/lib/python2.7/site-packages/matplotlib
Хвилюватися з приводу цього не варто, оскільки у нас встановлено matplotlib у $NUPIC/venv//lib/python2.7/site-packages/ .
Надалі, для роботи з NuPIC можна використовувати наступні команди:
$ source $NUPIC/venv/bin/activate
(venv) source $NUPIC/env.sh

вівторок, 22 жовтня 2013 р.

Абстракція знань та математика

Невеличкий конспект за мотивами статті "Як виростити мозок: статистика, структура та абстракції".
Оскільки я зараз займаюся задачами узагальнення і (трішки) штучного інтелекту у тій області, з якою я раніше стикався досить дотично, то чергова чернетка стосується аналізу відомих підходів до формування знань (бажано б на абстрактному рівні). Що ж ми маємо станом на сьогодні?
Наприклад: діти, у процесі пізнання сприймають невідомі терміни інтуїтивно, а потім можуть з легкістю їх розрізнити, наприклад іграшку від ложки. Яким чином вони це роблять? У пошуках висновків, автори пропонують опиратися не лише на синтаксичні конструкції чи морфологічні правила, але більше на побудову високо-масштабованих систем знань, напр. інтуїтивних фізичних, психологічних чи біологічних теорій або ж навіть системи правил для соціальної структури чи моральної оцінки дій. Навіть у такому випадку, отриманий кінцевий продукт (створення якого буде вимірюватись роками), буде суттєво відрізнятися від проведених спостережень (мабуть мова йде про абстрагування).