Paul C's Blog

To be funny,to grow up!

0%

[1] 针对在程序功能无关区域添加修改的一类对抗样本攻击, 利用模型解释技术提取端到端恶意代码检测模型的决策依据作为特征, 进而通过异常检测方法准确识别对抗样本. 该方法作为恶意代码检测模型的附加模块, 不需要对原有模型做修改,

[2]建立了一种多尺度卷积核混合的卷积神经网络(Convolutional Neu⁃ ral Network,CNN)架构,以提高恶意代码识别能力. 该模型运用具有捷径(shortcut)结构的深度大内核卷积和标准小内 核卷积相结合的混合卷积核(Mixed Kernels,MK)模块,以提高模型准确率;在此基础上,通过多尺度内核融合(Multiscale Kernel Fusion,MKF),以降低模型参数量;再结合特征重组(feature shuffle)操作,实现优化特征通信,在不增加模 型参数量的前提下提升了分类精度 。

[3]设计 APT 恶意 软件基因模型和基因相似度检测算法构建恶意行为基因库,

[4] . 针对目前研究仅着眼于提升模型分类准确率而忽略了恶意代码检测的时效性 。将多尺度恶意 代码特征融合与通道注意力机制结合,增强关键特征表达,并使用数据增强技术改善数据集类别不平衡问题 ,检测速度快。

[5]生成概率 CFG,其中顶点代表操作码,操作码之间的边代表这些操作码在文件中出现的概率。。。。

[6]可视化方法生成的恶意软件图像并没有保留语义和统计属性,尺寸小且统一。 本文给出了提取内容和填充模式的定义,以表征恶意软件可视化任务的关键因素,并提出了一种新的基于汇编指令和马尔可夫传递矩阵的恶意软件可视化方法来表征恶意软件。 因此,提出了一种基于三通道可视化和深度学习(MCTVD)的恶意软件分类方法。。。。

[7]通过实施 CNN 模型和迁移学习 (TL,MobileNetV2 和 ResNet-50 模型) 进行恶意软件分类的深度学习,以克服基于 DL 的恶意软件检测模型中的常见问题,包括过度拟合、高资源消耗和无法检测混淆的恶意软件。本文提出的模型检测混淆的能力强。。。。

[8]提出了提高特征表示质量的两种新机制。一是通过重新解释user-defined function calls的操作码序列来捕获这些函数调用的语义;二是将文字信息整合到函数调用图FCG的嵌入中,以实现更好的判别能力。在静态检测的背景下,通过采用所提出的两种机制,五个广泛采用的分类器对恶意软件家族分类的准确率平均提高了 2%。。。。(表示)

[9]

[1] 田志成, 张伟哲, 乔延臣, 等. 基于模型解释的 PE 文件对抗性恶意代码检测[J]. 软件学报, 2023, 34(4): 1926-1943.

[2] 张丹丹, 宋亚飞, 刘曙. MalMKNet:一种用于恶意代码分类的多尺度卷积神经网络[J]. 电子学报, DOI: 10.12263/DZXB.20221069.

[3]陈伟翔, 任怡彤, 肖岩军, 等. 面向 APT 家族分析的攻击路径预测方法研究[J]. Journal of Cyber Security 信息安全学报, 2023, 8(1).

[4] 王硕, 王坚, 王亚男, 等. 一种基于特征融合的恶意代码快速检测方法[J]. 电子学报, 2023, 51(1): 57-66.

[5] shah, I.A., Mehmood, A., Khan, A.N. et al. HeuCrip: a malware detection approach for internet of battlefield things. Cluster Comput 26, 977–992 (2023). https://doi.org/10.1007/s10586-022-03618-y

[6] Deng H, Guo C, Shen G, et al. MCTVD: A malware classification method based on three-channel visualization and deep learning[J]. Computers & Security, 2023, 126: 103084.

[7] Habibi O, Chemmakha M, Lazaar M. Performance Evaluation of CNN and Pre-trained Models for Malware Classification[J]. Arabian Journal for Science and Engineering, 2023: 1-15.

[8] Wu C Y, Ban T, Cheng S M, et al. IoT malware classification based on reinterpreted function-call graphs[J]. Computers & Security, 2023, 125: 103060.

[9] Malhotra V, Potika K, Stamp M. A Comparison of Graph Neural Networks for Malware Classification[J]. arXiv preprint arXiv:2303.12812, 2023.

https://arxiv.org/pdf/2303.12812

[10] Chaganti R, Ravi V, Pham T D. A multi-view feature fusion approach for effective malware classification using Deep Learning[J]. Journal of Information Security and Applications, 2023, 72: 103402.

