[TOC]
3.27 算法
选择
- SFT的学习率选择
对于难度较高的任务,模型需要更细致地调整其参数以捕获数据中的复杂模式。在这种情况下,选择较小的学习率可能有助于模型更加仔细地进行权重更新,避免过大的更新步长导致模型错过最优解。然而,这也意味着模型可能需要更多的时间来收敛。
任务难度大倾向选小的lr
- 朴素贝叶斯进行文本分类,但是一个词在多个文档中出现频繁,效果会变好/差
- hash线性试探
- 最小二乘法变坏的情况
- logic regression出现预测的值接近0或者1
过拟合了
- 计算长度为8字符串的子串个数
- 罕见词的分词效果不好要怎么办
增加训练数据
用embedding
- 直方图均衡化的原理是什么
(不定项选择题)
- 出现OOD的原因
- 稳定的排序算法
- 关于pretrain说法正确的是,MLM比CLM好吗
-
属于自监督学习的是:contrastive learning\auto-encoder\reinforcement learning\对抗生成网络\时序网络
-
F(x)是分布函数,那么F(3x)、F^3(x)也是分布函数
-
完全二叉树第五层有两个叶子,求最多节点和最少节点数(假设根节点在第一层)
- 两个人做独立跳跃游戏,跳到x轴上方$y=\sqrt{1-x^2}$上两点M,N,现在扇形OMN面积为S1,三角形OMN面积为S2,求$Cov(S_1,S_2)$
OJ
Q1
小红拿到了一个环形数组(第一个元素的左边是最后一个元素,最后一个元素的右边是第一个元素),她有若干次询问,每次查询从某元素开始,向左/向右前进k步后在什么位置。你能帮帮她吗?
输入描述
第一行输入两个正整数n,q,代表数组大小和询问次数。
第二行输入n个正整数ai,代表数组的元素。
接下来的q行,每行输入三个参数x,op, k,其中心为一个正整数,代表初始的位置;op为一个字符’L或者’R’,’L代表向左走,“R’代表向右走;k代表走的步数。
1≤ n,q ≤10^5
1≤ x ≤n
I ≤ k,a_i ≤ 10^9
输出描述
输出q行,每行输出一个正整数,代表每次查询,前进k步后所在的元素。
示例1
输入
5 2
3 4 5 2 4
1 R 3
4 L 4
输出
2
4
A1
n,q = map(int,input().split())
nums = list(map(int,input().split()))
for i in range(q):
x,op,k = input().split()
x,k = int(x)-1,int(k)
if op=='L':
print(nums[(x-k)%n])
else:
print(nums[(x+k)%n])
Q2
小红希望你求出函数$f(x)=log_ax -bx$ 在定义域上的最大值。你能帮帮她吗?
输入描述
两个正整数a,b,用空格隔开
2 ≤ a ≤ 1000
1≤ b ≤ 1000
输出描述
该函数在定义域上的最大值。你只需要保证和标准答案的相对误差不超过10一7即可通过本题。
示例1
输入
2 1
输出
-0.9139286679
A2
a,b = map(float,input().split())
x = 1/(b*math.log(a))
print(math.log(x)/math.log(a)-b*x)
Q3
小红拿到了一个数组,她准备选择一个子序列,使得该子序列的中位数尽可能大。小红想知道,一共有多少种方案?
奇数长度的子序列中位数为中间的那个数,偶数长度的子序列中位数为中间两个数的平均数。
输入描述
第一行输入一个正整数n,代表数组大小、待选择的子序列长度。
第二行输入n个正整数ai。代表小红拿到的数组。
1 ≤ n ≤ 10^5
1 ≤ a_i ≤ 10^9
输出描述
一个整数,代表选择的方案数。由于答案可能过大,请对10^9+7取模。
示例1
输入
3
1 2 2
输出
4
A3
先记录最大元素个数,O(n),之后迭代计算组合数 O(n)
n = int(input())
nums = list(map(int,input().split()))
ma = 0
for num in nums:
ma=max(ma,num)
ma_len = 0
for num in nums:
if num==ma:
ma_len+=1
mod=10**9+7
zero,one = n-ma_len,ma_len
m = min(zero,one-1)
res = pow(2,one,mod)-1
last=res
c = one
c2 = zero
for i in range(1,m+1):
tmp = last
tmp -= c
res=(res+tmp*c2)%mod
last = tmp
c=(c*(one-i)//(i+1))
c2 = (c2*(zero-i)//(i+1))
print(res)