Как стать автором
Обновить
52
0
Андрей @S_A

Пользователь

Отправить сообщение

Никто не думал, что когда поиск выводит шлак, то в интернете этого шлака более всего? Телепатии ещё не придумали.


По теме. Дорабатывать векторы от сеток через KNN придумал Olah. И это очень годная штука.

Спасибо за инфу! Упоминаю и я, не в первый раз. Вообще, конец этой брошюрки надо делить на 4-5. Книгу «Теория катастроф» у него я ещё читал. А вот о таких подробностях его деятельности был не в курсе. Да впрочем в 90-е много было всякого занятного. К сожалению подобного рода трудов о пользе диффуров в (условно) повседневной практике, этакого научпопа, очень мало. Мы все изучали хотя бы элементы матана, но когда наступает момент — не все им пользуются. Арнольд может и редиска, как выясняется, но ценность и доступность простого моделирования донёс неплохо.
books.google.ru/books/about/Жесткие_и_мягкие_мате.html?id=WaC9BgAAQBAJ&printsec=frontcover&source=kp_read_button&redir_esc=y с мобилы только сырой ссылкой получилось. Да тут у меня к вам скорее некоторый упрёк, что нужно больше матана :) а в целом логика вполне в духе «мягкого моделирования», что не есть плохо
Не увидел математики особой… Академик Арнольд строил модели перестройки (теория катастроф, диффуры, бифуркации, это все), там была та же кривая. Просто переход из области знаний в другую для мозга (для группы, для страны) — композиция логистических функций или типа них. Кривая — просто подстройка вроде «горячо-холодно». Поэтому рекомендация у меня была бы чуть другая — есть слона маленькими кусочками.
Да, непрерывный случай так легко на граф не натянешь. Присмотрелся к СДУ, Фоккера-Планка (здесь страница 108). Если положить нулевой drift (снос) для процесса диффузии, то лучшей оценкой, хотя и с увеличивающейся (пропорционально корню из t) дисперсией, будет начальное состояние.

Чаще всего Random surfer'а найти легче там, где он начал :) На странице Google.

P.S. Первое предложение набрал в этом комменте, случился флэшбэк. Когда-то давно, году так в 2003, я занимался алгебраической теорией узлов и зацеплений (2 курс универа). Помню, пришел к выводу, что-то по типу, что «узел можно развязать, когда после того, как разрубишь его диаграмму, из кусков можно склеить сферу». Что значит «из кусков склеить сферу» я так и не смог ни сам понять, ни другим объяснить, поэтому на следующий год уже занялся СДУ… :)

Вобщем теперь сижу и не думаю что СДУ могут как-то помочь с ранжированием на графах.

Заинтересовали pagerank'ом, благодаря идее диффузии. Надо будет посмотреть на досуге подробнее.


Вообще диффузные процессы хорошо описываются в терминах стохастических дифф. уравнений для непрерывный случаев… Надо будет с этой стороны присмотреться.

Есть генетические алгоритмы, до сих пор помню на Хабре была статья, как механические часы такими алгоритмами конструировали. В среде дата-саентистов они (ГА) не особо в почете (хотя про них есть и в «Верхновном алгоритме»:)).

Но я о другом хочу написать.

Если бы вы ознакомились с методами обработки текста, вы бы удивились. Сейчас весьма распространена обработка через embeddings (на русский не буду пытаться перевести — вдруг ошибусь).

Эти методы умеют работать с контекстом. На первом (сентябрь 2018) из DataFest Сибирь, дата саентист из Яндекс.Такси рассказывал о том, что эмбеддинги можно не только в тексты бахать, а историю заказов, историю действий в приложении и т.п.

Ближе к сути — нейросетки умеют векторизовывать (последовательные) входные данные — для этого и нужны эмбеддинги. Векторное пространство — очень хорошая штука, там всё складывается, домножается на скаляры, базисы есть (правда не очень интепретируются человечно они, эти оси), расстояния можно определять.