https://www.researchgate.net/profile/Vinayakumar-Ravi/publication/366323708_A_multi-view_feature_fusion_approach_for_effective_malware_classification_using_Deep_Learning/links/639c5704e42faa7e75cad9c6/A-multi-view-feature-fusion-approach-for-effective-malware-classification-using-Deep-Learning.pdf

[11] 利用节表的注入欺骗分类模型。da Silva A A, Pamplona Segundo M. On deceiving malware classification with section injection[J]. Machine Learning and Knowledge Extraction, 2023, 5(1): 144-168.

https://www.mdpi.com/2504-4990/5/1/9

[12]

Ravi V, Alazab M. Attention‐based convolutional neural network deep learning approach for robust malware classification[J]. Computational Intelligence, 2023, 39(1): 145-168.

https://www.researchgate.net/profile/Vinayakumar-Ravi/publication/363834604_Attention-based_convolutional_neural_network_deep_learning_approach_for_robust_malware_classification/links/634ba0e376e39959d6c627dc/Attention-based-convolutional-neural-network-deep-learning-approach-for-robust-malware-classification.pdf

[13]动态权重值的联邦学习分类安卓恶意软件方法

Chaudhuri A, Nandi A, Pradhan B. A Dynamic Weighted Federated Learning for Android Malware Classification[M]//Soft Computing: Theories and Applications: Proceedings of SoCTA 2022. Singapore: Springer Nature Singapore, 2023: 147-159.

https://arxiv.org/pdf/2211.12874

[14]增强勒索软件分类,通过多阶段特征提取和数据不平衡的校正

Onwuegbuche F C, Delia A. Enhancing Ransomware Classification with Multi-Stage Feature Selection and Data Imbalance Correction[J].

[15]

[16]

[17]

[18]

[19]

[20]

去混淆工具使用

使用下面这条命令快速去混淆。

Get-Content .\Demo\DBOdemo*.ps1 | Measure-RvoObfuscation -Verbose -OutputToDisk

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Import-Module .\Revoke-Obfuscation.psd1


下列命令可以针对EID 4104脚本块日志执行分析检测:

Get-RvoScriptBlock -Path 'C:\Windows\System32\Winevt\Logs\Microsoft-Windows-PowerShell%4Operational.evtx' -Verbose

Get-ChildItem .\Demo\demo.evtx | Get-RvoScriptBlock -Verbose

Get-WinEvent -LogName Microsoft-Windows-PowerShell/Operational | Get-RvoScriptBlock -Verbose
下列命令可以针对demo.evtx中的数据记录执行完整检测:

$obfResults = Get-WinEvent -Path .\Demo\demo.evtx | Get-RvoScriptBlock | Measure-RvoObfuscation -OutputToDisk -Verbose
下列命令可以对本地或远程托管的测试脚本执行检测:

Measure-RvoObfuscation -Url 'http://bit.ly/DBOdemo1' -Verbose -OutputToDisk

Get-Content .\Demo\DBOdemo*.ps1 | Measure-RvoObfuscation -Verbose -OutputToDisk

Get-ChildItem .\Demo\DBOdemo*.ps1 | Measure-RvoObfuscation -Verbose -OutputToDisk

1.伪装vc++5.0代码:
PUSH EBP
MOV EBP,ESP
PUSH -1
push 111111 -___
PUSH 111111 -/ 在这段代码中类似这样的操作数可以乱填
MOV EAX,DWORD PTR FS:[0]
PUSH EAX
MOV DWORD PTR FS:[0],ESP
ADD ESP,-6C
PUSH EBX
PUSH ESI
PUSH EDI
nop
jmp 原入口地址


2.胡乱跳转代码:
push ebp
mov ebp,esp
inc ecx
push edx
ADD ESP,-6C
nop
pop edx
dec ecx
pop ebp
ADD ESP,6C
inc ecx
loop somewhere /跳转到上面那段代码地址去!

somewhere:
nop /“胡乱”跳转的开始…
jmp 下一个jmp的地址 /在附近随意跳
jmp … /…
jmp 原入口地址 /跳到原始oep


3.伪装c++代码:
push eax
mov ebp,esp
push -1
push 111111
push 111111
mov eax,fs:[0]
push eax
mov fs:[0],esp
pop eax
mov fs:[0],eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax
nop
nop
jmp 原入口地址


4.伪装Microsoft Visual C++ 6.0代码:

PUSH -1
PUSH 0
PUSH 0
MOV EAX,DWORD PTR FS:[0]
PUSH EAX
MOV DWORD PTR FS:[0],ESP
SUB ESP,1
PUSH EBX
PUSH ESI
PUSH EDI
POP EAX
POP EAX
nop
POP EAX
nop
ADD ESP,1
POP EAX
MOV DWORD PTR FS:[0],EAX
POP EAX
POP EAX
nop
POP EAX
nop
POP EAX
MOV EBP,EAX
JMP 原入口地址


