Решетка TensorFlow (TFL)

TensorFlow Lattice — это библиотека, реализующая гибкие, управляемые и интерпретируемые модели на основе решеток. Библиотека позволяет внедрять знания предметной области в процесс обучения посредством ограничений формы, основанных на здравом смысле или на политике. Это достигается с помощью набора слоев Keras , которые могут удовлетворять таким ограничениям, как монотонность, выпуклость и попарное доверие. Библиотека также предоставляет простые в настройке готовые модели .

Концепции

Этот раздел представляет собой упрощенную версию описания из книги Monotonic Calibrated Interpolated Look-Up Tables , JMLR 2016.

Решетки

Решетка — это интерполированная таблица соответствия, которая может аппроксимировать произвольные соотношения вход-выход в ваших данных. Она накладывает регулярную сетку на ваше входное пространство и обучается значениям для выходных данных в вершинах сетки. В качестве тестовой точки \(x\), \(f(x)\) линейно интерполируется из значений решетки, окружающих \(x\).

Приведённый выше простой пример представляет собой функцию с 2 входными признаками и 4 параметрами:\(\theta=[0, 0.2, 0.4, 1]\), которые представляют собой значения функции в углах входного пространства; остальная часть функции интерполируется на основе этих параметров.

Функция \(f(x)\) может улавливать нелинейные взаимодействия между элементами. Параметры решетки можно представить как высоту столбов, установленных в земле на регулярной сетке, а результирующая функция подобна ткани, натянутой на четыре столба.

С \(D\) Если вдоль каждого измерения имеется 2 вершины, то правильная решетка будет иметь \(2^D\) параметры. Для более гибкой подгонки функции можно задать более мелкозернистую решетку в пространстве признаков с большим количеством вершин вдоль каждого измерения. Решеточные функции регрессии являются непрерывными и кусочно-бесконечно дифференцируемыми.

Калибровка

Допустим, приведенная выше примерная решетка представляет собой усвоенную оценку удовлетворенности пользователя предлагаемой местной кофейней, рассчитанную с использованием следующих признаков:

  • Цена кофе в диапазоне от 0 до 20 долларов.
  • Расстояние до пользователя, в диапазоне от 0 до 30 километров.

Мы хотим, чтобы наша модель научилась определять, насколько пользователь доволен предложенным ему местным кафе. Модели TensorFlow Lattice могут использовать кусочно-линейные функции (с помощью tfl.layers.PWLCalibration ) для калибровки и нормализации входных признаков в диапазоне, принимаемом решеткой: от 0,0 до 1,0 в приведенном выше примере решетки. Ниже показаны примеры таких калибровочных функций с 10 ключевыми точками:

Часто бывает полезно использовать квантили признаков в качестве входных ключевых точек. Готовые модели TensorFlow Lattice могут автоматически устанавливать входные ключевые точки в соответствии с квантилями признаков.

Для категориальных признаков TensorFlow Lattice предоставляет калибровку категориальных признаков (с помощью tfl.layers.CategoricalCalibration ) с аналогичным ограничением выходных данных для подачи в Lattice.

Ансамбли

Количество параметров слоя решетки экспоненциально возрастает с увеличением числа входных признаков, поэтому он плохо масштабируется до очень больших размерностей. Для преодоления этого ограничения TensorFlow Lattice предлагает ансамбли решеток, которые объединяют (усредняют) несколько крошечных решеток, что позволяет модели расти линейно с увеличением числа признаков.

В библиотеке представлены два варианта этих ансамблей:

  • Случайные крошечные решетки (RTL): Каждая подмодель использует случайное подмножество признаков (с заменой).

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

Почему именно TensorFlow Lattice?

Краткое введение в TensorFlow Lattice можно найти в этой статье блога TF .

Интерпретируемость

Поскольку параметры каждого слоя являются его выходными данными, легко анализировать, понимать и отлаживать каждую часть модели.

Точные и гибкие модели

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

Ограничения формы, основанные на здравом смысле

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

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

TF Lattice позволяет продолжать использовать гибкие модели, но при этом предоставляет несколько вариантов внедрения знаний предметной области в процесс обучения посредством семантически значимых ограничений формы, основанных на здравом смысле или на политике:

  • Монотонность : Вы можете указать, что выходные данные должны увеличиваться/уменьшаться только относительно входных данных. В нашем примере вы можете указать, что увеличение расстояния до кофейни должно только уменьшать прогнозируемые предпочтения пользователя.

  • Выпуклость/вогнутость : Вы можете указать, что форма функции может быть выпуклой или вогнутой. В сочетании с монотонностью это может привести к тому, что функция будет демонстрировать убывающую отдачу по отношению к заданному параметру.

  • Унимодальность : Вы можете указать, что функция должна иметь уникальный пик или уникальную впадину. Это позволяет представлять функции, имеющие оптимальную точку относительно определенного признака.

  • Парное доверие : это ограничение работает с парой признаков и предполагает, что один входной признак семантически отражает доверие к другому признаку. Например, большее количество отзывов повышает уверенность в среднем звездном рейтинге ресторана. Модель будет более чувствительна к звездному рейтингу (т.е. будет иметь больший наклон относительно рейтинга), когда количество отзывов больше.

Контролируемая гибкость с помощью регуляторов

В дополнение к ограничениям по форме, TensorFlow lattice предоставляет ряд регуляризаторов для управления гибкостью и плавностью функции для каждого слоя.

  • Регуляризатор Лапласа : выходные значения вершин/ключевых точек решетки/калибровки регуляризуются относительно значений их соответствующих соседей. Это приводит к более пологой функции.

  • Регуляризатор Гессе : Этот параметр наказывает первую производную калибровочного слоя PWL, чтобы сделать функцию более линейной .

  • Регуляризатор морщин : Этот параметр снижает значение второй производной калибровочного слоя PWL, чтобы избежать резких изменений кривизны. Он делает функцию более плавной.

  • Регуляризатор кручения : Выходы решетки будут регуляризованы для предотвращения кручения между признаками. Другими словами, модель будет регуляризована для обеспечения независимости между вкладами признаков.

Комбинируйте с другими слоями Keras.

Слои TF Lattice можно использовать в сочетании с другими слоями Keras для построения частично ограниченных или регуляризованных моделей. Например, калибровочные слои Lattice или PWL можно использовать на последнем слое более глубоких сетей, включающих вложения или другие слои Keras.

Документы

Учебные пособия и документация по API

Для распространенных архитектур моделей можно использовать готовые модели Keras . Также можно создавать собственные модели, используя слои TF Lattice Keras , или комбинировать их с другими слоями Keras. Подробную информацию см. в полной документации API .