【Papernotes】High-risk Learning

Nonce2Vec是一种创新方法,旨在快速为新词生成语义表示,无需重新训练整个词嵌入模型。该方法基于Word2Vec,通过高学习率、大窗口和上下文向量初始化等策略,使新词能迅速找到合适位置,同时保持原有词的稳定性。

论文地址: http://aclweb.org/anthology/D17-1030

项目地址: https://github.com/minimalparts/nonce2vec


要点

一般训练 word embeddings, 都是用一个大型语料 (比如维基百科), 训练一次, 得到一个模型 (称 word embeddings 为模型可能不太准确, 姑且这样叫吧).

本文是我苦苦寻找的, 对预训练 word embeddings 用新数据旧算法 (即非后续的神经网络) 再训练的例子. 这样的方法的一个好处是, 为新词在旧的向量空间迅速找到合适的语义, 而不必将不同语料再结合起来重新训练. (对于稀疏矩阵表示的 word embedding, 不用训练, 新词的 context 很容易确立, 与它词意相近的单词也能马上找到, 但是现在大家不用这样的表示)

本文提出的方法叫 nonce2vec, nonce word 的有道翻译是(为特殊需要)临时造出的词语 (以下就称为"新词"了). 说白了就是要在现有的向量空间中, 快速学习一个新词的表示. 私以为这种思路和人学习新词的行为是一致的, 我们通过了了几个例句就能大致摸清一个新词的意思(比如00后的黑话).

一种快速了解一个词意的方法, 以中文为例, 就是从组成它的汉字大致推断出其意思; 英文的话, 就是从词根和前后缀等信息了. 因此就是对新词进行分解, 求各组成部分的向量和或平均. 另一种思路是对新词的 context 求和(参考CBOW的学习方式).

本文的观点是, 应该有一个架构, 它能从任意量的数据中学习词表示, 可以在之前的基础上, 继续学习词表示, 不管是旧词还是新词. 而为了快速学习新词的表示, 实验中首先使用了大学习率, 即所谓的 high-risk, 并用了一些技巧来弥补大学习率带来的损害.

Nonce2vec 是基于 word2vec 的, 主要的修改包括:

  1. Initialsation: 用上面说的将上下文向量相加的方式 (限于已知的词), 初始化新词, 不过文章在这里对 context word 也进行了 subsampling;

  2. 高学习率+大窗口: 目的在于, 贪心地感知相关的上下文;

  3. Window resizing: 训练过程中不断缩小窗口;

  4. Subsampling: 只对超高频单词进行;

  5. Selective training: 只更新新词, 一个原因是防止高学习率破坏旧词表示;

  6. Parameter decay: 高学习率+大窗口的学习只在新词的最早期学习中使用, 以快速定位到向量空间中的大致位置, 一旦新词的语义差不多了, 就替换掉 high-risk 学习策略, 用传统的参数来学习, 即进行精调阶段. 具体来说, 文章对学习率进行了指数衰减, 和新词的次数挂钩; 减小窗口; 提高降 subsampling rate.

<think>好的,我现在需要处理用户关于sqlmap中--risk=3参数的问题。用户想知道如何设置或理解这个参数的含义。首先,我得回忆一下sqlmap的相关知识,确保自己理解正确。 我记得sqlmap中的--risk选项是用来控制测试的风险等级的。风险等级越高,执行的测试类型越危险,可能对数据库造成更大的负担或潜在破坏。默认的风险等级是1,而最高是3。需要确认各个等级对应的具体测试内容。 接下来,用户可能想知道设置--risk=3的具体影响,比如会启用哪些注入技术,是否有副作用。我需要分点解释风险等级3的含义,可能包括更广泛的测试、使用时间盲注等更复杂的payloads,以及潜在的风险,比如可能触发更多的日志或影响数据库性能。 还要注意引用相关的资料,比如引用中的技术选项部分,可能涉及到用户提到的引用[2]和[3]。需要检查是否有相关的引用来源支持这些解释,比如引用[3]提到线程数设置,但风险等级可能在其他引用中。不过根据用户提供的引用,引用[3]提到了--threads,而引用[2]是关于其他选项,可能需要确认是否有直接相关的引用。 另外,用户可能想知道在什么情况下应该使用--risk=3,比如当默认等级无法检测到注入点时,或者需要更全面的测试时。同时需要提醒用户谨慎使用,因为高等级可能引发数据库的锁或事务问题。 最后,生成相关问题,帮助用户进一步理解相关配置,比如如何平衡风险与效率,或者与其他参数如--level的配合使用。确保问题相关且有帮助。</think>关于sqlmap中`--risk=3`参数的含义与设置方法如下: ### 1. `--risk`参数的作用 `--risk`控制注入测试的侵入性等级(1-3),数值越高测试越激进,可能触发更多潜在漏洞,但也会增加被防御机制拦截或影响数据库稳定性的风险[^3]。 ### 2. 风险等级3的具体行为 当设置为`--risk=3`时: - 启用`时间盲注(Time-based blind)`的复杂变体 - 测试`堆叠查询(Stacked queries)`等高危操作 - 尝试包含`DROP`/`ALTER`等危险语句的payload - 增加对`CASE-WHEN`等复杂表达式的测试 ### 3. 配置方法 在命令行中添加参数: ```bash sqlmap -u "http://target.com/page?id=1" --risk=3 ``` ### 4. 注意事项 - 可能触发数据库日志暴增或锁表现象 - 建议先使用默认等级(risk=1)进行初步测试 - 在已知为测试环境且已授权的情况下使用 - 需配合`--level`参数提升检测深度(如`--level=5`)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值