И сходные по смыслу (текста или любой серии объектов) исходные примеры трансформируются в близкие друг к другу вектора (doc2vec, word2vec, glove...). Ну и неклассическое/классические «математика — мужчина + женщина = ?» (? ~ наука, нейросети после обучения на википедии говорят), «король — мужчина + женщина = королева». От векторов уже учат классификаторы (и регрессоры тоже).

Сверточные же сети могут сворачивать инфу в вектор (массив чисел) и обратно в изображение, но тут исходные фичи не обладают свойствами векторного пространства.

Теперь переходя к диаграммам. Диаграммы — это тоже язык. Визуальный. Любую диаграмму можно изложить текстом, историей, нарративом. UML так вообще имеет четкие стандарты, как и BPMN какой или ARIS, IDEF и т.п. Есть и нейросетки которые генерят тексты к картинкам… все правда упирается в разметку датасетов (ну так всегда в машинном обучении). Иероглифы — вообще сплошные диаграммы.

Возьмите python + keras, спарсите википедию: текст (фичи) -> иллюстрация (таргет), обучите. Потом сетка вам на любой текст будет картинки рисовать :)

Потратить придется правда ресурсов как небольшая майнинг-биржа. Но как-то так. Я знаю что не ответил на вопрос соединения диаграмм как в VISIO. Ответ примерной такой — векторизуйте две диаграммы, сложите, и получите ответ.
Категориальные признаки (не непрерывнозначные) — стандартный случай для машинного обучения. Они перекодируются просто из признака «цвет» в варианты «зеленый» (да/нет), «желтый» (да/нет), «красный» (да/нет). И деревья решений — самые деревья и есть. Только одиночные деревья просто могут запомнить все данные (переобучиться), и всё, ничего не обобщить, поэтому ансамбли (стэкинг) для деревьев — самый стандартный способ их применения. Либо один деревья исправляют другие (бустинг), либо построенная кучка деревья голосует за ответ.
Стэкинг неуйсточив, сильно склонен переобучатся — запоминать отданные ему данные. Поэтому первый алгоритм, результаты которого входы для второго, учится на одном множестве, предсказывает другое множество, на предсказанном нужно учить уже второй алгоритм (out-of-fold) и так далее. Это очень расточительно с точки зрения размеченных датасетов, поэтому сильно много не стэкают.

Что касается концептуального решения — соединили… только сильно большого качества не показывают они…

Беда по-моему в следующем. Распознавание паттернов человеком гораздо сильнее ввиду наличия обширного контекста, которого нет у алгоритмов. И «верхновный алгоритм» он больше про это… я всё время пишу про него в кавычках, потому что это больше концепция, хотя есть и формула.

Любая модель от чего-то абстрагируется, что человек может принять во внимание не формализуя, мягкими моделями — «чем дальше в лес, тем больше дров» (как дифф. ур-я со свободными параметрами). Модели машинного обучения достаточно жесткие в этом плане, на каждый дополнительный параметр им надо увеличивать количество данных для обучения.

И данные все обычно с шумами. Хотя и люди тоже ошибаются. Я вот продал (2000-го года) машину в сентябре, хотя купил в июне. Потому что устал от того, что у двух автомехаников по одной проблеме минимум три мнения.

Если бы не верил в теорему Байеса — наверное расстроился бы :) А так — опыт.
И да, вот это
У апельсина жёсткая пупырчатая корочка, я это помню, к тому же апельсин оранжевый [снова 2-й паттерн, цвет], значит, и апельсин отпадает.

напоминает rule-based алгоритмы. Вариант — решающие деревья, которые разбивают пространство признаков на области, в которых каждая точка относится к своему классу.

Пример дерева — если X1 > 5, то Y = 5, если X1 < 5 и X2 > 3, то 4 (и так далее). Решающие деревья строятся по данным автоматически. И про них в книге есть… но неважно. Они — часто применяемый в продакшн алгоритм для многих задач, и часто выигрывают множество соревнований.

