Абстрагирование, генерализация, обобщение, сжатие информации, редукция сложности

Абстрагирование, генерализация, обобщение, сжатие информации, редукция сложности

by Евгений Волков -
Number of replies: 1

https://www.facebook.com/ailevenchuk/posts/10212554447390219

Написал(а) в своём ЖЖ

Жми, господь!

Важность абстрагирования/сжатия информации при моделировании как ключевое свойство для компьютерного мышления и творчества я совсем недавно поминал в пункте два поста "за пределами инженерии и…

Важность абстрагирования/сжатия информации при моделировании как ключевое свойство для компьютерного мышления и творчества я совсем недавно поминал в пункте два...
AILEV.LIVEJOURNAL.COM
 
 
Комментарии: (5)
Комментарии
Yehor Churilov
Yehor Churilov Почему "абстрагировать, снижая универсальность"? Как раз универсальность увеличивается при абстрагировании - модель становится применима ко всё большему количеству ситуаций за счёт отбрасывания необщего в наборе онтик, а специфичность падает.
1
Управление
 
НравитсяЕще реакции
 · Ответить · 20h
Сергей Ларичев
Сергей Ларичев На уровне концепта. В картографии (да и в географии) такой или близкий, к описываемому Вами, процесс называется картографической генерализацией: отбор и обобщение информации в зависимости от масштаба, охвата территории, а главное - от целей картографирования. Вся последующая работа с картой, как информационным ресурсом/территориальной моделью, строится уже в генерализованом, "сжатом" - по вашей терминологии, виде. Картографы уже давно используют автоматизированную генерализацию: GOOGLE карты - наглядный пример. Наш МИИГАиК имеет очень солидный, как теоретический, так и практический задел на этом фронте. Один мой бывший ученик, теперь доцент этого университета, как раз защитил диссертацию по данному направлению. Концепт "генерализация" и, особенно - этот термин, на мой взгляд, лучше встраивается в понятийные структуры российского образования. Тем более, что он давно используется в английском (generalization), немецком (Generalisierung), французском (généralisation), да и других языках, как профессиональное понятие.
Управление
 
НравитсяЕще реакции
 · Ответить · 11h
Анатолий Левенчук
Анатолий Левенчук Yehor Churilov у нас разное понятие универсальности. Универсальность разных вопросов к одной ситуации и универсальность одного вопроса к разным ситуациям -- обе универсальности, но разные. Самые большие обобщения обычно не дают ответа на разные вопросы, но только на какой-то один вопрос. Если я абстрагирую текст до его грамматической структуры, то я смогу отвечать только на вопросы о синтаксисе, а о содержании текста -- уже нет. Для меня универсальность использования грамматической структуры этого текста вместо самого текста оказывается меньше. Так что я подумаю-подумаю, и если есть шанс, что меня спросят про содержание, я лучше сохраню сам текст в исходном виде, и не буду применять "мощную абстракцию синтаксической структуры, которая применима ко всё большему количеству ситуацией за счёт отбрасывания необщего". Для меня как раз эта "мощная абстракция" оказывается специфичной, она резко уменьшает возможность задавать вопросы к моей конкретной ситуации. А исходная нежатая информация остаётся менее специфическим и более универсальным ответчиком.

Всё зависит от viewpoints, и даже одни и те же слова ("специфичный", "универсальный") люди с разными интересами используют по-разному 
1
Управление
 
Анатолий Левенчук
Анатолий Левенчук Сергей Ларичев концепт обобщения/генерализации давно известен. Но мой пойнт в другом. Мой пойнт в том, что если мы обсуждаем сжатие информации, то нам проще и численные метрики вводить, и теории строить и много чего ещё делать. У информации есть мера, способы её обсуждения. А вот у смыслов ("генерализация" ведь про них) такого нет. Так что мой пойнт именно в отходе от риторики генерализации/универсализации и попытках использовать риторику сжатия информации. Так, внимание (attention) вырезает кусок мира, для которого нас интересуют подробности, а всё оставляет "непосещённым" (вне внимания, "посещения"). В концепт сжатия информации как ценности это укладывается, а в генерализацию -- не очень. То есть сжатие информации возможно и не через генерализацию, но разными другими способами.
1
Управление
 
