Shitposting on various subjects
PS рекламы в канале нет
Post #978
2.53K
Representation Engineering: A Top-Down Approach to AI Transparency
https://arxiv.org/abs/2310.01405
Огромная статья с кучей авторов, но которую, как мне кажется, будут очень много обсуждать в ближайшее время. Тут мне хочется запилить лонгрид с техническими деталями их реализации (на мой вкус, именно описание метода они сделали очень мутное и кучу важной инфы запихнули далеко в аппендикс)
Начать надо с того, что статья претендует в целом на новый подход в объяснении генерации текста (в духе explainable AI) и в ее контроле. Обычно когда мы хотим что-то понять про работу сети, мы идем «снизу вверх» – то есть анализируем по отдельности нейроны или активации на разных слоях, чтобы понять, на что модель обращает внимание. Тут конечно на ум приходит недавний блогпост от OpenAI, где они пытались найти, за что отвечает каждый конкретный нейрон в GPT2
Авторы же предлагают, как понятно из названия, идти «сверху вниз» – не разбирать нейроны по отдельности, а смотреть на паттерны и репрезентации, которые скрыты в латентном пространстве модели. То есть, в каком-то смысле, мы хотим изучить мозговую активность сети целиком, когда она «думает» о каком-то концепте, и из этого МРТ скана пытаться вытащить репрезентации этого понятия. Собственно поэтому основной метод в статье и называется Linear Artificial Tomography (LAT)
В чем этот метод состоит? В качестве примера возьмем их анализ концепта Truthfulness, то есть способности корректно и фактологично отвечать на вопросы
1. Семплируем сколько-то примеров из TruthfulQA. Оборачиваем их в такой промпт:
Consider the amount of truthfulness in the following answer:
Question: <question>
Answer: <answer>
The amount of truthfulness in the answer is
Для decoder-only модели мы смотрим на репрезентацию для последнего токена, так как там и будет зашита какая-то информация о том, как модель себе представляет truthfulnes. На практике на самом деле бралось по 2 таких QA примера, при чем не обязательно так, что один пример был лживым, а другой правдивым. Для каждого из них мы берем hidden state, считаем разницу между ними и нормализуем. После этого шага получаем набор таких вот нормализованных векторов
Внимательный читатель на этом моменте спросит – а с какого слоя мы этот hidden state берем? Авторы об этом пишут как раз только в аппендиксе, но слой они выбирают вручную после серии экспериментов)))) как правило тот, который дает максимальное качество на валидации
2. Строим линейную модель
В качестве модели они взяли не абы что, а метод главных компонент (кто помнит этого добряка с пар статистики?). Если очень кратко, то это метод позволяет сильно снизить размерность, сохранив наибольшее количество информации из исходных данных. На выходе мы получаем первую компоненту, которая и должна отражать интересующий нас концепт. Авторы это называют reading vector
3. На инференсе, когда нам прилетают новые промпты, мы так же берем hidden state последнего токена, нормализируем его, и берем dot product от него и reading vector. На выходе получаем скор truthfulness соответственно
По замерам авторов, это очень хорошо бустит качество на TruthfulQA, который вообще является сложным бенчмарком. Тем не менее, у меня к этому есть очень большие вопросы, так как в одном из экспериментов они берут ПЯТЬ тренировочных семплов и ПЯТЬ валидационных и на этом репортят качество (пруф на скрине, ряд посередине). И вообще это результаты одного из 15 прогонов их модели (!)
part 1/3
https://arxiv.org/abs/2310.01405
Огромная статья с кучей авторов, но которую, как мне кажется, будут очень много обсуждать в ближайшее время. Тут мне хочется запилить лонгрид с техническими деталями их реализации (на мой вкус, именно описание метода они сделали очень мутное и кучу важной инфы запихнули далеко в аппендикс)
Начать надо с того, что статья претендует в целом на новый подход в объяснении генерации текста (в духе explainable AI) и в ее контроле. Обычно когда мы хотим что-то понять про работу сети, мы идем «снизу вверх» – то есть анализируем по отдельности нейроны или активации на разных слоях, чтобы понять, на что модель обращает внимание. Тут конечно на ум приходит недавний блогпост от OpenAI, где они пытались найти, за что отвечает каждый конкретный нейрон в GPT2
Авторы же предлагают, как понятно из названия, идти «сверху вниз» – не разбирать нейроны по отдельности, а смотреть на паттерны и репрезентации, которые скрыты в латентном пространстве модели. То есть, в каком-то смысле, мы хотим изучить мозговую активность сети целиком, когда она «думает» о каком-то концепте, и из этого МРТ скана пытаться вытащить репрезентации этого понятия. Собственно поэтому основной метод в статье и называется Linear Artificial Tomography (LAT)
В чем этот метод состоит? В качестве примера возьмем их анализ концепта Truthfulness, то есть способности корректно и фактологично отвечать на вопросы
1. Семплируем сколько-то примеров из TruthfulQA. Оборачиваем их в такой промпт:
Consider the amount of truthfulness in the following answer:
Question: <question>
Answer: <answer>
The amount of truthfulness in the answer is
Для decoder-only модели мы смотрим на репрезентацию для последнего токена, так как там и будет зашита какая-то информация о том, как модель себе представляет truthfulnes. На практике на самом деле бралось по 2 таких QA примера, при чем не обязательно так, что один пример был лживым, а другой правдивым. Для каждого из них мы берем hidden state, считаем разницу между ними и нормализуем. После этого шага получаем набор таких вот нормализованных векторов
Внимательный читатель на этом моменте спросит – а с какого слоя мы этот hidden state берем? Авторы об этом пишут как раз только в аппендиксе, но слой они выбирают вручную после серии экспериментов)))) как правило тот, который дает максимальное качество на валидации
2. Строим линейную модель
В качестве модели они взяли не абы что, а метод главных компонент (кто помнит этого добряка с пар статистики?). Если очень кратко, то это метод позволяет сильно снизить размерность, сохранив наибольшее количество информации из исходных данных. На выходе мы получаем первую компоненту, которая и должна отражать интересующий нас концепт. Авторы это называют reading vector
3. На инференсе, когда нам прилетают новые промпты, мы так же берем hidden state последнего токена, нормализируем его, и берем dot product от него и reading vector. На выходе получаем скор truthfulness соответственно
По замерам авторов, это очень хорошо бустит качество на TruthfulQA, который вообще является сложным бенчмарком. Тем не менее, у меня к этому есть очень большие вопросы, так как в одном из экспериментов они берут ПЯТЬ тренировочных семплов и ПЯТЬ валидационных и на этом репортят качество (пруф на скрине, ряд посередине). И вообще это результаты одного из 15 прогонов их модели (!)
part 1/3
- 👍 9
- ❤ 3
- 🔥 3