5.伪装防杀精灵一号防杀代码:
push ebp
mov ebp,esp
push -1
push 666666
push 888888
mov eax,dword ptr fs:[0]
nop
mov dword ptr fs:[0],esp
nop
mov dword ptr fs:[0],eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax
jmp 原入口地址


6.伪装防杀精灵二号防杀代码:
push ebp
mov ebp,esp
push -1
push 0
push 0
mov eax,dword ptr fs:[0]
push eax
mov dword ptr fs:[0],esp
sub esp,68
push ebx
push esi
push edi
pop eax
pop eax
pop eax
add esp,68
pop eax
mov dword ptr fs:[0],eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax
jmp 原入口地址


7.伪装木马彩衣(无限复活袍)代码:
PUSH EBP
MOV EBP,ESP
PUSH -1
push 415448 -___
PUSH 4021A8 -/ 在这段代码中类似这样的操作数可以乱填
MOV EAX,DWORD PTR FS:[0]
PUSH EAX
MOV DWORD PTR FS:[0],ESP
ADD ESP,-6C
PUSH EBX
PUSH ESI
PUSH EDI
ADD BYTE PTR DS:[EAX],AL /这条指令可以不要!
jo 原入口地址
jno 原入口地址
call 下一地址


8.伪装木马彩衣(虾米披风)代码:
push ebp
nop
nop
mov ebp,esp
inc ecx
nop
push edx
nop
nop
pop edx
nop
pop ebp
inc ecx
loop somewhere /跳转到下面那段代码地址去!

someshere:
nop /“胡乱”跳转的开始…
jmp 下一个jmp的地址 /在附近随意跳
jmp … /…
jmp 原入口的地址 /跳到原始oep


9.伪装花花添加器(神话)代码:—————-根据C++改
nop
nop
nop
mov ebp,esp
push -1
push 111111
push 222222
mov eax,dword ptr fs:[0]
push eax
mov dword ptr fs:[0],esp
pop eax
mov dword ptr fs:[0],eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax
mov eax,原入口地址
push eax
retn


10.伪装花花添加器(无极)代码:
nop
mov ebp, esp
push -1
push 0A2C2A
push 0D9038
mov eax, fs:[0]
push eax
mov fs:[0], esp
pop eax
mov fs:[0], eax
pop eax
pop eax
pop eax
pop eax
mov ebp, eax
mov eax, 原入口地址
jmp eax


11.伪装花花添加器(金刚)代码:————根据VC++5.0改
nop
nop
mov ebp, esp
push -1
push 415448
push 4021A8
mov eax, fs:[0]
push eax
mov fs:[0], esp
add esp, -6C
push ebx
push esi
push edi
add [eax], al
mov eax,原入口地址
jmp eax


12.伪装花花添加器(杀破浪)代码:
nop
mov ebp, esp
push -1
push 0
push 0
mov eax, fs:[0]
push eax
mov fs:[0], esp
sub esp, 68
push ebx
push esi
push edi
pop eax
pop eax
pop eax
add esp, 68
pop eax
mov fs:[0], eax
pop eax
pop eax
pop eax
pop eax
mov ebp, eax
mov eax, 原入口地址
jmp eax


12.伪装花花添加器(痴情大圣)代码:
nop
……….省略N行nop
nop
push ebp
mov ebp, esp
add esp, -0C
add esp, 0C
mov eax, 原入口地址
push eax
retn


13.伪装花花添加器(如果*爱)代码:
nop
……..省略N行nop
nop
push ebp
mov ebp, esp
inc ecx
push edx
nop
pop edx
dec ecx
pop ebp
inc ecx
mov eax, 原入口地址
jmp eax


14.伪装PEtite 2.2 -> Ian Luck代码:
mov eax,0040E000
push 004153F3
push dword ptr fs:[0]
mov dword ptr fs:[0],esp
pushfw
pushad
push eax
xor ebx,ebx
pop eax
popad
popfw
pop dword ptr fs:[0]
pop eax
jmp 原入口地址 '执行到程序的原有OEP


15.无效PE文件代码:
push ebp
mov ebp,esp
inc ecx
push edx
nop
pop edx
dec ecx
pop ebp
inc ecx
MOV DWORD PTR FS:[0],EAX \
POP EAX |
POP EAX \
MOV DWORD PTR FS:[0],EAX |(注意了。。花指令)
POP EAX /
POP EAX |
MOV DWORD PTR FS:[0],EAX /
loop 原入口地址


16.伪装防杀精灵终极防杀代码:
push ebp
mov ebp,esp
add esp,-0C
add esp,0C
push eax
jmp 原入口地址


17.伪装木马彩衣(金色鱼锦衣)花代码
push ebp
mov ebp,esp
add esp,-0C
add esp,0C
mov eax,原入口地址
push eax
retn


