• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

GPT-2

date: 2022-06-03 excerpt: GPT-2(Generative Pre-trained Transformer 2)の使い方

tag: 機械学習GPT-2Generative Pre-trained Transformer 2


GPT-2の使い方

概要

  • アテンションとトランスフォーマーを利用した強力な言語モデル
  • 公開されているモデルが汎用的なので、few-shot, zero-shot machine learningとして使用できる
  • 使用できるpretrained modelとして、rinnaやtanreinamaなどがある

文章生成タスク

few shotで作成する場合

  • genericなモデルであるGPT-2を利用して入力の最初の方に、few shotのデータを入れることで対応する
  • 具体的には参考になるキーワードと、それからの生成物を入れることで生成が可能になる

入力

input = """
[TITLE]: アマゾン、中国の「キンドル」ストアを来年6月末閉鎖-市場の壁厚く
[CONTENT]: 米アマゾン・ドット・コムは、来年6月末に中国で電子書籍「キンドル」ストアを閉鎖する。現地ライバル企業の壁は厚く、中国市場に大きく食い込めなかった。アマゾンの広報担当者は電子メールで配布した資料で、2023年6月30日に中国のキンドルストアを停止すると説明。キンドルリーダーのサポートは継続、あるいは今年1月以後の機器購入については返金に応じるとした。 

[TITLE]: セブンの“100円コーヒー” 110円に値上げへ
[CONTENT]: セブン‐イレブン・ジャパンは6月3日、「セブンカフェ」商品の値上げを発表した。対象は“100円コーヒー”として親しまれていたレギュラーサイズのホットコーヒー、アイスコーヒーなど。7月4日から順次変更する。

[TITLE]: 「架空商品」メニューに掲載 ドミノ・ピザ「需要調査」に客困惑、識者が指摘する改善点
[CONTENT]: 宅配ピザ大手「ドミノ・ピザ ジャパン」が一部の客に実施しているインターネット調査が、消費者視点に欠けているとしてひんしゅくを買っている。

[TITLE]: キャッシュレス利用率 初の30%超
[CONTENT]: 
"""

Ground Trues

国内のキャッシュレス決済の割合が去年、初めて30%を超えました。
経済産業省によりますと、去年の民間消費に占めるキャッシュレス決済の割合は2020年よりも2.8ポイント増えて32.5%となり、初めて3割を超えました。
決済事業者がポイントを付与するキャンペーンを相次いで実施したことが後押ししたとみられます。

推論されたテキスト

>> セブン&アイ・ホールディングス セブン&アイ・hd傘下のセブン&アイ・ホールディングスが、セブン&アイ・ストアの加盟店を対象に、7月からのカード利用についてアンケート調査を開始することを発表。キャッシュレス利用者は、年々増加しており、38%と好調の傾向。   セブン&アイ・ホールディングス、セブン&アイ・フード&デリ、セブン&アイ・ツー、セブン&アイ・ネットの7社が、セブン銀行のキャッシュレス口座に振り込める金額を、従来の最大で2000万円に引き上げる。 : 電子マネーnanacoの利用率が54%で過去最高 全国紙が特集 セブン銀行は2018年9月18日、セブン-イレブン・ジャパンとセブン銀行が提携して実施した、電子マネーnanacoの利用状況を調査した。

>> セブン&アイ・ホールディングスの「セブン-イレブン」店内で、注文受付システムを使った自動レジを試験運用している。 店舗によっては、レジスタッフに操作を尋ねる必要があるという。 「セブン&アイ」は7月から「レジでのお支払いには、レジ端末で表示されるqrコードを、お客様ご自身のサインに書き換えてお持ちください」というシステムに変更した。 1月23日から24日にかけて実施された消費者意識調査で、20代から60代の主婦や働き盛りの世代に、携帯電話料金の支払いで「携帯料金を払わない」を選択したと答えた人の割合が51.0%になった。調査にはnttドコモが協力した。携帯電話料金の支払いに関する意識調査として「ケータイ料金を払わない」「携帯電話料金を支払った」「支払った」と答えた人のうち54.0%が携帯電話の料金の支払いに携帯料金を支払ったことがわかり、利用者のスマートフォン保有率は8割にのぼった。 コンビニ各社は20〜30歳

>> ローソン、全国4店舗でのキャッシュレスサービスを2020年6月下旬までに開始  楽天市場、ポイント3倍キャンペーン実施  「楽天市場」で、1カ月に10万件の利用があれば、抽選で5000名に楽天スーパーポイントをプレゼント  マクドナルド、1カ月1000円以上の注文があれば、現金3万円をもれなくプレゼント  マクドナルド、1カ月に1000円以上の注文があれば、抽選で2000名に「楽天スーパーポイント」をプレゼント  マクドナルド、1カ月1000円以上の注文があれば、抽選で3000名に1000円分のポイントをプレゼント  ローソン、1カ月に1500円以上購入すれば、抽選で1000名に「1000円分の電子マネー」をプレゼント  マクドナルド、1カ月に3000円以上購入すれば、抽選で1000

>> ローソン・スリーエフが、8月13日からの7日間限定で、クレジットカード決済サービス「paypay(ペイペイ)」を利用した代金引き換えサービスを期間限定で実施する。 ドミノ・ピザが、8月13日からの7日間限定で、クレジットカード決済サービス「paypay(ペイペイ)」を利用した代金引き換えサービスを期間限定で実施する。

Google Colab

  • gtp2-generate-public.ipynb

再学習

  • 日本語のGPT-2モデルではGPUには16GBほどのメモリが必要
  • 具体的な手順については以下のブログを参照
    • 日本語GPT-2モデルを用いて日本語文章を自動生成
  • データセットの2つの区切り方
    • Tokenizerにbegin_of_sentenceとend_of_sentenceの特殊文字を入れて文章を入れて分ける
    • 文章が変更するときは改行コードを2つ入れるなどのルールを作る
  • デフォルトではバリデーションにperplexityを使用している

推論するときのコード

from transformers import T5Tokenizer, AutoModelForCausalLM

# load tokenizer
tokenizer = T5Tokenizer.from_pretrained("rinna/japanese-gpt2-medium")

# fine tuningしたモデルをロード
model = AutoModelForCausalLM.from_pretrained("output/")

input = tokenizer.encode("ねぇ", return_tensors="pt")

# inference
output = model.generate(input,
                         do_sample=True,
                         top_p=0.95,
                         top_k=30,
                         num_return_sequences=5,
                         max_length=len(input[0]) + 200, # max_length=len(input_ids[0]) + 150,
                         bad_words_ids=[[1], [5]])

# inferred output
print(*tokenizer.batch_decode(output), sep="\n")

300ほどのコーパスで学習した例

 - default
なによその</s>こぶ ねむり なな と」。 「女はみなさんに なってみましょう
なによその</s>さめじ』:明治12年(1879年)1月27日 - 明治33年(1900年)10
なによその</s>わはは あかんおきゃく そいつが! なによ あかんおきゃく
 - retrain
なによその</s>そっけない態度はぁ~...。今から思えば、ちょっとしたわがままだったかな...。今度
なによその</s>態度はぁ~...。私がそんな事言っちゃ、いけないんだからっ!...いや、それもあるけど
なによその</s>食い逃げ! 」「うわぁぁぁぁん! もぉー! あぁん!! 

参考

  • GPT-2/Wikipedia


機械学習GPT-2Generative Pre-trained Transformer 2 Share Tweet