ailev.ru

29 марта 2016 · Комментарий

Без заголовка

Чтобы обсуждать какую-то архитектуру, нужно зафиксировать уровень представления. В информатике это крайне сложно: всегда есть какая-то многослойность (уровни микропрограмм-машинных языков--виртуальных машин-высокоуровневых языков-написанных на них DSL, или уровни онтологий в моделировании данных, где даже онтологический язык сам оказывается написанным исходя из каких-то онтологических предпосылок, и на любую upper ontology вдруг находится foundational ontology). Поэтому даже в базах данных кроме моделей данных самих баз данных можно легко находить их foundational модели (таблицы, например), да и для значений в этих таблицах тоже выделять какие-то представления. Нужно понимать, каждый раз какой уровень этой этажерки обсуждается. Коннекционистские (например, нейронные) многоуровневые представления интересны тем, что они позволяют аппроксимировать самые разные функции с незапредельной вычислительной сложностью. См., например, http://arxiv.org/abs/1602.04485. Базы данных не позволяли хоть как-то эффективно работать с широкими входными потоками, такими как аудио и видео, а по большому счёту и речь -- ибо структура входных потоков очень сложна, непонятно было, как их аппроксимировать с достаточной точностью. Коннекционистские представления за счёт однородности представления позволили дотянуться до эффективных вычислений с такими большими и сложными данными. Вычисления самые разные -- поиск аналогий, выделение частей-объектов, нахождение структуры, сжатие информации. А ниже уровнем там, конечо, тензоры (которые представимы списками, как это называют в Питоне или массивами, как это называют в других языках программирования, плюс всё это может лежать в каких-нибудь blobs в базах данных, это уже не так принципиально -- все эти тонкости одновременного использования representations и presentations, обсуждения "представления чего-то" и "представление на носителе/из чего-то"). Для меня этот переход существенно смягчает требования к работе с данными, выставляемые классическими онтологическими подходами, когда требуется для каждого чиха изобрести имя и дать ему строгое место в картине мира. Базы данных -- это ведь тот же онтологический подход, только с акцентом не на модели данных, а на сами данные в отрыве от их моделей, и предположении о закрытом мире. Трудоёмкость выявления онтологии и последующего описания обработок в этих онтологиях запредельна, много лет этим занимался. Переход от классических компьютерных онто-Логических к распределённым представлениям (что не меняет их онтологического статуса в философском смысле) даёт надежду на решение многих и многих задач, раньше недоступных для программной инженерии. Это прежде всего задача совмещения разных онтологий за счёт перехода к общему пространству значений (да, Everething2Vec очень близко к тому, что меня интересует -- 600-мерные вектора из одинаковых размерностей для меня коннекционистские вполне, а вот 600 типов из какой-то онтологии колонок в какой-нибудь базе данных о 50 таблицах -- нет). Про определения я совсем недавно (я ж онтолог) думал примерно так же, как вы. Но потом пересмотрел свою позицию, и к определениям теперь отношусь очень осторожно.

К записи · К обсуждению