Оптимизация производительности OCR: от нейросетей до пластилина

Нейронные сети

Реферат: В эпоху вычислительной мощности С одной стороны, исследователи стремятся постоянно изучать общие сети в различных сценариях, а с другой стороны, они стремятся оптимизировать метод обучения нейронных сетей, пытаясь сократить вычислительные ресурсы, необходимые для ИИ.

Эта статья опубликована в сообществе HUAWEI CLOUD.«Серия по оптимизации производительности OCR (2): от нейронных сетей до пластилина», оригинальный автор: HW007.

OCR относится к распознаванию печатного текста на изображениях.Недавно производительность модели OCR была оптимизирована.Сеть OCR, написанная на основе TensorFlow, была переписана с помощью CudaC, и производительность была улучшена в 5 раз. Благодаря этой работе по оптимизации я получил глубокое понимание общей сетевой структуры сети OCR и связанных с ней методов оптимизации.Я планирую записать ее здесь в виде серии сообщений в блоге в качестве резюме моей недавней работы и учебных заметок. В первой статье «Серия по оптимизации производительности OCR (1): обзор структуры сети BiLSTM» с точки зрения мотивации мы делаем вывод о том, как шаг за шагом строится сеть OCR на основе структуры Seq2Seq. Далее поговорим о переходе от нейронной сети к пластилину.

1. Глубоко копаем CNN: также поговорим о сути машинного обучения

Теперь, начиная с ввода в левом нижнем углу рисунка 1 в серии оптимизации производительности распознавания (1), выполните процесс, показанный на рисунке 1. Первый заключается в вводе 27 изображений фрагментов текста, которые необходимо распознать, и размер каждого изображения составляет 32*132. Эти изображения будут закодированы сетью CNN и выведены 32 предварительные матрицы кодирования 27*384. Как показано ниже:

​Стоит отметить, что на этом шаге происходит корректировка порядка размеров, то есть ввод меняется с 27*(32*132) на 27*(384), это можно понять как вытягивание картинки с размер 32*132. Общий план выравнивается в линию (1*4224), а затем размер уменьшается до 1*384, аналогично примеру уменьшения 1024 до 128 при оптимизации количества вычислений в стратегии оптимизации 1 выше. Как сделать это уменьшение размерности с 27*4224 до 27*384? Самый простой и грубый метод — это приведенная выше модель Y = AX + B, которая напрямую умножает 27 * 4224 на матрицу A 4224 * 384, полученную путем обучения данных. Очевидно, что для одного и того же X Y, полученный разными A, отличается, а размерность от 4224 до 384 немного безжалостна. Поэтому ученые прибегли к Дафа групповых боев.Если одного А недостаточно, то можно получить несколько А. Таким образом, здесь приносится в жертву 32 А. Эти 32 — это длина последовательности сети LSTM позади, которая пропорциональна ширине входного изображения 132. Когда ширина входного изображения становится равной 260, требуется 64 А.

Некоторые люди могут спросить, что вы не видите 32 A, о которых вы говорили в CNN? В самом деле, это всего лишь моя абстракция функций сети CNN. Смысл в том, чтобы дать каждому визуальное представление об изменениях размеров в процессе кодирования CNN и длине последовательности следующего уровня сети LSTM. Зная, что длина последовательности LSTM на самом деле является номером устройства «уменьшения размеров». Если вы более остроумны, то обнаружите, что я даже сказал «уменьшение измерения» неправильно, потому что если сложить вместе результаты 32 «уменьшений измерения», то получится 32*384=12288, что намного больше, чем 4224. Данные проходит через CNN.После сети размерность не только не уменьшилась, а увеличилась! На самом деле, более формальное название этой штуки "энкодер" или "декодер", "редуктор размерности" создан мной в этой статье ради имиджа, неважно как называется кот или ми, надеюсь вы помните что он сутью является матрица коэффициентов А.