Лакси Катал
Лакси Катал Анатолий, я в контексте радикального конструктивизма мыслил о вашем "сжатии информации" скорее как о редукции сложности, для которой сжатие информацию - лишь частный случай. Саму же редукцию сложности можно мыслить как частное проявление принципа экономии какого-нибудь ресурса (энергии, памяти, времени). В несжатом виде мир не влезает в мозги, точнее информация о мире во всей полноте и детальности. И даже если бы влезла - мы бы не могли оперировать всем этим быстро. Очевидно, иногда важнее иметь грубую, но быструю модель, спасающую от проблем, чем точную, но медленную. Мозг же обладает ограниченными ресурсами, мы их экономим, поэтому стремимся строить наиболее общие модели, из которых можно извлекать пользу при минимуме затрат. При этом есть ещё "передаваемость" моделей от одних людей другим, со своими ограничениями. Мне не очень понятно почему вы предпочитаете "сжатие информации", вместо "редукции сложности"

Кстати, на место слова "универсальность" отлично подходит слово "детальность": "снижая детальность вычисления/мышления".

Вы как-то писали что для ребёнка разные кошки - это разные животные, обобщение "это всё кошки" - плод развития умения абстрагироваться от деталей, видя общее. Но кроме того это ещё и редукция сложности мира.

730 words

In reply to Евгений Волков

Re: Абстрагирование, генерализация, обобщение, сжатие информации, редукция сложности

by Евгений Волков -
Пишет Anatoly Levenchuk (ailev
2018-03-18 01:09:00

Жми, господь!

https://ailev.livejournal.com/1414038.html

Важность абстрагирования/сжатия информации при моделировании как ключевое свойство для компьютерного мышления и творчества я совсем недавно поминал в пункте два поста "за пределами инженерии и менеджмента" (https://ailev.livejournal.com/1411106.html).

Основная мысль этого поста -- мы будем абстрагировать/сжимать информацию, моделировать на всех уровнях интеллект-стека, снижая универсальность вычисления/мышления. Поэтому жать будем осторожно (чтобы не терять важное, но терять неважное), но таки будем (ибо без моделирования никуда). Для меня этот текст ещё и заход на попытку вытащить какие-то принципы на стыке онтологики и системного мышления: они ж про эффективное моделирование окружающего мира, то есть тоже про сжатие информации. Может быть, системное мышление окажется не самым плохим способом более-менее единообразно описывать тот зоопарк подходов, который мы сейчас наблюдаем в машинном обучении (глубоком обучении, эволюции, нейроэволюции, байесианских вычислениях и т.д.).

Увы, поскольку мы не знаем, что мы хотим извлечь из уже имеющихся знаний о мире (входных прямо от всех наших сенсоров, или накопленных тяжким научным трудом в виде, например, текстов научных статей или даже Википедии), мы должны очень осторожно их сжимать. Напомню, что в изначальном IBM Watson, который выиграл Jeopardy!, не делалось никаких попыток закодировать текст википедии и прочие справочные текстовые базы в форме "онтологии". Аргумент там был такой: "при любом сжатии информации мы теряем информацию: если мы вытаскиваем какую-то модель из текста, мы теряем возможность отвечать на какие-то вопросы. А вопросы в Jeopardy! могут быть самые разные -- от включающих в себя учёта игры слов до требующих логических рассуждений. Так что мы не извлекаем "граф знаний" из текстов, а работаем каждый раз со всем текстом сразу. А поскольку это требует гигантских вычислительных затрат, то мы используем суперкомпьютер. IBM Watson это как раз суперкомпьютер прежде всего". Для чего они использовали онтологии? Они использовали очень небольшие онтологии для типизации ответов (Форд -- президент или машина), при этом очень грубой типизации, и это на десяток процентов снижало число ошибок.

Priors как-то выражены, они коммуницируются, поэтому для меня они -- сжатая информация, перенесённая к нам в момент принятия решений из каких-то прошлых ситуаций. Эти priors -- хорошие начальные "словарные" значения для вычисления смыслов в конкретных ситуациях с их прагматикой в привязке к целям и времени -- этот перенос акцента с работы на уровне тасовки priors в разных их видах как "знания в консервах" на последующие довычисления/мышление отражает текущий повсеместный переход от семантики/онтологии к прагматике/эпистемологии. Уважаем priors, но не останавливаемся на них. И всё-таки хотим иметь их, не вычислять/мыслить каждый раз с полного нуля. 

Вот тут показывается, что с грамотно выбранными человеками innate priors получается лучше -- и это, скорее всего, магистральный путь, вместо "давай запустим на ночь эволюционную машинку, и она изобретёт нам сетевую круть немеренную с нуля" используется "давай возьмём лучшие на сегодня элементы архитектуры, и запустим эволюционную машинку, начиная с них": https://research.googleblog.com/2018/03/using-evolutionary-automl-to-discover.html. И этот "эволюционный путь" вычисления innate priors, показывает, что всё что угодно мы просто объявляем priors и продолжаем для текущей ситуации вычислять дальше, получая posteriors. 

Интересно, что обсуждается вопрос про составные блоки нейросетей -- какими они должны быть, чтобы хорошо работала нейроэволюция? Должны ли затем мы использовать найденные цивилизацией priors как начальные значения (скажем, лучшие сегодняшние архитектуры сеток, "эволюция гомо сапиенса"), или зарядить эволюцию "из первичного бульона", из каких-то совсем элементарных структур, в надежде, что "зародится жизнь" и высокоэффективные архитектуры нейросеток появятся сами собой? 

Получается так, что innate priors в форме архитектуры нейросетки тоже можно делать компактными, быстрыми, эффективными -- и совсем тем самым неуниверсальными, ибо free lunch theorem (что нет универсальных оптимизаторов/солверов) никто не отменял. Жать нужно, терять универсальность нужно, иначе вычислительно не выжить. Просто потеря универсальности должна быть а) контролируемой, должен быть какой-то критерий и найден оптимум и б) неокончательной -- потом должны быть ещё вычисления, продолжающие оптимизировать неуниверсальное решение для текущей ситуации (после любых priors должны вычисляться posteriors).