18.
在mov ebp,eax
后面加上
PUSH EAX
POP EAX


19.伪装UPX花指令代码:

pushad
mov esi,m.0044D000
lea edi,dword ptr ds:[esi+FFFB4000]
push edi
or ebp,FFFFFFFF
jmp short m.00477F2A


20.
push ebp
mov ebp,esp
inc ecx
push edx
pop edx
dec ecx
pop ebp
inc ecx
jmp 原入口

21、
push ebp
nop
nop
mov ebp,esp
inc ecx
nop
push edx
nop
nop
pop edx
nop
pop ebp
inc ecx
loop A1地址
nop
nop

A1:push ebp
mov ebp,esp
jo 原入口
jno 原入口


【深层】伪装 WCRT Library (Visual C++) DLL Method 1 -> Jibz
黑吧代码 + 汇编代码:
使用黑吧粘贴以下代码:

55 8B EC 83 7D 0C 01 75 41 A1 C0 30 00 10 85 C0 74 0A FF D0 85 C0 75 04 6A FE EB 17 68 0C 30 00 10 68 08 30 00 10 E8 89 00 00 00 85 C0 59 59 74 08 6A FD FF 15 08 20 00 10 68 04 30 00 10 68 00 30 00 10 E8 52 00 00 00 59 59

粘贴完毕后,再添加2行汇编语句:

jmp 原入口地址 '执行到程序的原有OEP

retn 0C


发布几个不常见的花指令

B1 01 mov cl,1
2C 90 sub al,90
95 xchg eax,ebp
4D dec ebp
65:42 inc edx
40 inc eax
20C4 and ah,al
8350 06 6E adc dword ptr ds:[eax+6],6E
226A E4 and ch,byte ptr ds:[edx-1C]
E8 B15FBC5B call 入口点

55 push ebp
8BEC mov ebp,esp
51 push ecx
53 push ebx
8BD8 mov ebx,eax
8BC3 mov eax,ebx
04 9F add al,9F
2C 1A sub al,1A
73 03 jnb 入口点

JMP SHORT test.00414FB5 (EB 01)
NOP
JMP SHORT test.00414FB8 (EB 01)
NOP
JMP SHORT test.00414FBB (EB 01)
NOP
JMP test. (EB 01)

90=c4

PUSH EBP
MOVE EBP,ESP
inc ecx
push eax
pop eax
push edx
pop edx
dec ecx
sub eax,-2
ADD ESP,68
DEC eax
DEC eax
SUB ESP,68
JPE 入口
JPO 入口

  1. NOP:这个指令代表“无操作”,通常被用作占位符或在程序中创建延迟。

  2. LEA:这个指令代表“加载有效地址”,将某个值的地址加载到一个寄存器中,而不是加载这个值本身。

TEB

(Thread Environment Block,线程环境块)

偏移

000

004

008

00C

010

014

018

020

024

02C

030
说明

指向SEH链指针

线程堆栈顶部

线程堆栈底部

SubSystemTib

FiberData

ArbitraryUserPointer

FS段寄存器在内存中的镜像

进程PID

线程ID

指向线程局部存储指针

PEB结构地址(进程结构)
034 上个错误号

异常处理的优先级

  1. VEH 向量化异常处理 VectoredExceptionHandler
  2. SEH 结构化异常处理
  3. UEF UnhandledExceptionFilter
  4. VCH VectoredContinueHandler

https://www.cnblogs.com/yilang/p/11850734.html

GPSCode-06

  • Hanwei Xu, Yujun Chen, Yulun Du, Nan Shao, Wang Yanggang, Haiyu Li, and Zhilin Yang. 2022. GPS: Genetic Prompt Search for Efficient Few-Shot Learning. In Proceedings of the 2022 Conference on Empirical Methods in Natural Language Processing, pages 8162–8171, Abu Dhabi, United Arab Emirates. Association for Computational Linguistics.

背景

用自然语言指令设置提示词,可以提高零样本设置中大型语言模型的任务性能。当前工作通过手动重写或基于梯度的调整来改进此类提示词。 然而,

手动重写非常耗时并且需要主观解释,

而基于梯度的调整对于大型模型的计算要求极高,并且需要完全访问模型权重,这对于基于 API 的模型可能不可用。

基于提示词的方法有利于小样本泛化,但是之前的都是手动设置,与之前的T0等方法不同,本文将各种来源的提示词作为种子,用遗传算法去进行提示词搜索,无须参数、无须梯度。

术语介绍

intrinsic dimension(本征维): 在多维信号的信号处理中,信号的本征维描述了生成信号的良好近似需要多少变量。

