В този пост бих се съсредоточил върху всички теоретични знания, от които се нуждаете за най-новите тенденции в НЛП. Направих този списък за четене, докато изучавах нови концепции. В следващата публикация ще споделя нещата, които използвам, за да практикувам тези концепции, включително модели на годни и класиране 1 в класациите на състезанията. Използвайте тази връзка, за да стигнете до част 2 (все още предстои).

За ресурси включвам статии, блогове, видеоклипове.

Не е нужно да четете повечето неща. Вашата основна цел трябва да бъде да разберете, че този въпрос е въведен в този документ и аз разбирам как работи, как се сравнява със състоянието на техниката.

през

Тенденция: използвайте по-големи модели, базирани на трансформатори, и решете обучение с много задачи.

Предупреждение: нарастващата тенденция в НЛП е, че ако имате нова идея в НЛП, докато четете някой от документите, ще трябва да използвате огромна изчислителна мощ, за да получите разумни резултати. Така че е ограничено от модели с отворен код.

  1. fastai: - Вече бях гледал видеоклиповете, така че реших, че трябва да го добавя в горната част на списъка.
  • Урок 4 Практическо задълбочено обучение за програмисти. Това ще ви помогне да внедрите езиков модел във fastai.
  • Има урок 12 в част 2 от курса, но той все още не е публикуван официално, така че бих актуализирал връзката, когато се зареди.

2. LSTM: - Въпреки че трансформаторите се използват главно днес, в някои случаи все още можете да използвате LSTM и това беше първият успешен модел, който постигна добри резултати. Трябва да използвате AWD_LSTM сега, ако искате.

  • ДЪЛГОСРОЧНА ПАМЕТ. Достатъчен е един бърз поглед към хартията.
  • Разберете блога на LSTM Networks. Обяснете графично всички подробности за LSTM мрежата.

3. AWD_LSTM: - Предложено е да се преодолее дефицитът на LSTM чрез въвеждане на отпадане между скрити слоеве, отпадане на вграждането, обвързване на тежести. Трябва да използвате AWS_LSTM вместо LSTM.

  • Роля на регуларизацията и оптимизацията на езиковите модели LSTM. AWD_LSTM хартия
  • Официален код на Salesforce
  • изпълнение на fastai

4. Модели на показалеца: - Въпреки че не е необходимо, той е добро четиво. Можете да го възприемате като теория преди вниманието.

  • Роля на моделите за смесване на указател за пазач
  • Официално видео на предишната статия.
  • Подобряване на моделите на невронни езици с непрекъсната роля на кеша

Бонус: Каква е разликата между загуба на тегло и регуларизация? При загуба на тегло, той директно добавя нещо към правилото за актуализация, докато при регулиране се добавя към функцията за загуба. Защо да споменавам това? Най-вероятно DL библиотеките използват weight_decay вместо регуларизация под капака.

В някои от статиите ще видите, че авторите предпочитат SGD пред Адам, цитирайки, че Адам не се представя добре. Причината за това е (може би) PyTorch/Tensorflow правят горната грешка. Това е обяснено подробно в тази публикация.

5. Внимание: просто помнете, че вниманието не е всичко, от което се нуждаете.

Текат много изследвания за направата на по-добри трансформатори, може би ще прочета още статии за това в бъдеще. Някои други трансформатори включват Universal Transformer и Evolved Transformer, които са използвали AutoML за създаване на архитектурата на Transformer.

Причината, поради която новите трансформаторни архитектури не решават проблема. Тъй като имате нужда от езикови модели за вашите NLP задачи, които използват тези преобразуващи блокове. В повечето случаи няма да разполагате с изчислителни ресурси за обучение на тези модели, тъй като е установено, че колкото повече трансформаторни блокове използвате, толкова по-добре. Освен това са ви необходими по-големи партидни размери, за да обучите тези езикови модели, което означава, че трябва да използвате TPU на Nvidia DGX или Google Cloud (поддръжката на PyTorch идва един ден).

6. Случайни ресурси: - Можете да пропуснете този раздел. Но за пълнота предоставям всички ресурси, които използвах.

  • Блог, визуализиращ модел на невронен машинен превод (механика на модела Seq2seq с внимание)
  • Езиково моделиране на ниво характер с по-дълбока хартия за самообслужване.
  • Използване на изходна клавиатура за подобряване на ролята на Langauge Models.
  • Документ за квазипериодични невронни мрежи. Много бърза версия на LSTM. Използвайте конволюционни слоеве, за да направите LSTM изчисленията паралелни. Кодът може да бъде намерен в fastai_library или official_code.
  • Дълбокото обучение на Себастиан Ръдър за NLP Best Practices blog. Колекция от най-добри практики, които да се използват при обучение на LSTM модели.
  • Бележки за съвременните техники за блога за езиково моделиране. Кратко обобщение, където Джеръми Хауърд обобщава някои от неговите трикове, които използва в библиотеката на Фастай.
  • Блог на езикови режими и контекстуализирани вграждания на думи. Предоставя бърз преглед на ELMo, BERT и други модели.
  • Илюстрираните BERT, ELMo и компания. (Как НЛП пропука обучение за трансфер) блог.