Теперь мы все еще следуем идее 32 А. После прохождения сети CNN, на поверхности для каждой текстовой картинки размерность данных изменилась с 32 * 132 до 32 * 384. На поверхности этот объем данных увеличилось, но количество информации не увеличилось. Точно так же, как я подробно представил здесь OCR, независимо от того, увеличивается ли текст, объем информации по-прежнему является принципом OCR, который может улучшить читаемость или интерес. Как сеть CNN достигает бессмыслицы (только увеличивает количество данных, не увеличивая количество информации)? Вот процедура верхнего уровня в модели машинного обучения, научное название которой — «совместное использование параметров». Простой пример, если однажды ваш друг с радостью скажет вам, что у него новое открытие: «Купи 1 яблоко за 5 юаней, купи 2 яблока за 10 юаней и купи 3 яблока за 15 юаней. Долларов…», я верю вы будете сомневаться в его IQ и просто скажете: «Купить n яблок стоит 5 * n долларов», разве это не хорошо? Суть бреда в том, что вместо абстрактных сводок приводятся прямые бредовые примеры к большому количеству избыточных данных. Суть без излишеств в том, чтобы обобщить правила и опыт.Так называемое машинное обучение похоже на этот пример с покупкой яблока.Вы ожидаете дать машине большое количество примеров просто и грубо, а машина может обобщить Правила и опыт. Этот закон и опыт соответствуют приведенному выше примеру OCR, который представляет собой структуру сети и параметры модели в целом. В модельной сети текущий мейнстрим по-прежнему полагается на человеческий интеллект, такой как сеть CNN для сцен с изображениями, сеть RNN для сцен последовательности и так далее. Если структура сети выбрана неправильно, эффект изученной модели будет плохим.

Как и в приведенном выше анализе, на самом деле, с точки зрения структуры, я использую матрицы 32 A размером 4224 * 384, чтобы полностью удовлетворить вышеупомянутые требования CNN по входным и выходным размерам данных, но эффект обученной модели было бы плохо. Потому что теоретически количество параметров матрицы A с 32 4224*384 равно 32*4224*384=51904512. Это означает, что в процессе обучения модель слишком свободна и ее легко усвоить плохо. В приведенном выше примере с покупкой яблок человек, который может изложить этот факт меньшим количеством слов, будет иметь более сильную способность к обобщению, поскольку помимо введения избыточности большее количество слов может внести некоторую нерелевантную информацию, которая будет мешать при использовании этого правила в будущем. Предположим, цену этого яблока можно четко объяснить с помощью 10 слов.Если вы используете 20 слов, весьма вероятно, что ваши остальные 10 слов описывают, например, дождь, время и другую не относящуюся к делу информацию. Это знаменитая «бритва Оккама», не усложняйте простые вещи! В области машинного обучения он в основном используется при проектировании и выборе структуры модели, а «обмен параметрами» является одной из его часто используемых процедур.Проще говоря, если параметры матрицы 32 A 4224 * 384 слишком велики, модель будет Слишком много свободы в обучении, поэтому мы добавим ограничения, чтобы сделать модель менее свободной, и мы должны заставить ее дать понять о покупке яблок в 10 словах. Метод очень простой.Например, если 32 А выглядят абсолютно одинаково, то количество параметров здесь всего 4224*384, что будет уменьшено сразу в 32 раза.Если вы считаете, что уменьшение в 32 раза это слишком жестоко, тогда я немного расслаблюсь.Одно замечание, не обязательно, чтобы эти 32 А были абсолютно одинаковыми, просто они должны выглядеть одинаково.

Здесь я называю эту бритву Дафа: «Вы не узнаете, насколько хороша модель, если не навязываете модель». Некоторые люди могут возразить, хотя я разрешаю вам использовать 20 слов для разъяснения цены Apple, это не исключает возможности того, что вы очень активны, стремитесь к конечному результату и разъясняете его в 10 словах. Если вышеперечисленное может быть покрыто только одной матрицей A, то независимо от того, даю ли я 32 A или 64 A, модель должна выучить точно такую ​​же A. Это утверждение верно в теории, но в настоящее время оно нереалистично.

Чтобы обсудить эту проблему, мы должны вернуться к сути машинного обучения, Все модели можно абстрактно представить как Y = AX, где X — вход модели, Y — выход модели, а A — модель.Обратите внимание, что A в этом абзаце отличается от приведенного выше А, который содержит как структуру модели, так и параметры. Процесс обучения модели заключается в знании X и Y и решении A. Вышеупомянутый вопрос на самом деле состоит в том, является ли решение A единственным? Прежде всего, позвольте мне сделать шаг назад и предположить, что мы думаем, что эта проблема существует в реальном мире, то есть это А существует и уникально в реальном мире, как и законы физики, тогда наши модель может быть обучена на большом количестве данных. Улавливается ли эта закономерность в данных?

