GENZITSU / UsefulMaterials

34 stars 0 forks source link

almost weekly useful materials - 04/12 - #130

Open GENZITSU opened 1 year ago

GENZITSU commented 1 year ago

大規模言語モデルの知識を補完するための Retriever の紹介

大規模言語モデルが回答に必要とする知識を取捨選択する機構、Retrieverの代表的な研究事例を紹介している記事。

着想

方法① 明示的なラベルを利用する方法

Dense Passage Retrieval for Open-Domain Question Answering (Karpukhin+ EMNLP2020)

SquAD以外のデータではRetrieヴェrによる学習で精度向上がみられている

スクリーンショット 2023-04-01 9 23 01

方法②: End-to-Endで学習させる

Retrieval-Augmented Generation for Knowledge-Intensive [NLP](http://d.hatena.ne.jp/keyword/NLP) Tasks (Lewis+ NeurIPS2020)

スクリーンショット 2023-04-01 9 24 53

③ 対照学習による学習

Unsupervised dense information retrieval with contrastive learning (Izacard+ Transactions on Machine Learning Research 2022)

コード

スクリーンショット 2023-04-01 10 16 12

スクリーンショット 2023-04-01 10 19 36

スクリーンショット 2023-04-01 10 18 35

④: LLMの出力を利用する

REPLUG: Retrieval-Augmented Black-Box Language Models (Shi+ 2023)

スクリーンショット 2023-04-01 10 26 38

スクリーンショット 2023-04-01 10 26 45

コメント

Retrieverを訓練するという発想が全くなかったので、とても勉強になった。とはいえ、自分で利用する際はopenaiのembedding → openaiのembedding+BM25 → Retrieverというステップを踏むことになりそう。

出典

大規模言語モデルの知識を補完するための Retriever の紹介

GENZITSU commented 1 year ago

【ChatGPT】個人的お気に入りプロンプトまとめ

ChatGPTに何かを依頼する際のテンプレプロンプトが13個ほどまとめられている

コメント

みてみると大体形が決まっていることがよくわかる。

とりあえずメモ

出典

GENZITSU commented 1 year ago

【知財・個人情報】ChatGPTをビジネスに利用する際の注意点 ['23/4/3]

ChatGPTの入出力に関する落とし穴をまとめてくれている記事

個人的に気になった点は以下

ChatGPTの利用規約

出力に関するすべての権利、所有権、および利益はChatGPT利用者に譲渡されます。 APIを経由して送受信するコンテンツはサービスの開発または改善に利用されません。 一方、API以外のサービスで送受信するコンテンツはサービスの開発または改善に利用されるようです。API以外のサービスで入力したデータをサービス改善に利用されたくない場合はオプトアウトを申請できます。

個人的にはAPIに関する文言を行為的に解釈して、秘密保持契約を結んでいない範囲の社外秘のデータを送信するケースが散見されるようになってきたと思う

個人情報の入力

個人情報を処理する場合は、法令に従ってプライバシー通知を行い、同意を得る必要があります。また、適用している法令に従って個人情報を処理していることをOpenAI社に表明する必要があります。

OpenAI社のプライバシーポリシーによると、コンテンツ内に含まれる個人情報も収集されるようです。個人情報の利用目的には、新しいプログラムやサービスを開発することも含まれています。プライバシーポリシーはAPIを利用した場合には適用されません。詳しくは引用元をご確認ください。

自分の個人情報を入れる分には良いけど、人からもらって物を送るのはよした方が良さそう

著作権・商標権に関する注意点

他者の著作物をChatGPTに入力してしまうと、OpenAI社のサーバー(または社内のデータベース)に記録されるため、これは著作物の複製に該当します。しかし、適法利用の範囲であれば電子計算機における著作物の利用に伴う複製(著作権法第四十七条の四)とみなされて適法になるようです。

情報解析用途というのがふんわりしているが、節度を持った利用が必要そう。

他者の著作物を翻訳・編曲・変形・脚色・映画化等し、二次的著作物を創作する行為は、著作者の了解を得なければなりません。これを怠ると翻訳権、翻案権等の侵害になります。

たとえば勝手に翻訳して、それを販売とかすると問題になりそう。

あとは生成されたものがたまたま他の人の著作物だったり、それに類するものだったりすることもあるのでそれのチェックも必要そう。

コメント

正直法令や規制が追い付いていない感じはするが、あまりヤンチャなことはしないように意識しておきたい。

出典

GENZITSU commented 1 year ago

Reproducibility in pytorch

os.environ['PYTHONHASHSEED'] による再現性の確保ができない旨を報告したディスカッション

原因としてはPYTHONHASHSEEDはPythonのインタープリターが立ち上がる際に利用されるもので、立ち上がった後にプログラム上で設定しても遅いということが報告されている

PYTHONHASHSEED has to be set to 0 before Python even starts. The Python interpreter uses this environment variable only upon startup. So even at the beginning of your program, it's too late. The solution would be for Kaggle to set PYTHONHASHSEED when it starts Jupyter, like Colab does. Otherwise, if any part of your program uses Python's hash (or calls a library that does), the result will vary. You can try sorting your own sets to put things back in a deterministic order, but that won't help if the libs you rely on do not sort things.

実際に固定したい場合は、プログラム外の環境変数で先に縛っておく必要がある

コメント

小ネタだけど盲目的に書いていたので、勉強になった。

出典

GENZITSU commented 1 year ago

ChatGPT API+LangChain+Gradioでキャラクターとお話するアプリを作る

表題の通り

LangChainには直近の会話を保存して、会話を続けるためのインターフェースが提供されているようで、それを用いることで簡単に一貫性を保った会話を行えるようにできる

# from https://qiita.com/tkmrsksk/items/7362f183138dfb324c50

# チャットモデル
llm = ChatOpenAI(
    temperature=0, 
    model_name="gpt-3.5-turbo", 
    streaming=True, 
    callback_manager=CallbackManager([StreamingStdOutCallbackHandler()])
)

# メモリ
memory = ConversationBufferWindowMemory(k=3, return_messages=True)

# 会話チェーン
conversation = ConversationChain(memory=memory, prompt=prompt, llm=llm)

コメント

LangChaingめっちゃ整ってるなという感想

出典

GENZITSU commented 1 year ago

GPT-4の表現は、核サンプリング(top_p)でどう変わるのか

GPT4 / もといGPT3.5のリクエストパラメータtop_pを変えることで出力がどう変わるかを調べている記事

デフォルトでは1になっているところを0.9 ~ 0.98あたりに抑えることで、Temperatureを大きくしても文章が方向しにくくなるようにできる模様

コメント

公式documentではtemperatureとtop_pを同時にいじることを推奨していなかったが、雑談のようなランダム性を持たせつつ会話を咆哮させないようにしたい盤面だと、temperatureを上げて、top_pを下げるみたいなことが有効になりそう。

出典

GENZITSU commented 1 year ago

輪読会を1Q通して運営してみて

全員が読んでおいて、当日は気になるところを議論するスタイル、良さそう

事前準備:
1. 該当章をあらかじめ各々で読んでおく
2. 読んでいて思ったことや関連するアイデアを Miro (オンラインホワイトボード)に付箋コメントとして書き起こす

当日:
1. 深堀りしたい付箋コメントに 1人 3票,4分で投票する
2. 似ているコメントをグループ化し、グループごとに得票の多いものから議論する
3. 議論後、自分達のチームに何を持ち帰れるかを言語化してみる
4. 必要に応じてworking agreementに加筆、あるいはチーム内で方針を合意する

コメント

人数が多くなると、聞くだけ(聞いてくれるのはまだましで、いるだけの人もいる)で議論に参加してくれない人が増えてきて、発表者が萎える & 参加者も実にならないみたいなことがよく発生していたので、こういうやり方に落ち着くのはある種必然か...

出典

GENZITSU commented 1 year ago

Agent and small LLM validation

LLM Meetup Tokyo #1にて発表された、軽量LLMでReActが動くかどうかの検証結果の共有

現状の軽量モデルをmac bookで動かせるように4bit量子化させたものだと適応は難しく、GPT6.7B程度のサイズが最低でも必要っぽい

スクリーンショット 2023-04-11 9 49 33

スクリーンショット 2023-04-11 9 49 56

スクリーンショット 2023-04-11 9 50 04

スクリーンショット 2023-04-11 9 50 32

コメント

面白い検証

出典

GENZITSU commented 1 year ago

微分可能な検索インデックスについて

LLMをfinetuningすることでクエリ文章に関連した文書IDを生成させるようにする微分可能な検索インデックス(Differentiable Search Index)を紹介しているスライド。

Differentiable Search Indexでは以下のように、文書から文書IDを生成する機構と、クエリから関連文書IDを生成する機構を備えている。

スクリーンショット 2023-04-12 10 16 12

ここで生成させる文章IDは検索対象をクラスタリングしておきトライ木構造で文書IDを再起的に割り振ることで、似たような文章は似たような単語の並びになるようにすることで、意味のあるIDにしていることがポイント。

スクリーンショット 2023-04-12 10 10 50

コメント

LLMと組み合わせで考えるとRetiriverの1手法として利用できそう。バカでかLLMに入れる関連文書をとってくるために、軽量LLMをこの手法で訓練して関連文書引っ張ってきて生成させるみたいな利用になるのだろうか。

出典

GENZITSU commented 1 year ago

OKRに書ける!知っておくだけでAWSコストをすぐ削減できる26個のヒント

CloudWawtch Logs / Lambda / DynamoDB / Aurora / NAT Gateway / API Gateway / S3 などに関するコスト削減tipsがまとめられている

コメント

本質情報っぽい

出典