Ablation Study(消融实验): 在深度学习论文中,ablation study往往是在论文最终提出的模型上,减少一些改进特征(如减少几层网络等),以验证相应改进特征的必要性。

LM-BFF 5:: better few-shot fine-tuning of language models ,更好的适合小样本微调的语言模型。

DINO[22]:通过指令获得数据集的方法,Datasets from Instructions

T0:多任务encoder-decoder模型,针对不同下游任务,人为设计不同的提示词预训练后获得。

T5LM-XXL :XXL(11B)级参数规模的T5语言模型,

soft prompts和hard prompts: 模板的制作分为手工创建模板和自动化生成模板,而自动化生成模板又分为离散提示(又叫做硬提示)和连续提示(又叫做软提示)

以下均为需要微调参数的方法

BBT(Black-Box Tuning): 无梯度的微调方法,搜索连续空间中的最佳软提示词嵌入,而不是搜索离散的文本提示词。

MT(Model Tuning):在每个任务上对整个预训练语言模型进行微调的通用范式

PT(Prompt Tuning):预训练模型被冻结,只训练额外的连续软提示词的梯度引导的微调方法

无须微调参数的方法

  • ICL(In-Context Learning):上下文学习,大规模预训练模型进行小样本学习的通用方法。

    由标注的样本和手动模板组成的范例被用来帮助模型理解test tasks的含义。

    缺陷:需要人工提供手动提示词,对标记数据敏感,表现不稳定。

  • GRIPS( Gradient-free Instructional Prompt Search) :无梯度指令提示搜索,基于编辑的优化提示词搜索方法,主要用于简单的基于编辑的操作(例如增、删、交换、释义)

提示词重新生成方法

  • BT:回译(back translation)。将提示词从英语翻译到其他 11 种语言,然后将它们翻译回英语。包括中文、日语、韩语、法语、西班牙语、意大利语、俄语、德语、阿拉伯语、希腊语、粤语,
  • 完形填空(cloze)。利用LM-BFF[5]里的模板生成方法,使用T5(transformer)文本到文本预训练模型生成模板。对每个输入样例及其表达器(verbalizer)用占位符作为前缀和后缀生成模板,让T5去补全这些占位符。采用波束搜索(beam search)生成多个候选提示词。与论文[5]不同的是,本文的方法里是没有参数更新的,所以完型填空的效果并不好。所以本文中,使用人工提示词作为初始模板,用占位符代替一些随机的标记,然后让T5填空。选出在校验集(Ddev)时平均结果最好的提示词。
  • SC:续写句子(sentence continuation)。采用和论文[22]中一样的根据指令生成数据集方法,采用模板“Write two sentences that mean the same thing. Sentence 1: Manual Prompt, Sentence 2:” 交给预训练模型去续写。采用了GPT2-XL (1.5B)和 T5LM-XXL (11B)作为提示词生成模型。

这些方法不需要人工定义编辑规则,而且生成的提示词语义流畅。

提示词打分

Close: 按照[5]里的方法,用校验集(D_dev)上的平均对数打分;

BT和SC:不适用平均对数,采用校验集(D_dev)上的准确率评价。

创新点:提示词遗传搜索算法

离散的词空间中找到高表现的硬提示词。

1681822830925

1681784514455

​ Table4 五种小样本学习方法在四个评价指标上的比较

这里的代价消耗是训练和提示词搜索的联合损失。

MT缺乏服务效率,因为保存MT需要对于每个任务都保存整个模型,造成巨大的存储开销。所有参数都需要调整,其使用的Adam等优化器要求存储额外的动量和方差项。

PT和BBT只需要调整提示词嵌入层。

ICL使用很长的序列长度来串联例子,推理昂贵,尤其是在范例数目多的时候。那为什么这里的代价只是1x???

可以看到,本文提出的方法GPS提供Serving Effiency、不需要参数更新、极大的减少了计算代价,还能取得接近于整个模型调优的效果。获得了60.12的准确率。

实验设置

数据集(NLP的)

T0语言模型的10个测试任务

  • 自然语言推理任务(natural language inference):ANLI R1, ANLI R2, ANLI R3, CB, RTE

  • 共指解析(coreference resolution):WSC, Winogrande

  • 语句补全(sentence completion):COPA, HellaSwag
  • 词义消歧(word sense disambiguation):WiC
方法 参数设置
PT Adafactor Optimizer,lr=0.05
MT Adafactor Optimizer,,lr=5e-5=0.00005
BBT 本征维度=500,pop size=20,使用交叉熵损失; 软提示词标记数量为1 or 50时结果最好
ICL 每个task随机从训练集挑2个样本
GRIPS 复用arXiv:2203.07281.里的超参数,将初始提示词换成T0的

1681830294139

T0、BBT、PT、MT采用相同的人工提示词集,GRIPS和GPS自己搜索提示词。

