В первом своём сообщении я обозначил функцию потерь:
Ошибочка только в записи, вот так правильно:
![$range[p_j] = \max\limits_{i,i \ne j} (similarity(f(p_i), p_j))$ $range[p_j] = \max\limits_{i,i \ne j} (similarity(f(p_i), p_j))$](https://dxdy-02.korotkov.co.uk/f/5/0/a/50a46f8709ef7a47d6925e159d4c917282.png)
, где

- функция сходства (близости), я её упоминал там же. Можно также взять известную функцию косинусного сходства, но у неё нет коэффициента, который возможно нужен для регуляризации.
Эту функцию потерь можно назвать
Range Uncovery (непокрытие диапазона) - какова доля точек (данных) не имеет достаточного объяснения. Эту величину нужно уменьшать.
Эта функция потерь проверена на практике, работает. То есть можно взять несколько мутуоэнкодеров несложной структуры и с помощью их "объяснить" максимальное количество точек в датасете, обучив их, минимизируя Range Uncovery.
Для этого нужно в идеале перебрать

пар точек.
Теперь о том, что мутуоэнкодеры можно приспособить УСЛОВНО для исследования
внешних закономерностей объектов в датасете и для исследования
внутренних закономерностей. В датасете рукописных цифр MNIST объектами условно являются цифры. Можно сравнивать цифры между собой - это классическое исследование внешних закономерностей, широко известно и широко распространено. Но этого недостаточно, можно за объекты принять отдельные пиксели изображений. Я ранее постоянно употреблял слово "точки", но в более широком смысле - это объекты по терминологии машинного обучения. Если мы принимаем в качестве объектов пиксели изображений, то датасет обретает иерархическую структуру "датасет - изображение - пиксель". Изображение - это набор объектов (пикселей). Эта структура нужна для того, чтобы исключить применение мутуоэнкодеров между пикселями разных изображений.
Теперь о том, как уйти от квадратичной сложности. Для этого предназначается domain-эвалюатор. Мы берём изображение цифры и каким-то образом находим некоторое критическое количество пар пикселей, которые очень хорошо согласованы хотя бы одним из мутуоэнкодеров, т.е. функция сходства высокая (

). Мы собираем статистику об этих парах пикселей с помощью полносвязного слоя и SoftOrdering-слоя.
О SoftOrdering начало тут:
topic158638.htmlТут продолжение:
topic158750.htmlОсобенность SoftOrdering в том, что он для любого количества точек (данных) строит уникальный тензор фиксированной длины, который очень удобно обрабатывать далее. В реальной жизни SoftOrdering соответствует построению гистограммы. Гистограмма - это как некоторая интерпретируемая "статистика" или "характеристика" набора произвольного количества точек. В случае же нейросетей вместо гистограммы применяется мягкий вариант - SoftOrdering, выход этого слоя - эмбеддинг (данные, которые понятны только нейросети, несмотря на наличие аналогии с гистограммой).
Итак, по нескольким точкам построена характеристика всего надобъекта - изображения. Распознаванию надобъекта обучается последующая структура, ей на вход подаётся эмбеддинг SoftOrdering и добавляются координаты нового пикселя

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

, когда

. Эта структура оценивает насколько данный пиксель характерен для данного изображения и насколько подходит под каждый мутуоэнкодеров (domain от 0 до 1).
Для обучения этой штуки можно просто взять все мутуоэнкодеры и обработать ими пиксель

, найти наиболее сходные пиксели

. Это тяжкая часть обучения, но в какой-то момент, предполагается, обучение можно остановить и приступить к эксплуатации domain-эвалюатора, так как он способен более менее находить неплохие пары точек без полного перебора.