Эволюция тут даётся просто как один из универсальных алгоритмов поиска оптимума, помним про Master Algorithm и Free Lunch Theorem -- все эти алгоритмы помогают улучшать/настраивать друг друга. Скажем, эволюционные алгоритмы будут настраивать нейроалгоритмы. Вот тут даже делается громкое заявление "Evolution is the New Deep Learning", ибо придуманы улучшения самих алгоритмов эволюции -- чтобы запускать эволюцию не было так мучительно больно и страшно по части вычислительных ресурсов, как честно написано в работе по предыдущей ссылке: https://www.sentient.ai/blog/evolution-is-the-new-deep-learning/.

А дальше говорим о любых priors, не только innate priors из текущих архитектур deep learning, которые я упомянул в тексте по первой ссылке. Например, все классические онтологии и онтики это как раз такие priors. Меня натолкнул на эту мысль Nando de Freitas в начале 2016 года, https://ailev.livejournal.com/1240509.html и далее я повторил эту линию рассуждений в программном тексте про "онтологии и бибинарная модель мышления" в конце 2016 году -- https://ailev.livejournal.com/1305176.html. В какой-то мере я пишу сейчас про сжатие, поминая многие тезисы того текста. Единственное новое -- я говорю, что сжатие многоуровнево, иерархично, то есть системно. Оно идёт на многих уровнях интеллект-стека.

Сжатие это (поиск онтик, в концептах которых мы хотим хранить наши priors) можно делать мокрыми нейронными сетками -- находить фичи усилием человеческой мысли. Но круче, конечно, это выучивать (например, deep learning). Для "непонятной предметной области" нужно просто выучить viewpoint, с которым работать дальше -- выучить без учителя, конечно. Вот пример того, как это делается в музыке: распознавание паттернов/фич/viewpoints/latent space как "палитры", из которой потом генерируются самые разные морфинги между мелодиями/views (морфинги -- это чтобы показать, что речь идёт о каких-то вычисленных правильных ортогональных характеристиках, которые могут по-разному сочетаться и давать всё разнообразие мелодий предметной области) -- https://magenta.tensorflow.org/music-vae

Можно дальше думать: это или а) мы получили какие-то priors и дальше можно уточнять, "из чего состоит музыка" в каждом конкретном случае, или б) мы получили "значения" и дальше мы с ними работаем, забыв про priors, что это было "сжатие". 

