分类 默认分类 下的文章

场景

下载谷歌云的文件,总在没有下载完成的时候就断开了。
不知道出于什么原因。

IDM优势

  • IDM似乎不是从头开始下载的,而是直接从文件的不同位置多线程并行开始下载的。
  • 说是支持断点续传。

下载链接

https://www.lanzoux.com/b0de8st1e 密码:885w

配置教程

  1. 下载IDM Chrome拓展
  2. 选项配置接管
  3. 关闭IDM,重启浏览器
  4. 测试是否接管成功

注意

IDM下载速度不一定很快,但是可以保障不断连。

是否存在这个问题都不好说,要仔细阅读别人的研究,然后继承和解决。

问题

由于在多目标的DL中只能使用线性加权法,当目标之间的上下界相差较大时,就不得不面对权重的分配问题,这时候均匀的权重分配方案肯定是不合适的,如果存在一个目标的下界比较大,那么加权之后几乎只对较大目标进行优化。

解决方案

目标缩放

可以直接给较大目标添加一个制定的缩放值,使得上下界相近,来缓解这个问题。
问题是怎么确定这个缩放值,而且解决得也不彻底。

建立不均匀的权重分布

向较大的目标更为细分和多的权重。

总结

  • 其实这两种方案本质是一样的,但是第二种方案解决问题解决得更加彻底。
  • 目标的下界很重要,代表着这个目标能够优化到的当前极小值。一种利用方式是将缩放值调整为目标的极小值的倍率。

也许不存在这个问题?
只要迭代次数够,先将大的目标值下降到不能下降,接下面就是另外一个值的影响了?好像依旧不是很可行。因为梯度分配不能这么做。

目前的一个实验是,记录种群每个目标当前的最大值和最小值,然后将其目标值放缩到0-1。
手动将目标1乘以2提升重要性。

对比不放缩的似乎没什么区别

灰底无边框带置信区间折线图

QQ图片20240413115141.png

  • a
import matplotlib.pyplot as plt
import numpy as np
import random

# 模拟数据
x = list(range(10))
y = [random.randint(0,10) for i in range(len(x))]
y2 = [random.randint(0,10) for i in range(len(x))]

y_upper = y + np.array([random.random() for i in range(len(x))])
y_lower = y - np.array([random.random() for i in range(len(x))])
y_upper2 = y2 + np.array([random.random() for i in range(len(x))])
y_lower2 = y2 - np.array([random.random() for i in range(len(x))])


# 绘制折线图
plt.plot(x, y,color='white')
plt.plot(x, y2,color='white')
plt.fill_between(x, y_lower, y_upper, color="#38C7E8", alpha=1)
plt.fill_between(x, y_lower2, y_upper2, color="#fb8eaa", alpha=1)

# 设置网格线的样式
plt.grid(color='white', linestyle='-', linewidth=1,  alpha=0.9)

# 设置网格的背景色
plt.gca().set_facecolor('#e8e8e8')  # 灰色底色
plt.gca().spines['top'].set_visible(False)
plt.gca().spines['right'].set_visible(False)
plt.gca().spines['bottom'].set_visible(False)
plt.gca().spines['left'].set_visible(False)

# 显示图形
plt.show()
  • c
import matplotlib.pyplot as plt
import numpy as np
import random

# 模拟数据
x = list(range(10))
y = [random.randint(0,5) for i in range(len(x))]
y2 = [random.randint(0,5) for i in range(len(x))]

y_upper = y + np.array([random.random() for i in range(len(x))])
y_lower = y - np.array([random.random() for i in range(len(x))])
y_upper2 = y2 + np.array([random.random() for i in range(len(x))])
y_lower2 = y2 - np.array([random.random() for i in range(len(x))])


# 绘制折线图
plt.plot(x, y,color='#cd676b')
plt.plot(x, y2,color='#5a7fb8')
plt.fill_between(x, y_lower, y_upper, color="#e3c3c9", alpha=1)
plt.fill_between(x, y_lower2, y_upper2, color="#c1cbe1", alpha=1)

# 设置网格线的样式
plt.grid(color='white', linestyle='-', linewidth=1,  alpha=0.9)

# 设置网格的背景色
plt.gca().set_facecolor('#ececf3')  
plt.gca().spines['top'].set_visible(False)
plt.gca().spines['right'].set_visible(False)
plt.gca().spines['bottom'].set_visible(False)
plt.gca().spines['left'].set_visible(False)

# 显示图形
plt.show()

其他的

piccc.png

好的,让我通过一个简单的例子来说明解码器的生成过程。

假设我们正在进行英语到法语的翻译任务,我们已经训练好了一个 Transformer 模型。现在我们要将一个简单的英文句子 "I love playing basketball." 翻译成法语。

  1. 准备工作:

    • 输入句子:"I love playing basketball."
    • 目标是生成法语句子。
  2. 编码器(Encoder):

    • 将输入句子转换成词嵌入向量。
    • 经过编码器的多层自注意力机制和前馈神经网络,得到输入句子的编码表示。
  3. 解码器(Decoder):

    • 解码器的初始输入是一个特殊的起始标记 <start>。
    • 解码器开始生成第一个法语单词。
  4. 生成第一个单词:

    • 解码器首先考虑编码器的输出和初始输入(起始标记 <start>),以及已经生成的部分法语序列。
    • 解码器计算每个可能的法语单词的概率分布。
    • 例如,可能的第一个法语单词是 "J'aime"(意为 "I love")。
    • 解码器选择具有最高概率的单词作为第一个生成的单词。
  5. 生成后续单词:

    • 解码器在生成后续单词时,考虑前面已经生成的部分法语序列。
    • 它利用编码器的输出和已经生成的部分法语序列,通过自注意力机制来预测下一个单词。
    • 例如,下一个可能的单词是 "jouer"(意为 "playing")。
    • 解码器选择具有最高概率的单词作为下一个生成的单词。
  6. 重复生成过程:

    • 解码器重复这个生成过程,逐词地生成整个法语句子。
    • 每个单词的生成都取决于前面已经生成的部分法语序列和编码器的输出。
  7. 生成结束标记:

    • 解码器生成序列的过程会一直持续,直到生成了一个特殊的结束标记 <end>,或者达到了预先定义的最大长度。

通过这个过程,解码器逐词地生成了目标语言的句子,同时考虑了前面已经生成的部分序列和编码器的输出,从而实现了翻译任务。

TSP

考虑TSP的翻译,应该是用现有路径去预测下一步,而不是现有节点。
可以先用监督训练看看效果。