Взяв в качестве примера физическое уравнение массы-энергии E=M*C^2, в этой модели структура модели E=M*C^2, а параметром модели является скорость света C. Эту модель, предложенную Эйнштейном, можно назвать кристаллизацией человеческого интеллекта. Если текущий метод ИИ используется для решения этой проблемы, возможны две ситуации: один сильный ИИ, другой слабый ИИ Прежде всего, самый экстремально слабый метод ИИ, который в настоящее время является основным методом ИИ, в основном искусственный. , Небольшая часть машинного интеллекта, в частности, люди находят взаимосвязь между E и M в соответствии со своей собственной мудростью, чтобы удовлетворить шаблону E = M * C ^ 2, а затем скармливают машине много данных E и M. , так что машина может использовать эту модель.Изучен параметр C в M. В этом примере решение C уникально, и пока в машину подается небольшое количество M и C, C может быть решено. Очевидно, что нагрузка на интеллектуальную часть в основном зависит от того, как Эйнштейн удаляет различные беспорядочные факторы, такие как время, температура, влажность и т. д., и определяет, что Е связано только с М и удовлетворяет E=M*C^2. Эта часть работы в настоящее время называется «выбором функций» модели в области машинного обучения, поэтому многие инженеры по машинному обучению в шутку называют себя «инженерами по функциям».

Напротив, ожидание от сильного ИИ должно состоять в том, что мы скармливаем машине много данных, таких как энергия, масса, температура, объем, время, скорость и т. д., и машина скажет мне, что энергия в ней относится только к массе, их отношение равно E=M*C^2, а значение этой константы C равно 3,0*10^8 (м/с). Здесь машина не только изучает структуру модели, но и изучает параметры модели. Для достижения этого эффекта первый шаг, который необходимо выполнить, — это найти обобщенную модель, которая после обработки сможет описать все модельные структуры, существующие в мире, подобно тому, как пластилин можно выдавить в различные формы. Этот пластилин представляет собой нейронную сеть в области ИИ, поэтому многие теоретические книги или курсы по ИИ любят давать вам описание способности нейронных сетей в начале, доказывая, что это пластилин в области ИИ. Теперь, когда у нас есть пластилин, следующий шаг - как его защипнуть. Трудность здесь. Не каждую проблему и каждую сцену в жизни можно идеально представить математической моделью. Даже если этот слой установлен, в этой модели структура Перед ней была обнаружена, никто не знал, как выглядит эта модель, так как же вы попросите машину помочь вам выжать эту форму, которую вы даже не знаете, что это такое? Единственный способ — накормить машину множеством примеров и сказать, что щипок должен уметь ходить, летать и т. д. На самом деле однозначного решения этой проблемы нет, машина может дать вам птичку или немного крепкого за вас. Есть две причины: первая заключается в том, что вы не можете передать машине все возможные примеры, и всегда будет событие «черный лебедь»; другая заключается в том, что если вы загрузите слишком много примеров, вычислительная мощность машины также будет высокой. , что также является причиной того, что нейронная сеть была предложена очень рано, и причина, по которой она стала популярной только в последние несколько лет.

Я надеюсь, что после обсуждения в предыдущем абзаце у вас будет более интуитивное понимание структуры модели и параметров модели машинного обучения. Зная, что если структура модели разработана человеческим интеллектом, а параметры получены с помощью машинного обучения, при условии, что структура модели является точной, например, E = M * C ^ 2 выше, нам нужно только передать машине небольшое количество данных.Даже модели могут иметь хорошие аналитические решения! Но ведь Эйнштейн всего один, так что больше обычные люди вроде нас скармливают машине большое количество примеров, ожидая, что он выдавит форму, которую мы сами не знаем, не говоря уже о красивых свойствах аналитических решений. Студенты, знакомые с процессом обучения машинному обучению, должны знать, что «метод стохастического градиентного спуска», используемый в машинном обучении для замешивания пластилина, с точки зрения непрофессионала, заключается в том, чтобы сначала немного сжать, чтобы увидеть, может ли сжатая вещь соответствовать вашим требованиям (т.е. Скармливайте обучающие данные), если оно не устраивает, зажмите его еще немного, и цикл не остановится, пока не будет соответствовать вашим требованиям. Видно, что сила машины для замешивания пластилина заключается в том, что вымешиваемые вещи не соответствуют вашим требованиям. Это доказывает, что машина - очень "ленивая" вещь После того, как он описал закон ценообразования яблок в 20 словах, у него нет мотивации описывать закон ценообразования яблок в 10 словах. Итак, когда вы не знаете, что вы хотите, чтобы машина выжимала, лучше не давать машине слишком много свободы, так что машина даст вам очень сложную вещь, хотя она может удовлетворить ваши требования, не будет работать очень хорошо, потому что это нарушает закон бритвы. В моделях машинного обучения чем больше количество параметров, тем больше степень свободы и сложнее структура, и возникает явление «переобучения». Таким образом, во многих классических сетевых результатах будут использоваться некоторые методы для «совместного использования параметров» для достижения цели сокращения параметров, такие как метод свертки, используемый в сети CNN для совместного использования параметров, LSTM вводит менее радикальную выходную матрицу C для достижения совместного использования параметров. .