Но как по мне у них один недостаток (моя персоналная заморочка) — они не аналитичны, ступенчаты. Я привык природу рассматривать непрерывными функциями, и чаще всего сигмоидами. Ну это уже отдельная история.
Называется reinforcement learning, обучение с подкреплением (угадал — получил плюшку, не угадал — штраф). Есть и статьи на хабре, о том как скелету ходить, или как агенту играть на бирже.

Есть еще генетические алгоритмы… вы же сказали про стэкинг, комбинацию алгоритмов. Это часто применяют в соревнованиях, есть некоторые устойчивые стэкинги (не такие замутные) и в бизнесе. В книге «Верховный алгоритм» об этом всём есть, её писал известный специалист в анализе данных и машинном обучении. И стэкинг — это промежуточное решение. Тот самый «верховный алгоритм» из книги — концептуальное соединение всех направлений. Но опять же, книга ценна по моему мнению всем содержанием, далеко не заключением.
Рекомендую книгу «Верхновный алгоритм». Там вполне научно-популярно (больше популярно, чем научно, но без потери концепций) излагается универсальный алгоритм (правда в продакшне я его так и не видел, не считая элементов), и его перспективы. Например, заместитель человека в принятии повседневных решений :)

Книга ценна изложением именно самих разнородных концепций, применяемых в машинном обучении, на мой взгляд. Сам верхновных алгоритм достаточно имхо немного weird, простите за английский.
Если это и нейросеть, то вовсе не классическая. Классическая — слоистая, где вход — размерностью признакового пространства, выход — размерности целевого.

Здесь какой-то граф, со структурой дерева… хотя конечно есть вариации сети с разными выходами и разными входами, или банально графы вычислений — как в tensorflow например — однако что-то подобное может вычислять, предположу,
некоторую вероятность (принадлежность) на каждом конечном узле.

Если хотите знать, как нейросети «видят мир», выделяют признаки (с каждым слоем всё более высокоуровневные), ознакомьтесь с картинками по ссылкам

blog.keras.io/how-convolutional-neural-networks-see-the-world.html
raghakot.github.io/keras-vis

Они работают с 2D-изображениями, в отличие от людей, у которых два глаза, и кстати, глаза — это продолжение мозга, это тоже нерв, он реагирует на входной сигнал, подстраиваясь под него, в отличие от нейросети, которой что скормили, то она и съела.

Все неверно. Во-первых, нейросеть математически не так устроена, как мозг. Аналогия, мотивация, но не более того, дальше одни различия.


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


Ну и в-третьих, машинное обучение во многих задачах справляется лучше человека. Именно благодаря пунктам 1 и 2.


Нейросеть нельзя одушевлять, это всего лишь продолжение данных, экстраполяция.

Я на самом деле соврал про функционал, который минимизируют, но там все чутьчуть эквивалентно. На самом деле нынче максисизируют вероятность получить theta при условии имеющихся данных. То есть находят наиболее вероятные параметры.


Что касается Карлсона, это самоирония. Дата сайентист и аналитик, и математик, и программист. Все вместе, но у разных сайнтистов разные пропорции. Это не столько от конторы, сколько от его бэкграунда зависит.


Я больше на инструменты полагаюсь, ищу там где светло чаще всего, а не где потерял. Увеличивая радиус освещения, пока не найду :) потому что я не математик уже лет 12, программист в основном. Поэтому Карлсон тот был немного про меня.


Однако я знаю свои слабые стороны, и постоянно качаю скиллы в разведочном анализе, байесе, по мере наличия времени. Нынче много инструментов в дата сайенсе, что матан можно и не знать, казалось бы. Проблема в том что толком их можно будет, эти инструменты, применять только для задач из примеров. В реальной практике действительно математика нужна. Очень сложно получить первую рабочую модель, но зато потом её можно тюнить и катать кроссвалидации уже до посинения. И без знания устройства моделей, матана того же, не выйдет и это кстати тоже.