实验结果是三种不同的数据划分方式的平均结果,脚注是一种方法在一个数据集的三种数据划分下的标准差。

划线部分给出了小样本学习下参数微调得到的最好结果,加粗部分给出了参数冻结方法的最好结果。

1681784982024

​ Table3 GPS产生的提示词的解释

>

我的未来工作

GPT-3表明,在超大规模预训练语言模型上使用提示词进行小样本学习效果良好;

Brown et al., Language models are few-shot learners. NIPS,2020

但对于每个特定任务找到最优化的提示词很困难。

To模型来源于这篇论文——Sanh et al., 2021. Multitask prompted training enables zero-shot task generalization.

[2]Tom Brown, Benjamin Mann, Nick Ryder, Melanie Subbiah, Jared D Kaplan, Prafulla Dhariwal, Arvind Neelakantan, Pranav Shyam, Girish Sastry, Amanda Askell, Sandhini Agarwal, Ariel HerbertVoss, Gretchen Krueger, Tom Henighan, Rewon Child, Aditya Ramesh, Daniel Ziegler, Jeffrey Wu, Clemens Winter, Chris Hesse, Mark Chen, Eric Sigler, Mateusz Litwin, Scott Gray, Benjamin Chess, Jack Clark, Christopher Berner, Sam McCandlish, Alec Radford, Ilya Sutskever, and Dario Amodei. 2020. Language models are few-shot learners. In Advances in Neural Information Processing Systems, volume 33, pages 1877–1901. Curran Associates, Inc.

[5]Tianyu Gao, Adam Fisch, and Danqi Chen. 2021b. Making pre-trained language models better few-shot learners. In Proceedings of the 59th Annual Meeting of the Association for Computational Linguistics and the 11th International Joint Conference on Natural Language Processing (Volume 1: Long Papers), pages 3816–3830, Online. Association for Computational Linguistics.

[6]Xu Han, Weilin Zhao, Ning Ding, Zhiyuan Liu, and Maosong Sun. 2021. Ptr: Prompt tuning with rules for text classification.

[17]Archiki Prasad, Peter Hase, Xiang Zhou, and Mohit Bansal. 2022. Grips: Gradient-free, edit-based instruction search for prompting large language models. arXiv preprint arXiv:2203.07281.

[19]Colin Raffel, Noam Shazeer, Adam Roberts, Katherine Lee, Sharan Narang, Michael Matena, Yanqi Zhou, Wei Li, and Peter J. Liu. 2020. Exploring the limits of transfer learning with a unified text-totext transformer. Journal of Machine Learning Research, 21(140):1–67.

[22]Timo Schick and Hinrich Schütze. 2021. Generating datasets with pretrained language models. Computing Research Repository, arXiv:2104.07540.

理解和引导自己与朋友;

心理暗示:使得人不自觉地按照一定的方式去行动,不加批判地接受一定的观念。

瓦伦达效应:

美国一个走钢丝演员在特别想成功的一场演出上失败了。

做法:1、平常心 2、专注事情本身,而非其结果。 3、抗干扰,其他事情与我无关。4、用暗示性动作或者自己习惯的场景让自己处于一种适合做事的条件下,类似于条件概率,让大脑和身体习惯 5、熟练度max,即使干扰也不影响。

4、5都是重复,更大的来说所有做法都是重复形成习惯。

酸葡萄/甜柠檬效应

狐狸想尽办法也吃不到葡萄。“嗯,那个葡萄一定非常酸.””

实在得不到的,可以不要太执着,肯定是坏的,但是不要丢掉上进心;

自卑时,自己拥有的是最好的,注意其中的度。

罗森塔尔效应

随机挑选孩子,对老师说这些学生是可造之才。

权威的延誉会让周围的人对某个人的心理评价变高,通过日常行为体现出来,被期待的人受到这种鼓舞,成绩变得更好。

反思:1.从朋友和老师亲人的正面评价中汲取力量

2.相信朋友会成长得越来越好,实现他的目标。

3.对一个人的喜欢和赞赏,无须直接说话,从众多细节中可以体现出来。细细品味,你会发现身边人的态度。

飞轮效应

万事开头难;惯性的作用,一开始会比较费劲,之后就轻松了,按部就班就可以。

3.前面的努力,都会变成后面的推动力。永远相信付出的努力会在某一天给自己回报。

4.增强回路的过程。因曾强果,果又反过来增强因,循环往复。重视反馈,给自己暗示的反馈,给自己找进步空间。

蘑菇效应

生长在阴暗角落的蘑菇,无人关注,没有阳光,常常自生自灭。只有自己长得高大了,才会被人发现,发挥出作用。

提供了一个Tensorflow实现的 新的基准数据集的训练和测试代码 。

