• Теория графов и нейронные сети в распознавании объектов - в чем преимущество графов?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я попробую рассказать своё видение проблемы. Я не уверен что я прав но напишу как мне кажется.

    Есть две модели представления нейронных сетей.

    1) Матрицы (иногда называют тензоры). Имеют аппаратную реализацию в новых TPU (Tensor processor unit). Кажется Гугл сейчас продает услугу аренды таких сетей для задач обучения. Подходят для плотного заполнения нейронных слоём когда нейроны связаны каждый-с-каждым. При этом даже если связи нет (коэффициентик равен 0.0) тем не менее пространство все равно используется и этот ноль участвует в расчете.
    Расчет обучения (как я его себе понимаю) должен сводится к перемножению входного векртора на всю полседовательность матриц. И также к применению функции активации между слоями. Имеено за счет функции активации и идет обучение (там есть своя доказательная база) и идет декомпозиция на слои. Если бы функции не было - тогда можно было-бы все слои (константы) схлопнуть в 1 большую матрицу. Вот так и бегает умножение туда-сюда. Обучение - проверка ошибок. Коррекция. И снова обучение.

    2) Графы. Это вырожденный вариант матриц когда нулей оооочень много то чтоб зря не меремножать нули можно модель вычислений представить в виде графов. Математически это дает экономию в виде пропуска ненужных вычислений. И должна быть экономия в виде памяти для коэффициентов каждого слоя. На практике представить граф компактно очень сложно. Если кто из вас делал свои графы - то вы знаете что жрут они память как в не в себя, и никогда не угадаешь сколько надо выделить под вершину или под ребро чтоб не было пере-аллокаций и потерь.

    Если вы хоть раз открывали учебники по НС типа Каллана или Хайкина то там с первых страниц идет описание
    персептрона или 1-слойного нейрона в виде рисунка со стрелочками. Это и есть граф. Таки рисунки любят преподаватели в универах и всякие теоретики.

    В старых математических пакетах (еще в 80х годах) есть целые мат-библиотеки которые работают с разреженными матрицами (sparsed matrices). Это - тоже наивные попытки создать экономию. Такая дырявая матрица как раз отражает граф где вершины - это столбцы и строки а рёбра - это ненулевые коэффициенты.
    Реализаций их - целая куча. Математики любят решать системы дифуров в таких структурах. Там своя специфика. Тоже есть много нулей. Тоесть между графом и дырявой матрицей есть полиморфизм.

    Есть поддержка таких дырявых структур (Vector.sparse) и в биг-дате (Spark). Тоже для нужд ML.

    Тоесть если ваш нейрончик дырявый - то он полюбит графы и дырявые матрицы. Если он - плотняк
    заполнен коэффициентами - то берите обычные матрицы.

    Все что я написал это просто моё чортово ИМХО. И не стоит это воспринимать за правду.
    Ответ написан
    2 комментария