Очень много работы для одного — придется на основную тогда не ходить :) Такая роскошь недоступна, а конкурс посмотрел — сделан интересно.
Проблема с нейронными сетями в том, что в принципе непонятно почему они работают именно так.


Алгоритмы машинного обучения имеют так скажем два режима — обучение (train) и предсказание (inference).

В режиме обучения сетка представляет собой функцию F(xi1, ..., xiN, theta_1, ..., theta_M) = y_hat_i, и некоторым оптимизационным алгоритмом (например можно даже Ньютоном) ищутся такие theta_j такие, что невязка (sum(abs(y_i — y_hat_i))) минимальная (или какая другая функция ошибки, в зависимости от задачи). Локальных оптимумов может быть много, поэтому применяются всякие ухищрения, чтобы попасть в оптимум поглубже… но это не суть.

Никакой магии, правда же?

При инференсе, просто берут найденные theta_j, и подставляют в F. Качество оценивают на таких x, которые при обучении не использовались.

Так что всё понятно как они работают. theta_j не интерпретируются, да. Но так когда сплайнами интерполируют, коэффициенты тоже не особо поддаются интерпретации. Нейросетка — упрощая — тот же сплайн.

Они работают тупо потому, что есть теоремы о сходимости. Невязка ненулевая потому что данные имеют шум, и потому что в глобальный оптимум сетка может и не попасть (поверхность ошибки уж больно многомерная, часто с протяженными желобами-оврагами). И никакая сетка реальный мусор не развяжет на отложенном множестве, как её ни обучай, если там мешанина.

TLDR — нейросетки работают именно так, как их настроили и на каких данных. Это просто функция от данных* и их настроек (гиперпараметров) — как и другие алгоритмы машинного обучения.

* — это не (всегда) значит что она знает все данные, что и проверяется отложенным множеством.

Вот я сегодня взял тот алгоритм, который сам как-то придумал, и решил прогнать на датасете рукописных цифр (MNIST). Он по построению запоминает датасет, но при инференсе наоборот… делает предположение о таргете. SVM, с которым я сравниваю, при обучении ищет прямые, которые разделяют классы так, чтобы они были разнесены прямой как можно дальше.

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

Короче я тут что-то разошелся…

Моё резюме (номера два:)).
Алгоритм и нейросетка (в режиме инференса) — одно и то же. Просто коэффициенты в алгоритм и в сетку добываются различными способами. Либо на бумаге, либо подгонкой под известные данные с последующей проверкой на неизвестных.
Как по мне, им бы выйти на какие-нибудь модные дома или журналы, и продавать услуги для них. Причем не в России, рынок не такой большой.
Попробуйте приложение feedly, или другой какой RSS-агрегатор. Не соц. сети, но для меня задачу разделения лент решает.

Что касается «умности ленты», то с одной стороны она нужна, с другой не нужна… она не нужна, когда как у меня — 30 групп, из них в 20 контент раз в месяц появляется, а в оставшихся 10 — раз в день.

Умная лента нужна на других принципах. Нужно тематическое моделирование, извлечение концепций из контента (не текста!), и подписка на концепции. Нужно извлечение именованных сущностей из контента (не текста!), и подписка на них. И всё в таком духе.

При этом сервис фильтрации должен быть не аффилирован с источником контента. Либо на худой случай это должен быть агрегатор по типу: «сегодня в ваших подписках были следующие темы (8), следующие персоны (28)» с возможностью провалиться и посмотреть.
Мой коллега говорит, в будущем единственной работой человека будет «придумывать для роботов работу».

И еще, один (не помню какой) дядька сказал, «ИИ — это то, что еще не изобрели».

Вобщем, предлагаю ждать сингулярности. А там всё понятно станет (в основном тем у кого дробовик и тушенка в заначке).

Информация

В рейтинге
Не участвует
Откуда
Россия
Зарегистрирован
Активность