2. Небольшой тест: LSTM ждет вас

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

Как показано выше, сначала посмотрите на вход и выход сети LSTM.Наиболее очевидный вход — 32 27 * 384 фиолетовых матриц, а выход — 32 матрицы 27 * 256, из которых 27 * 256 состоит из двух 27 * 128 соединяются вместе и выводятся прямой сетью LSTM и обратной сетью LSTM соответственно. Для простоты мы пока смотрим только на прямой LSTM В этом случае на входе фактически 32 матрицы 27 * 384, а на выходе — 32 матрицы 27 * 128. В соответствии с проанализированной выше подпрограммой «Уменьшение размера» здесь требуется 32 матрицы размером 384 * 128. Согласно процедуре «обмена параметрами», структура реального отдельного модуля LSTM показана на следующем рисунке:

Как видно из рисунка, реальная единица LSTM представляет собой не простую матрицу A 384 * 128, а выходной узел H предыдущей единицы в последовательности единиц LSTM опускается, а вход X объединяется, чтобы сформировать 27* Ввод 512 умножается на матрицу параметров 512*512, а затем объединяется с выходом управляющего узла C из предыдущей последовательности для обработки полученных данных, уменьшая размерность 512 до 128 измерений и, наконец, получая два выхода, один 27* Новый выходной узел H из 128, один из них — новый управляющий узел C из 27*128. H и C этого нового вывода будут введены в следующий блок LSTM, влияя на вывод следующего блока LSTM.

Здесь видно, что из-за существования матрицы C и матрицы H, даже если матрица параметров 512 * 512 в 32 единицах последовательности LSTM точно такая же, даже если связь между входом H и X каждой единицы отличается. Они одинаковы, но поскольку все они получены путем умножения одной и той же матрицы 512*512, хотя они и не одинаковы, они все же должны быть похожи друг на друга, поскольку следуют набору правил (т. та же матрица 512*512). Здесь мы видим, что LSTM использует выходные данные H и входные данные X предыдущего блока в качестве входных данных и вводит управляющую матрицу C для реализации метода бритвы для достижения цели совместного использования параметров и упрощения модели. Построение этой сетевой структуры также связывает выход текущего модуля последовательности с выходом предыдущего модуля последовательности, что подходит для моделирования сцен последовательности, таких как OCR, NLP, машинный перевод и распознавание речи и т. д.

Здесь мы также видим, что, хотя нейронная сеть представляет собой пластилин, поскольку она не может передать все данные, вычислительная мощность машины не поддерживается, или мы хотим улучшить скорость обучения машины в текущем сценарии приложения ИИ. , Мы все тщательно проектируем сетевую структуру в соответствии с реальными сценариями применения и нашими собственными предварительными знаниями, а затем передаем этот кусок пластилина, почти отщипнутый людьми, машине. Поэтому я предпочитаю называть это эпохой слабого ИИ.В эту эпоху вычислительной мощности, с одной стороны, наши исследователи стремятся постоянно изучать общие сети в различных сценариях, таких как CNN для изображений. , используется для последовательности RNN, LSTM, GRU и т. д., с одной стороны, нацелены на оптимизацию метода обучения нейронных сетей, таких как различные алгоритмы вариантов оптимизации, основанные на SDG, и методы обучения с подкреплением и т. д. Все они пытаются уменьшить потребности ИИ. , вычислительные ресурсы.

Я верю, что усилиями людей наступит эра сильного ИИ.

Нажмите «Подписаться», чтобы впервые узнать о новых технологиях HUAWEI CLOUD~