Мой пойнт тут в том, что вышесказанное сжатие с попытками сохранить универсальность происходит на всех уровнях интеллект-стека (я писал про этот стек более-менее подробно последний раз в "болванах для искусственного интеллекта", https://ailev.livejournal.com/1356016.html). Вверху жмём, вводя какую-то вероятностную онтику предметной области (иначе теряем возможность коммуницировать с окружающим миром), на среднем уровне жмём архитектурой сетки (коннективистской структурой), на самом нижнем уровне жмём уже математическими операциями, буквально сокращаем число бит в числах для вычислений: получаем опять-таки не слишком универсальные (не все числа можем выразить, ибо сурово квантуем), но зато очень маленькие по памяти и быстрые по скорости вычисления.

В очень интересном обзоре методов сжатия данных (лекция Геннадия Пехименко) рассказано о том, как обойти барьеры доступа в память GPU и кэшировать побольше данных в хардверных кэшах разного уровня: https://habrahabr.ru/company/yandex/blog/350896/. Трудоёмкость вычисления там измеряется в энергоэффективности: операция с целым примерно 1pJ, плавающим - 20pJ, а доступ к памяти -- 1200pJ. Это верно для практически любой памяти. Отсюда мечты о мемристорах. Отсюда перегрев современных чипов: греются они не от собственно операций, процессорные ресурсы простаивают. Греются чипы от доступов к памяти. Оказывается, доступность вероятностного вывода/машинное мышления зависит от того, сколько и какой памяти нам нужно затронуть нашими вычислениями -- если памяти немного, то мы можем позволить себе вычислять, а если памяти много, то либо чипы перегреются, либо придётся снизить скорость вычислений, чтобы не было перегрева.

Поэтому нужно пытаться жать и сами числа (даже не "данные"!), чтобы снизить нагрузку/затраты энергии на хардверную память (это ещё ниже уровнем, чем коннективистская архитектура нейросети). Низкоразрядные (1-8 бит на число) вычисления очень интересны: они решают задачу бутылочного горлышка доступа к памяти с одной стороны (хранимые значения очень малы) и скорости вычислений с другой стороны (разрядов-то мало, что там вычислять?!). Их можно сделать до чёртиков, компенсируя неточность каждого из них. Вот некоторая подборка ссылок на низкоразрядные вычисления в deep learning из обзора по использованию GPU (https://blog.inten.to/hardware-for-deep-learning-part-3-gpu-8906c1644664): there are many works on binarization of neural networks (replacing float weights by binary 0/1 connections): “Binarized Neural Networks: Training Deep Neural Networks with Weights and Activations Constrained to +1 or -1”, “XNOR-Net: ImageNet Classification Using Binary Convolutional Neural Networks” and XNOR.AI, ”How to Train a Compact Binary Neural Network with High Accuracy?”, “FINN: A Framework for Fast, Scalable Binarized Neural Network Inference”, and so on. Here is a short overview and more references on binary deep learning. И добавим ещё из свеженького HALP: High-Accuracy Low-Presision Training -- http://dawn.cs.stanford.edu/2018/03/09/low-precision/. И помним, что в этой области ещё много-много разных других ходов. Я писал ещё пару лет назад, что нужно "думать о мощности аппроксимаций: переход к bitwise сеткам (начиная, например, с обзора в http://arxiv.org/abs/1603.01025 -- где обсуждаются пятибитные и трёхбитные логарифмические разрядные представления для весов и активаций в свёрточных сетях)".

Это уже почти самый низ интеллект-стека, но не нужно забывать, что есть и другие ходы --уход от архитектуры GPU или TPU и, например, использование нейроморфных архитектур процессоров или вообще мемристоров, физических вычислителей на оптике и т.п. На этом уровне жмём уже на уровне вещества, а не каких-то логических представлений информации.

UPDATE: Обсуждение в фейсбуке -- https://www.facebook.com/ailevenchuk/posts/10212554447390219

Заголовок требует ещё одного абзаца, про Новый завет, как пример сжатия накопленного опыта с вектором на спасение души. Или на... Кстати, а вектор нужно знать уверенно и определенно, прежде чем применять сжатую информацию.

1531 words