Статус: Архив (код предоставляется как есть, обновления не ожидают)
Берт-Керас
Реализация Keras Google Bert (двунаправленные представления энкодера от трансформаторов) и LM Openai, способные загружать предварительные модели с помощью API -API.
Обновление : с поддержкой TPU как для вывода, так и для обучения, подобного этой записной книжке Colab благодаря @highcwu
Как его использовать?
# this is a pseudo code you can read an actual working example in tutorial.ipynb or the colab notebook
text_encoder = MyTextEncoder ( ** my_text_encoder_params ) # you create a text encoder (sentence piece and openai's bpe are included)
lm_generator = lm_generator ( text_encoder , ** lm_generator_params ) # this is essentially your data reader (single sentence and double sentence reader with masking and is_next label are included)
task_meta_datas = [ lm_task , classification_task , pos_task ] # these are your tasks (the lm_generator must generate the labels for these tasks too)
encoder_model = create_transformer ( ** encoder_params ) # or you could simply load_openai() or you could write your own encoder(BiLSTM for example)
trained_model = train_model ( encoder_model , task_meta_datas , lm_generator , ** training_params ) # it does both pretraing and finetuning
trained_model . save_weights ( 'my_awesome_model' ) # save it
model = load_model ( 'my_awesome_model' , encoder_model ) # load it later and use it!
Примечания
- Общая идея этой библиотеки состоит в том, чтобы использовать предварительную модель Openai/Google для обучения передачи
- Чтобы увидеть, как работает модель BERT, вы можете проверить эту ноутбук Colab
- Чтобы быть совместимым как с BERT, так и с OpenAI, мне пришлось принять стандартный заказ для словаря, я использую OpenAI, поэтому в функции загрузки BERT есть часть для изменения порядка; Но это деталь реализации, и вы можете игнорировать ее!
- Модель загрузки Openai тестируется как с Tensorflow, так и с Theano в качестве бэкэнда
- Загрузка модели BERT еще невозможна в Backend Theano, но версия TF работает, и она была протестирована
- Обучение и точная настройка модели невозможно с бэкэдом Theano, но отлично работает с Tensorflow
- Вы можете использовать генератор данных и метаданные задачи для большинства задач NLP, и вы можете использовать их в других структурах
- Есть несколько модульных тестов как для набора данных, так и для модели трансформатора (прочитайте их, если вы не уверены в чем -то)
- Даже тяжело, мне не нравится мой код кераса, он читается :)
- Вы можете использовать другие кодеры, такие как LSTM или Biqrnn для обучения, если вы следите за контрактом на модель (имеете те же входы и выходы, что и энкодер трансформатора)
- Почему я должен использовать это вместо официального выпуска?, Сначала этот в Керасе, а во-вторых, у него хорошая абстракция над задачами НЛП на уровне токена и на уровне предложений, которые являются независимыми структурой
- Почему керас? Версия Pytorch уже вышла! (Кстати, вы можете использовать этот генератор данных для обучения и точной настройки этой модели) тоже)
- Я настоятельно рекомендую вам прочитать Tutorial.ipynb (мне не нравятся записные книжки, так что это плохо разработанная ноутбука, но все равно прочитайте его)
Важные концепции кода
- Задача: Есть две общие задачи, задачи уровня предложений (например, анализ IS_NEXT и настроения) и задачи уровня токена (например, POS и NER)
- Предложение: предложение представляет собой пример с его этикетками и всем остальным, для каждой задачи оно предоставляет цель (одиночный для задач уровня предложения и за эти маркировку для задач токенов) и маска, для уровней токенов нам необходимо не только игнорировать прокладки, но и мы можем захотеть предсказать класс на первом отчал. Берт Паэпр)
- Занятие WewseScheduler: Для обучения мы могли бы начать с языкового моделирования и плавно перейти к классификации, их можно легко реализовать с помощью этого класса
- Внимание_MASK: При этом вы можете 1. Принесите свою модель причинного 2.IGNORE PADDINGS 3. С вашей сумасшедшей идеей: D
- Special_tokens: Pad, Start, End, Delimiter, Mask
Владение
Нейрон