这篇论文和之前读过的Few-Shot13:《Learning a Universal Template for Few-shot Dataset Generalization》,
以及《CrossTransformers: spatially-aware few-shot transfer》的代码都是同一批作者的研究,

Meta-Dataset-Code05

《Self-Support Few-Shot Semantic Segmentation》,用自支持匹配获得更好的特征原型。Self-Support-Code06

度量学习

(PN、MN、RN、CrossTransformerLearner),

优化学习

1.proto_maml_fc

2.BaselineFinetune

3.proto

最差的:关系网络。

(、maml、almost-no-inner-loop、GenerativeClassifier),

FLUTEFiLM

10个数据集

1680521958453

一些推荐参数

  • inner learning rate α=0.1

可继续研究的新问题

训练episode、校验、初始化的最优策略未明;

在多个来源的数据

百度飞桨平台上关于元学习的部分 Code04
https://paddlepedia.readthedocs.io/en/latest/tutorials/meta_learning/

了解匹配网络、关系网络、原型等基于度量的小样本学习方法的工作原理。

元学习的五个研究方向:model-based, metric-based, optimization-based, online-learning-based:OML, and stacked ensemble-based models

模型(model-based、)、数据、算法(包括optimization-based、metric-based、stacked ensemble-based models:Meta-learner)

基于度量:HABPN

基于优化

基于模型:MANN、MetaGAN

0.(可选)NVIDA官方下载对应驱动

选择界面:https://developer.nvidia.com/cuda-downloads

cuda_12.1.0_531.14_windows.exe

下载后双击安装,等待安装成功;查看当前的cuda驱动版本。

1
2
C:\Users\22154>nvidia-smi
CUDA Version: 12.1 |

1.安装cuda

WSL-Ubuntu-cuda下载,注意cuda版本和之前Windows上的对齐

1
2
3
4
5
6
7
8
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.1.1/local_installers/cuda-repo-wsl-ubuntu-12-1-local_12.1.1-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-12-1-local_12.1.1-1_amd64.deb
sudo cp /var/cuda-repo-wsl-ubuntu-12-1-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt --fix-broken install
sudo apt-get -y install cuda

2.安装conda并新建环境

1
conda create -n tf2.9 python=3.10

3、激活环境

1
conda activate tf2.9

4.安装Pytorch

https://pytorch.org/get-started/locally/

1700483321638

复制粘贴上面的命令去Linux下运行即可。

···

1
pip3 install torch torchvision torchaudio

5.下载 tensorflow_gpu-2.9.0 (根据需求选择)

命令行打开到Computed-Tomography-AI目录,执行下面的命令。

1
2
(tf2.9) D:\DataSet\Github\Computed-Tomography-AI>
pip3 install -i http://pypi.douban.com/simple/ -r requirements.txt --trusted-host pypi.douban.com

安装其他版本,可以去 tf官网查看tensorflow、python、tensorflow-gpui、cuda、cudnn的对应关系 。

6.在对应环境中安装CUDAToolkit

6.1conda挂代理或者换源

在这里进行换源,加速下载:

1
2
3
4
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes

6.2 conda下载cudatoolkit

1
conda install cudatoolkit=11.2

7.conda下载CuDnn

1
conda install cudnn=8.1

8.(可选)手动下载CudaToolKIt和CuDnn

https://anaconda.org/conda-forge/cudatoolkit/11.2.2/download/win-64/cudatoolkit-11.2.2-h933977f_9.tar.bz2

1
conda install --use-local cudatoolkit-11.2.2-h933977f_9.tar.bz2

9.验证是否安装成功

命令行下

