Upload README.md with huggingface_hub
Browse files
README.md
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Ubiquant 字符猎手决赛方案
|
| 2 |
+
|
| 3 |
+
## 一、模型架构
|
| 4 |
+
|
| 5 |
+
### 1. 字符识别模型
|
| 6 |
+
- 基础网络:ResNet(训练过resnet18, resnet34, resnet50,最终采用resnet18)
|
| 7 |
+
- 开放集识别:OpenMax
|
| 8 |
+
- 特点:能够有效处理未知类别的字符识别问题
|
| 9 |
+
|
| 10 |
+
### 2. 模型训练
|
| 11 |
+
- 使用字符识别数据集进行训练
|
| 12 |
+
- 使用交叉熵损失函数进行训练 (考虑加上triplet loss来调整类内和类间间距,但收敛效果不好)
|
| 13 |
+
- 使用AdamW优化器进行优化
|
| 14 |
+
- 基于验证集的准确率进行模型选择
|
| 15 |
+
- 设置了alpha, tailsize, threshold等超参数的搜索,采用网格搜索
|
| 16 |
+
|
| 17 |
+
## 二、字符收集策略
|
| 18 |
+
|
| 19 |
+
### 1. 基本定义
|
| 20 |
+
- 智能体需拾取144个物体,构成可定义所有网格拾取顺序的集合为动作空间:
|
| 21 |
+
- A = {a} = {< (x₀,y₀), (x₁,y₁), ... (x₁₄₄,y₁₄₄) > : xᵢ ≠ xⱼ, yᵢ ≠ yⱼ, i,j ≥ 1}
|
| 22 |
+
- 其中(x₀,y₀)为智能体初始位置
|
| 23 |
+
- 根据组合定理,动作空间的元素个数为:Card(A) = 144!
|
| 24 |
+
|
| 25 |
+
### 2. 基于广义成本的轨迹评估
|
| 26 |
+
计算成本包含两个部分:
|
| 27 |
+
1. 执行成本(PC):
|
| 28 |
+
```
|
| 29 |
+
PC = 144 + ∑ᵢ₌₀¹⁴³‖(xᵢ₊₁ - xᵢ, yᵢ₊₁ - yᵢ)‖₁
|
| 30 |
+
```
|
| 31 |
+
|
| 32 |
+
2. 存储成本(SC):
|
| 33 |
+
```
|
| 34 |
+
SC = ∑ₑₗᵢₘ₍ᵢ₎₌Fₐₗₛₑ[∑ᵢ‖(xᵢ₊₁ - xᵢ, yᵢ₊₁ - yᵢ)‖₁] - 4
|
| 35 |
+
· ∑ₑₗᵢₘ₍ᵢ₎₌Tᵣᵤₑ[∑ᵢ‖(xᵢ₊₁ - xᵢ, yᵢ₊₁ - yᵢ)‖₁]
|
| 36 |
+
```
|
| 37 |
+
|
| 38 |
+
3. 广义成本:
|
| 39 |
+
```
|
| 40 |
+
C = PC/10 + SC/144
|
| 41 |
+
```
|
| 42 |
+
|
| 43 |
+
4. 累计奖励:
|
| 44 |
+
```
|
| 45 |
+
reward_cum = 136 - C
|
| 46 |
+
```
|
| 47 |
+
|
| 48 |
+
### 3. 初始次优轨迹生成
|
| 49 |
+
- 每收集4个相同物品,就能发生消除并获得奖励
|
| 50 |
+
- 采用一种次优选择方法生成初始轨迹
|
| 51 |
+
- 按照物品类别统计网格位置
|
| 52 |
+
- 然后随机取一批4个同类网格
|
| 53 |
+
- 按照最小化广义成本的原则添加到已有轨迹中
|
| 54 |
+
|
| 55 |
+
### 4. 随机扰动轨迹优化
|
| 56 |
+
- 考虑先添加的网格对后续网格的影响
|
| 57 |
+
- 初始轨迹是次优的,需要进一步优化
|
| 58 |
+
- 采用随机扰动:每次从轨迹中随机选出一个网格
|
| 59 |
+
- 按照最小化广义成本重新插入
|
| 60 |
+
- 重复1000次
|
| 61 |
+
|
| 62 |
+
### 5. 随机重启轨迹集成
|
| 63 |
+
- 随机扰动轨迹优化能改善局部轨迹,但无法进行全局优化
|
| 64 |
+
- 选择200种初始轨迹批次选择顺序
|
| 65 |
+
- 生成200条优化轨迹
|
| 66 |
+
- 从中选择最优轨迹
|
| 67 |
+
|
| 68 |
+
### 6. 调优策略
|
| 69 |
+
1. 参数调优
|
| 70 |
+
- 调整随机扰动次数
|
| 71 |
+
- 优化轨迹集成数量
|
| 72 |
+
- 微调广义成本中PC和SC的权重
|
| 73 |
+
|
| 74 |
+
2. 策略改进
|
| 75 |
+
- 优化初始轨迹生成算法
|
| 76 |
+
- 改进随机扰动方式
|
| 77 |
+
- 设计更好的评估函数
|