#contents *概要 [#m3c40dab] **LECOとは [#jd78a5d9] https://github.com/p1atdev/LECO Low-rank adaptation for Erasing COncepts from diffusion models. LoRAメソッドの一つ。事前学習モデルのプロンプトを強めたり、弱めたりできる。 具体的な仕組みとしては、事前学習モデルの持つ任意のワードにピンポイントで働きかけて そのニュアンスや方向性、他のワードとの関係性のみを変化させる。要はプロンプトの解釈に限定した補習。 **既存の学習方式との違い [#n9389971] LoRAとの違い -教師画像は使わない。(事前学習モデルを用い、VRAM上に仮の教師画像を都度生成する) - Textual Inversionとの違い -より特定のプロンプトに特化した強弱調整ができる。 *導入方法 [#ofbffc8f] 配布元の説明を参照。 https://github.com/p1atdev/LECO **スペック要件 [#dea55a97] -学習 --公式推奨VRAM8GB以上 -学習データの使用 従来のLoRAを動かす環境があればOKです。 **導入手順 [#b3f8a429] *学習方法 [#r46e03e8] 学習用の設定ファイルのうち、prompts.yamlの各項目についてわかる範囲でまとめ。加筆・修正求む。 prompts.yaml |~項目|~備考| |- target: "文字列"|LECOの対象となる要素を指定する。| | positive: "文字列"|targetから遠ざけたい要素を指定する。空白の場合、targetの文字列が代入される。&br;カンマを挟んだ複数ワードの列挙だけでなく、長文で記述しても有効。&br;これをプロンプトとして仮の教師画像が生成される。(多分)| | unconditional: "文字列"|positiveに引っ張られたくない(元の相関性を維持したい)要素を指定する。&br;いわゆる「プロンプトに引きずられる」を軽減ないし防止するための項目で、&br;役割としては正則化画像に相当する。| | neutral: "文字列"|targetに対する原点となる要素を指定する。&br;LECOはtargetをpositiveから遠ざけてneutralに近づけようとするが、&br;通常はこれが空白となっているため、無に近づける=結果的に概念が消去される&br;という仕組み。| | action: "erase"|erase、enhanceのどちらかを指定する。&br;eraseの場合は消去、enhanceの場合は付与になる。| | guidance_scale: 1.0|要素に対するLECOの作用倍率。&br;要素ごとの元々の利き具合が乗算されるため、適性値はまちまち。| | resolution: 512|内部生成される仮の教師画像の解像度。| | dynamic_resolution: false|通常はfalse。上で指定したresolutionの値をランダム化する機能。&br;trueの場合、resolutionの値を100%とした一定範囲内で変動する。(多分)| | batch_size: 2|仮の教師画像の同時処理数。| なお、ここでの近づける、遠ざけるという表現はすべてeraseを前提とした表現であり、&br;enhanceで学習させる場合は方向性が逆転します。 *学習データの使い方 [#e6dd59c9] LoRAと同じように使う事で拡散モデルから概念を消去する。要するにその概念が出にくくなる。 消去効果なので、マイナスで使うと反対にその学習された内容が出やすくなる。 大半のLECOは消去(erase)を目的として作成されているものの、 稀に概念の変化や付与(enhance)を目的として作成されているものも存在する。 どちらもプラスとマイナス両対応で正常動作してしまうため、説明書きがあったら事前に読むことをオススメします。 *参考文献 [#ca173498] *コメント・指摘・助言 [#gb37f4e4] #pcomment(,4,reply) >(Tips) -既存コメントの先頭にあるラジオボタンをONにすると、そのコメントの下にぶら下げ返信する形になる(ツリー構造)。 -コメントの文中で↵ボタン(下の画像参照)を押すと「&br;」の文字列が挿入される。これは送信後に改行として機能するので、文章の整形に役立つ。 &ref(wikiwiki編集のコツ/br.png,around,50%);