1
2
3
4
5
6
py310paulc@BlackGame:~$ python
Python 3.10.13 (main, Sep 11 2023, 13:44:35) [GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> torch.cuda.is_available()
True

或者

1
2
3
4
(tf2.9) D:\DataSet\Github\Computed-Tomography-AI>python
>>>import tensorflow as tf
>>>tf.test.is_gpu_available()

1678380947188

返回true说明没有问题。

现在,所有的依赖项已经下载并配置成功。

安装pwndbg

Ubuntu18会缺少各种依赖,直接用它编译好的最快。

1
2
https://github.com/pwndbg/pwndbg/releases/download/2023.07.17-pkgs/pwndbg_2023.07.17_amd64.deb
sudo dpkg -i pwndbg_2023.07.17_amd64.deb

M. S. Rahman, S. E. Coull和M. Wright, 《On the Limitations of Continual Learning for Malware Classification》. arXiv, 2022年8月13日. 见于: 2022年12月8日. [在线]. 载于: http://arxiv.org/abs/2208.06568

持续学习-Code03

本文结论:

CL本应该适合于恶意软件每日的进化和数量级,但是本文实验数据说明持续学习在几乎所有场景下表现都不如数据的Joint 重放。选择性重放20%~50%的数据相比联合重放,可以在达到最佳训练效果的同时节省35-50%的时间。

在域增量学习(二元分类任务里,融合数据分布的迁移,适应新域的同时,保留先前学到的知识)情景下,CL表现都很差。

在任务增量学习时,几种CL方法表现相当好。

学到的

多类别分类恶意软件时:可以基于其代码库、功能和整体结构特征。

读论文方法:在对一个领域基本了解后,专注方法时,直接去看Introduction里的作者贡献即可。

克服灾难性遗忘(catastrophic forgetting):

  • 正则化:加入正则化损失函数,惩罚重要的权重变化
  • 适应性扩张adaptive expansion
  • 重放:用具有代表性的旧数据补充每个新任务的训练数据。
    • 蒸馏损失、不遗忘学习. Learning without Forgetting
    • 生成重放。用第二个模型去学习之前任务的数据分布,从分布中产生新数据重放。生成重放在旧数据不可用或受限时特别有用。

用其他分析方法得到的辅助信息可以用来帮助恶意软件分类,如恶意软件种类、恶意行为、感染载体等,使得整个优化问题多了约束。

持续学习的训练策略

三组参数:任务间共享参数θ_s(除了分类层以外的层),先前任务参数θ_0(旧任务对应的权重和输出层),新任务参数θ_n(新任务的输出层)。

  • Joint training:所有参数一起优化,基于所有数据的训练,得到的模型被认为是最好,但训练代价大。
  • 持续学习训练:对于每个新任务n,固定θ_0,每次优化θ_s和θ_n。无须旧数据可及,因此难度高,只是训练更快,可以频繁重训练。

参数调优

层数、

隐藏单元数

激活函数

优化函数 Adam SGD

学习率

评价策略

Min指标:最弱的性能显示了一种技术可能不适合使用的程度。

处理数据集中字符串的技巧:

用于大规模多任务学习的特征哈希

Kilian Weinberger, Anirban Dasgupta, John Langford, Alex Smola, and Josh Attenberg. Feature hashing for large scale multitask learning. In International Conference on Machine Learning (ICML), pp. 1113–1120, 2009.

术语约定

持续学习:CL

恶意软件分类:MC

增量学习:incremental learning ,IL

AV-Test的 可能有害的程序 :potentially unwanted applications,PUA

本文内容

11种CL技术*2种恶意软件数据集*MC的3种(任务、类别、域)的增量学习场景下;调研MC模型遭受灾难性遗忘(catastrophic forgetting)的程度。

恶意软件:PE、Android、PDF文件、恶意URL。

采用ML去解决MC,基于一个假设,模型可以泛化到新数据。但是恶意软件和良性软件都在更新升级,导致其软件内部不稳定。

为适应数据分布随时间的迁移,模型需要经常重训练。而数据产生的太快,导致大的数据集(FSL不存在这个问题),训练困难。

VT的统计页面显示,每天接收到的新文件有近百万个。面对如此大 的数据,防病毒公司的三个选择

1)花费大代价在全体数据集上频繁的重训练

2)砍掉一些老数据,造成老病毒被复用的危险;

3)训练的不那么频繁。

4)增量学习

计算机视觉领域数据集:

MNIST, CIFAR10 and CIFAR100, and ImageNet

如何安慰别人

心理出现问题,是把一件事情扩大化,或者长期的负面情绪积累导致。

对于扩大化的事情,例如失恋后的朋友,他们往往会有三种误区:

  • 1.认为别人不是这样
  • 2.认为自己永远不会再爱了,把阶段性的结果直接预估到未来
  • 3.认为本质上是自己的原因。

安慰的三种策略:

先要共情,做好倾听,对于对方也是一种情绪的宣泄,但是共情者要保持好自己的心情。

1.安慰时不要指指点点。不要说如果我是你,而是陈述客观事实——是对方太强了。

2.疑问句的方式,指出对方经验里或者认识的人也是有幸福结果的。

3.指出对方的优点,可以在比较短的时间内获得正反馈,而非遥遥无期的大饼。

马斯洛自我实现理论

马斯洛需要层次论.

生理——安全——归属与爱——尊重——自我实现(潜力变成现实,有目标)。这个需求层次不一定前者满足了,后者才会出现。

马斯洛说:自我实现的人,任何时候都不会感到 焦虑、空虚和寂寞。

是这样,在我学习各种知识的时候,我会感觉到充实。寂寞感我已经很少再有;焦虑感会在任务被拖延后以及被父母提及未来工作后,产生一些;空虚感在我持续的浪费时间,没有目的度日时,经常感觉到。

约拿情结:在很多人心里表现为一种抵制、惧怕自身的伟大之处;回避自己的自主命运;