7. Многозадачно обучение - наистина съм развълнуван от това. В този случай тренирайте един модел за множество задачи (повече от 10, ако искате). Така вашите данни изглеждат като „превод на английски some_text_in_german“. Вашият модел всъщност се научава да използва първоначалната информация, за да избере задачата, която да изпълни.

  • Преглед на многозадачното обучение в дълбоки невронни мрежи.
  • Десетобой на естествения език: Многозадачно обучение като въпросник.
  • Роля на многозадачността на дълбоки невронни мрежи за разбиране на естествения език.
  • OpenAI GPT е пример за това.

8. PyTorch: - Pytorch предоставя добри уроци, които ви дават добри справки за това как да кодирате повечето неща в NLP. Въпреки че трансформаторите не са в уроците, трябва да ги видите веднъж.

Сега стигнахме до последното разследване в НЛП, което доведе до момента на НЛП в Imagenet. Всичко, което трябва да разберете, е как работи Внимание и готово.

9. ELMo: - Първото изключително проучване, проведено, при което преминахме от предварително обучени вграждания на думи към използване на предварително обучени модели за получаване на вгражданията на думите. Затова използвайте изречението за въвеждане, за да получите вгражданията за символите, присъстващи в изречението.

  • Роля на дълбоки контекстуализирани представяния на думи (роля ELMo)
  • Ако се интересувате от видеото, моля, проверете тази връзка.

10. ULMFit: - Това по-добре ли е от BERT, може би не, но все пак в Kaggle състезания и външни състезания ULMFiT получава първо място.

  • Задаване на универсален езиков модел за класификация на текстовете.
  • Публикацията в блога на Джеръми Хауърд, обявяваща ULMFiT.
  • Обяснено в Урок 10 от най-модерния курс за дълбоко обучение.

11. OpenAI GPT: - Не съм сравнявал BERT с GPT2, но можете да работите върху някакъв комплект, ако искате. Не използвайте GPT1, тъй като BERT е създаден, за да преодолее ограниченията на GPT1.

  • Хартия GPT1, блог, код
  • Хартия GPT2, блог, код
  • Гледайте openai видео на GPT2

12. BERT: - Най-успешният езиков модел в момента (към май 2019 г.).

  • BERT: Дълбоки двупосочни трансформатори Предварително обучение за документ за разбиране на езика.
  • Блог на Google в BERT
  • BERT дисекция Част 1: Блогът на кодера
  • Разбиране на BERT Част 2: Специфичен за BERT блог
  • Дисертация на приложението BERT: Блогът на декодера

За да използвате всички тези модели в PyTorch, трябва да използвате репо hugginface/pytorch_pretrained_BERT, което ви дава пълни реализации, заедно с предварително обучени модели за BERT, GPT1, GPT2, TransformerXL.

13. Следващ блог: - Възможно е да закъснея с писането на следващия блог, затова исках да споделя последния.

  • Намаляване на предишно BERT обучение от 3 дни на 76 минути. Представяме нов оптимизатор за езикови модели, който може значително да намали времето за обучение.

Поздравления за това, че стигнахте до края. Вече имате повечето теоретични знания, необходими за практикуване на НЛП, използвайки най-новите модели и техники.

Какво да правим сега?

Научихте само теорията, сега практикувайте колкото можете. Създайте луди тоалети, ако искате, опитайте се да стигнете до върха на класациите. В момента се мъча да практикувам своите NLP задачи, тъй като съм зает да правя някои проекти за компютърно зрение, които проверявате по-долу или на моя github.

Най-вероятно ще направя последващ пост в средата до края на юни със списък като този, с някои нови техники, които имам предвид да прочета, и неща, които ще направя, за да практикувам.

Ако считате тази публикация за полезна, моля, споделете я с други хора, които биха могли да се възползват от нея, и я потупайте (помага много, може да даде максимум 50 пляскания).

Последвайте ме в Medium, за да получавате последните си публикации в блога във вашата емисия Medium. Моите социални мрежи linkedin, github, twitter.

Моите предишни публикации в блога

  1. AlexNet Обучение със съвети и проверки за това как да се обучава CNN: Практически CNN на PyTorch (1)
  2. Всичко необходимо за трансфер на фотореалистичен стил в PyTorch
  3. SPADE: Състояние на изкуството при превод от изображение към изображение от Nvidia
  4. Стандартизиране на теглото: нова нормализация в града