分享
Lycoris(LoCon LoHA & LoKR)
输入“/”快速插入内容
Lycoris(LoCon LoHA & LoKR)
和Lora一样,这个也是个能节省存储空间,增加训练速度的技术,主要是底层算法的略微区别
怎么用
安装个插件:
https://github.com/KohakuBlueleaf/a1111-sd-webui-lycoris
,然后就能和用Lora一样使用了
LoCon(Lora for Convolution)
整体来说就是LoRa一般只在模型中一部分做学习(cross attention layer),而LoCon对整个模型学习了,这意味着LoCon能学到更多东西,但过拟合现象会更严重一点
原理上和Lora一样也是矩阵的低阶分解,只是Lora用的是全连接层做分解,LoCon用的是卷积层,其实全连接和卷积在一定情况下是能相互转换的,个人感觉这两个没有差别特别多,下面就是locon和lora的效果对比
LoHA(Lora using hadmard product)
效果上来说就是Lora只能学到人物角色,而LoHA在学到人物角色的同时还能把风格也一起学到
在说原理之前先回忆下
lora
说过,矩阵阶数可以用“潜变量空间”维度视角来看,矩阵阶数(空间维度)越高,就能记住越多信息,越低就只能记住越少信息
下面就是LoCon和LoHA的对比,左边四列是LoHA不同训练次数的,右边四列是LoCon相同训练次数和参数的结果
原理上Lora矩阵分解成两个阶数为r的矩阵相乘的做法整体阶数是2r,也就是阶数r的倍数
而LoHA用了哈德曼乘积方法分解,得到最终阶数是
,也就是阶数r的指数倍,所以LoHA能学到更多信息
并且我们看下图左边是Lora分解矩阵(参数个数(m+n)x2R),右边是用LoHA分解(参数个数(m+n)xRx2),二者分解后矩阵参数一样多,所以LoHA是在相同参数下得到了更好的学习效果!
当然大家在训练LoHA如果训练集比较少的时候,过拟合也会严重很多
LoKR(Lora using Kronercker Product)
这里还有一种类似LoHA的技术,也是换了种乘积算法,消息信息的能力
从理论上来说
,应该比Lora好,比LoHA低,但是这个算法关键在于参数比Lora和LoHA少了一些,而一个模型里有很多层级,整体下来文件体积就会小很多了
算是学习能力和文件大小的一种均衡吧
接下来