10053事件优化器参数详细说明

优化器相关参数:
记载了所有影响成本计算的参数

***************************************
PARAMETERS USED BY THE OPTIMIZER
********************************
OPTIMIZER_FEATURES_ENABLE = 8.1.6
OPTIMIZER_MODE/GOAL = Choose
OPTIMIZER_PERCENT_PARALLEL = 0
HASH_AREA_SIZE = 131072
HASH_JOIN_ENABLED = TRUE
HASH_MULTIBLOCK_IO_COUNT = 0
OPTIMIZER_SEARCH_LIMIT = 5
PARTITION_VIEW_ENABLED = FALSE
_ALWAYS_STAR_TRANSFORMATION = FALSE
_B_TREE_BITMAP_PLANS = FALSE
STAR_TRANSFORMATION_ENABLED = FALSE
_COMPLEX_VIEW_MERGING = FALSE
_PUSH_JOIN_PREDICATE = FALSE
PARALLEL_BROADCAST_ENABLED = FALSE
OPTIMIZER_MAX_PERMUTATIONS = 80000
OPTIMIZER_INDEX_CACHING = 0
OPTIMIZER_INDEX_COST_ADJ = 100
QUERY_REWRITE_ENABLED = TRUE
QUERY_REWRITE_INTEGRITY = ENFORCED
_INDEX_JOIN_ENABLED = FALSE
_SORT_ELIMINATION_COST_RATIO = 0
_OR_EXPAND_NVL_PREDICATE = FALSE
_NEW_INITIAL_JOIN_ORDERS = FALSE
_OPTIMIZER_MODE_FORCE = TRUE
_OPTIMIZER_UNDO_CHANGES = FALSE
_UNNEST_SUBQUERY = FALSE
_PUSH_JOIN_UNION_VIEW = FALSE
_FAST_FULL_SCAN_ENABLED = TRUE
_OPTIM_ENHANCE_NNULL_DETECTION = TRUE
_ORDERED_NESTED_LOOP = FALSE
_NESTED_LOOP_FUDGE = 100
_NO_OR_EXPANSION = FALSE
_QUERY_COST_REWRITE = TRUE
QUERY_REWRITE_EXPRESSION = TRUE
_IMPROVED_ROW_LENGTH_ENABLED = TRUE
_USE_NOSEGMENT_INDEXES = FALSE
_ENABLE_TYPE_DEP_SELECTIVITY = TRUE
_IMPROVED_OUTERJOIN_CARD = TRUE
_OPTIMIZER_ADJUST_FOR_NULLS = TRUE
_OPTIMIZER_CHOOSE_PERMUTATION = 0
_USE_COLUMN_STATS_FOR_FUNCTION = FALSE
_SUBQUERY_PRUNING_ENABLED = TRUE
_SUBQUERY_PRUNING_REDUCTION_FACTOR = 50
_SUBQUERY_PRUNING_COST_FACTOR = 20
_LIKE_WITH_BIND_AS_EQUALITY = FALSE
_TABLE_SCAN_COST_PLUS_ONE = FALSE
_SORTMERGE_INEQUALITY_JOIN_OFF = FALSE
_DEFAULT_NON_EQUALITY_SEL_CHECK = TRUE
_ONESIDE_COLSTAT_FOR_EQUIJOINS = TRUE
DB_FILE_MULTIBLOCK_READ_COUNT = 32
SORT_AREA_SIZE = 131072


基本统计信息:
下一部分是所有表和索引的基本统计信息
基本统计信息包括

表:
Trace label       dba_tables column
CDN                   NUM_ROWS                       表记录数
NBLKS                BLOCKS                         高水位以下的block数
TABLE_SCAN_CST                                        全表扫描的I/O成本
AVG_ROW_LEN    AVG_ROW_LEN                       平均行长

索引:
Trace label       dba_indexes column
Index#, col#                                      索引号及表列号
LVLS                BLEVEL                             BTREE索引高度
#LB                    LEAF_BLOCKS                   索引叶块数
#DK                DISTINCT_KEYS                   不重复索引关键字
LB/K              AVG_LEAF_BLOCKS_PER_KEY       叶块/关键字
DB/K          AVG_DATA_BLOCKS_PER_KEY       数据块/关键字
CLUF              CLUSTERING_FACTOR                    索引聚合因子


***************************************
BASE STATISTICAL INFORMATION
***********************
Table stats Table: DEPT Alias: DEPT
TOTAL :: CDN: 16 NBLKS: 1 TABLE_SCAN_CST: 1 AVG_ROW_LEN: 20
-- Index stats
INDEX#: 23577 COL#: 1
TOTAL :: LVLS: 0 #LB: 1 #DK: 16 LB/K: 1 DB/K: 1 CLUF: 1
***********************
Table stats Table: EMP Alias: EMP
TOTAL :: CDN: 7213 NBLKS: 85 TABLE_SCAN_CST: 6 AVG_ROW_LEN: 36
-- Index stats
INDEX#: 23574 COL#: 1
TOTAL :: LVLS: 1 #LB: 35 #DK: 7213 LB/K: 1 DB/K: 1 CLUF: 4125
INDEX#: 23575 COL#: 2
TOTAL :: LVLS: 1 #LB: 48 #DK: 42 LB/K: 1 DB/K: 36 CLUF: 1534
INDEX#: 23576 COL#: 8
TOTAL :: LVLS: 1 #LB: 46 #DK: 12 LB/K: 3 DB/K: 34 CLUF: 418
***************************************

 


基本表访问成本:
这里开始CBO将会计算单表访问的成本

单表访问路径
SINGLE TABLE ACCESS PATH

.............................................................................................................

............................1
Column: ENAME Col#: 2 Table: EMP Alias:

EMP.....................................................................2
NDV: 42 NULLS: 0 DENS: 2.3810e-002

...........................................................................3
TABLE: EMP ORIG CDN: 7213 CMPTD CDN: 172

........................................................................................4
Access path: tsc Resc: 6 Resp:

6............................................................................................................

5
Access path: index (equal)

.............................................................................................................

..................6
INDEX#: 23575 TABLE: EMP

.............................................................................................................

..............7
CST: 39 IXSEL: 0.0000e+000 TBSEL: 2.3810e-

002.......................................................................8
BEST_CST: 6.00 PATH: 2 Degree:

1............................................................................................................

..9

我们看一下上面是什么意思。首先CBO列出了ename列的统计信息(第2,3行),这些统计信息来自dba_tab_columns。
列的统计信息和dba_tab_columns中对应的列名如下
Trace label             dba_tables column
NDV                   NUM_DISTINCT     列的不重复值数
NULLS                NUM_NULLS        列的空行数
DENS                    DENSITY           列密度,没有直方图的情况下= 1/NDV
LO                       LOW_VALUE        列的最小值 (只对数字列)
HI                      HIGH_VALUE    列的最大值 (只对数字列)
第4行出现了表的行数ORIG CDN和计算过的行数 CMPTD CDN (computed cardinality). 计算公司如下,
CMPTD CDN = ORIG CDN * FF
在这里 FF 表示过滤因子(Filter Factor)。我们稍后再来看FF是什么及如何计算的。
第5行表示了全表扫描的成本。 这里的成本是62, 是由NBLKS和db_file_multi_block_read_count初始化参数计算出来的。.
第6-8行是索引访问的成本。
第9行是总结了以上信息并选出了最优的访问路径为全表扫描,成本为6。


表扫描成本
让我们来看一下全表扫描成本(tsc)是如何计算的 这里有其他两个大表的基本统计信息。
TOTAL :: CDN: 115630 NBLKS: 4339 TABLE_SCAN_CST: 265 AVG_ROW_LEN: 272
TOTAL :: CDN: 454503 NBLKS: 8975 TABLE_SCAN_CST: 548 AVG_ROW_LEN: 151
你可能曾经看到过全表扫描成本= 访问的块数目/ db_file_multi_block_read_count. 看起来这个等式很有意义因为oracle

在做全表扫描时每个I/O请求将会读取db_file_multi_block_read_count个块。但是,我们计算以上统计信息得到
NBLKS / TABLE_SCAN_CST = 4339 / 265 = 16.373 ≠ db_file_multi_block_read_count(这里的值是32,可以看前面参数那

一页)
另外一个表为
NBLKS / TABLE_SCAN_CST = 8975 / 548 = 16.377


全表扫描成本和db_file_multi_block_read_count

CBO将会根据NBLKS和db_file_multiblock_read_count来估计全表扫描成本,但是db_file_multiblock_read_count通常会被

打上折扣。实际上我们可以认为等式会是
TABLE_SCAN_CST = NBLKS / k
我们来看一下k和db_file_multiblock_read_count 究竟有什么规律可寻。我们来做一个实验,使用不同的
db_file_multiblock_read_count值4, 6,8, 12,16, 24,32来测试。

图请见WORD版本

横轴为db_file_multiblock_read_count,纵轴为K。
注意参数K仅仅用在全表扫描或快速索引扫描上,实际的I/O成本还与其他因数有关,比如说需要访问的表已经在内存中的块

及块的数量。


过滤因子(FF)
为了理解索引访问成本我们需要了解一下过滤因子。 过滤因子是一个介于0和1之间的数字,反映了记录的可选择性。如果一

个列有10种不同的值,我们需要查询等于其中某一个值的记录时,如果这10种值平均分布的话,你将得到1/10的行数。如果

没有直方图,过滤因子为FF = 1/NDV = density

再来看一下过滤因子和查询条件的关系
不使用绑定变量的情况:
predicate Filter factor
c1 = value 1/c1.num_distinct4
c1 like value 1/c1.num_distinct
c1 > value (Hi - value) / (Hi - Lo)
c1 >= value (Hi - value) / (Hi - Lo) + 1/c1.num_distinct
c1 < value (value - Lo) / (Hi - Lo)
c1 <= value (value - Lo) / (Hi - Lo) + 1/c1.num_distinct
c1 between val1 and val2 (val2 – val1) / (Hi - Lo) + 2 * 1/c1.num_distinct
使用绑定变量的情况(8i):
predicate Filter factor
col1 = :b1 col1.density
col1 {like | > | >= | < | <=} :b1 {5.0000e-02 | col1.
col1 between :b1 and :b2 5.0000e-02 * 5.0000e-
包含and和or的情况:
predicate Filter factor
predicate 1 and predicate 2 FF1 * FF2
predicate 1 or predicate 2 FF1 + FF2 – FF1 * FF2

包含直方图的列:
如果一个列包含了直方图信息,那么它的density就来自于直方图。关于直方图的内容请参考官方手册,这里不在细述。由于

直方图的存在FF并不是简单的等于1/NDV,而是来自于直方图中各个列的density,所有有直方图的话CBO将可能采取不一样的

执行路径。

索引访问成本:
现在我们知道了聚合因子的概念,我们再来看一看索引访问的成本
SINGLE TABLE ACCESS PATH

.............................................................................................................

............................1
Column: ENAME Col#: 2 Table: EMP Alias:

EMP.....................................................................2
NDV: 42 NULLS: 0 DENS: 2.3810e-002

...........................................................................3
TABLE: EMP ORIG CDN: 7213 CMPTD CDN: 172

........................................................................................4
Access path: tsc Resc: 6 Resp:

6............................................................................................................

5
Access path: index (equal)

.............................................................................................................

..................6
INDEX#: 23575 TABLE: EMP

.............................................................................................................

..............7
CST: 39 IXSEL: 0.0000e+000 TBSEL: 2.3810e-

002.......................................................................8
BEST_CST: 6.00 PATH: 2 Degree:

1............................................................................................................

..9

我们来看6-8行,这里表示了索引访问的成本。第6行表示这里采取索引equal的方法来访问,再来回忆一下索引的基本统计信


INDEX#: 23575 COL#: 2
TOTAL :: LVLS: 1 #LB: 48 #DK: 42 LB/K: 1 DB/K: 36 CLUF: 1534

根据索引成本计算公式
blevel + FF*leaf_blocks + FF*clustering_factor
1 + 2.3810e-002-2*48 + 2.3810e-002-2*1534 = 1 + 1.1429 + 36.5245 = 38.6674
这里的FF就等于TBSEL=DENS=2.3810e-002,由于我们的查询条件为ename = :b1所以得出FF为ENAME列的DENS,
其实索引访问方式的成本计算公式
• Unique scan blevel+1
• Fast full scan leaf_blocks / k ( k = 1.6765x0.6581 )
• Index-only blevel + FF*leaf_blocks


让我们用别的例子证明一下索引成本计算,语句为
select … from tbl a
where a.col#1 = :b1
and a.col#12 = :b2
and a.col#8 = :b3

索引和列的基本统计数据如下
INDEX#     COL#    LVLS    #LB        #DK     LB/K    DB/K    CLUF
8417       27,1    1    13100     66500     1        22     1469200
8418    1,12,7    2    19000 74700     1        15     1176500
8419    3,1,4,2     2    31000 49700     1       2     118000
15755    1,12,8    1    12600 18800     1        30     1890275
8416 1,2,33,4,5,6 2        25800 1890300 1       1    83900
Col#: 1 NDV: 10 NULLS: 0 DENS: 1.0000e-001-1
Col#: 12 NDV: 8 NULLS: 0 DENS: 1.2500e-001
Col#: 8 NDV: 33 NULLS: 0 DENS: 3.0303e-001

Access path: index

(scan).......................................................................................................

............................1
INDEX#: 8418 CST: 14947 IXSEL: 1.2500e-002 TBSEL: 1.2500e-002 ........................................2
Access path: index (equal)

.............................................................................................................

..................3
INDEX#: 15755 CST: 7209 IXSEL: 0.0000e+000 TBSEL: 3.7879e-003 ......................................4
Access path: index (scan)

.............................................................................................................

....................5
INDEX#: 8416 CST: 10972 IXSEL: 1.0000e-001 TBSEL: 1.0000e-001 ........................................6
5个索引中,索引(#8417 and #8419) 将不会被考虑因为他们的首列不出现在查询条件中。.

INDEX# 8418
索引包含的3个列中只有2列出现在查询条件中,所以只用2列的DENS来计算过滤因子
FF = 1.0000e-001 * 1.2500e-001= 1.2500e-002
cost = lvl + FF*#LB + FF*clustering factor
= 2 + 19,000*1.2500e-002 + 1176500*1.2500e-002
= 2 + 237.5 + 14706.25 = 14945.75
INDEX# 15755
索引包含的3列都出现在查询条件中,用3列的DENS计算过滤因子
FF = 1.0000e-001 * 1.2500e-001 * 3.0303e-001 = 3.7879e-003
cost = lvl + FF*#LB + FF*clustering factor
= 1 + 12,600*3.7879e-003 + 1,890,275*3.7879e-003
= 2 + 47.73 + 7160.13 = 7208.86
INDEX# 8416
索引包含的3个列中只有1列出现在查询条件中,所以只用1列的DENS来计算过滤因子
FF = 1.0000e-001
cost = lvl + FF*#LB + FF*clustering factor
= 2 + 25,800*1.0000e-001+ 83,900*1.0000e-001
= 2 + 2580 + 8390 = 10972
虽然索引8416只有一列出现在查询条件中,但是它的成本还是低于索引8418,因为它的聚合因子(clustering factor)比较低

,所以统计出来成本也比较低。关于聚合因子可以参考oracle官方文档。


综合计划:
这一部分开始是10053最大的一部分,在这里CBO会评估各种JOIN方式及顺序的成本。

1. NL - NESTED LOOP JOIN
join cost = cost of accessing outer table
+ (row number of outer table * cost of accessing inner table )
2. SM – SORT MERGE JOIN
join cost = (cost of accessing outer table + outer sort cost)
+ (cost of accessing inner table + inner sort cost)
3. HA – HASH JOIN
join cost = (cost of accessing outer table)
+ (cost of building hash table)
+ (cost of accessing inner table )


JOIN ORDER [N]

Join order[1]: DEPT [DEPT] EMP [EMP]
Now joining: EMP [EMP] *******
JOINS – NL
NL Join

.............................................................................................................

.................................................................1
Outer table: cost: 1 cdn: 16 rcz: 13 resp:

1..................................................................................2
Inner table: EMP

.............................................................................................................

.........................................3
Access path: tsc Resc: 6

.............................................................................................................

..................4
Join resc: 97 Resp: 97

.............................................................................................................

..................5
Access path: index (join stp)

.............................................................................................................

..............6
INDEX#: 23575 TABLE: EMP

.............................................................................................................

..............7
CST: 39 IXSEL: 0.0000e+000 TBSEL: 2.3810e-

002.......................................................................8
Join resc: 625 resp:625

.............................................................................................................

................9
Access path: index (join

index).......................................................................................................

..............10
INDEX#: 23576 TABLE: EMP

.............................................................................................................

............11
CST: 37 IXSEL: 0.0000e+000 TBSEL: 8.3333e-

002.....................................................................12
Join resc: 593 resp:593

.............................................................................................................

..............13
Access path: and-

equal........................................................................................................

...........................14
CST: 19

.............................................................................................................

..................................................15
Join resc: 305 resp:305

.............................................................................................................

..............16
Join cardinality: 172 = outer (16) * inner (172) * sel (6.2500e-002) [flag=0].................17
Best NL cost: 97 resp:

97...........................................................................................................

....................18
第1行为JOIN方式
第2行为驱动表的成本,行数,行大小。这里的行数为16,平均行长原本为20,但是因为DEPT表包含(DEPTNO, DEPT, and

LOC)3列但仅有DEPTNO,DEPT等2列需要被join,所以计算后平均行长为16,所以在这里也被称为low row size.
第3行到16行通过NL JOIN的成本计算公式,计算出几种不同join方法的成本。
1. Tablescan of EMP at a cost of 6:
cost = cost of outer + cardinality of outer * cost of inner = 1 + 16 * 6 = 97 lines 3 to 5
2. Scan of index 23575 on ENAME at a cost of 39:
cost = 1 + 16 * 39 = 625 lines 6 to 9
3. Scan of index 23576 on DEPTNO at a cost of 37:
cost = 1 + 16 * 37 = 593 lines 10 to 13
4. An “and-equal” access at a cost of 19:
cost = 1 + 16 * 19 = 305 lines 14 to 16
第17行CBO估算出这个JOIN结果集的记录数,它将被最为下一次join的输入。它的计算公式为
Join cardinality:= outer   * inner   * join selectivity
而join selectivity为
join selectivity = 1/max[ NDV(t1.c1), NDV(t2.c2) ]
* [ (card t1 - # t1.c1 NULLs) / card t1 ]
* [ (card t2 - # t2.c2 NULLs) / card t2 ]
Join cardinality只会被用于NL JOIN中,其他JOIN会采取不同办法。
最后在18行,CBO将会列出成本最低的NL JOIN的方法。

JOINS - SM
SM Join
Outer table:
resc: 1 cdn: 16 rcz: 13 deg: 1 resp: 1
Inner table: EMP
resc: 6 cdn: 172 rcz: 9 deg: 1 resp: 6
SORT resource Sort statistics
Sort width: 3 Area size: 43008 Degree: 1
Blocks to Sort: 1 Row size: 25 Rows: 16
Initial runs: 1 Merge passes: 1 Cost / pass: 2
Total sort cost: 2
SORT resource Sort statistics
Sort width: 3 Area size: 43008 Degree: 1
Blocks to Sort: 1 Row size: 20 Rows: 172
Initial runs: 1 Merge passes: 1 Cost / pass: 2
Total sort cost: 2
Merge join Cost: 10 Resp: 10
SM Join (with index on outer)
Access path: index (no sta/stp keys)
INDEX#: 23577 TABLE: DEPT
CST: 2 IXSEL: 1.0000e+000 TBSEL: 1.0000e+000
Outer table:
resc: 2 cdn: 16 rcz: 13 deg: 1 resp: 2
Inner table: EMP
resc: 6 cdn: 172 rcz: 9 deg: 1 resp: 6
SORT resource Sort statistics
Sort width: 3 Area size: 43008 Degree: 1
Blocks to Sort: 1 Row size: 20 Rows: 172
Initial runs: 1 Merge passes: 1 Cost / pass: 2
Total sort cost: 2
Merge join Cost: 10 Resp: 10
在SM JOIN中成本为
Cost of outer + cost of inner + sort cost for outer + sort cost for inner = 1+ 6 + 2 + 2 = 11.
在这里CBO减去1所以最终等于10。在第2个SM JOIN的方法下通过了已经排序的索引,所以成本为 2 + 6 + 0 (no sort on

outer) + 2 = 10.

JOINS – HA
HA Join
Outer table:
resc: 1 cdn: 16 rcz: 13 deg: 1 resp: 1
Inner table: EMP
resc: 6 cdn: 172 rcz: 9 deg: 1 resp: 6
Hash join one ptn: 1 Deg: 1
hash_area: 32 buildfrag: 33 probefrag: 1 ppasses: 2
Hash join Resc: 8 Resp: 8
Join result: cost: 8 cdn: 172 rcz: 22
根据HA JOIN公式,计算出成本为
(cost of accessing outer table)+ (cost of building hash table)+ (cost of accessing inner table )
=1+6+1=8

所以在这里HA JOIN会被选做最优化的执行路径,SQL语句将会最终走HA JOIN.


多重JOIN:
如果出现大于两个表进行JOIN的情况,那么会有更多的join顺序被考虑,4个表join的话会有24种join顺序,5个表的话会有

120个join顺序,n个表会有n!个join顺序。由于估算每种join顺序都会耗费cpu,所以oracle用一个初始化参数

optimizer_max_permutations来限制最大计算join顺序。若想了解多重join的更多信息,请搜索相关sql调整的资料。

结论:
10053是一个很好的理解CBO工作机制的工具,如果辅以10046事件查看执行计划,那么整个sql语句从解析到执行的过程都一

目了然了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 超参数优化是机器学习中至关重要的一环,它涉及到模型的性能和效果。超参数是指那些不直接由训练数据决定的参数,如学习速率、正则化参数、层数,等等。超参数优化的目标是找到最优的超参数组合,以提高模型的性能和泛化能力。 超参数优化的发展历程可以大致分为以下几个阶段: 1. 人工设定:在早期的机器学习应用中,超参数通常是由人工设定的,这需要经验和专业知识,并且很难找到最优的超参数组合。 2. 网格搜索:网格搜索是一种简单的超参数优化方法,它通过在超参数空间中定义一个网格,对每个超参数组合进行评估。但是,网格搜索的计算成本很高,不适用于超参数空间较大的情况。 3. 随机搜索:随机搜索是一种相对于网格搜索更高效的方法。它通过随机采样超参数空间中的点来进行优化。虽然计算成本比网格搜索低,但是随机搜索仍然需要大量的计算资源。 4. 贝叶斯优化:贝叶斯优化是一种基于贝叶斯统计的方法,它可以在较少的迭代次数内找到最优的超参数组合。贝叶斯优化通过构建一个高斯过程模型来估计超参数空间中不同点的目标值,然后利用贝叶斯公式计算目标函数的后验分布,从而指导下一轮的采样。 5. 演化算法:演化算法是一种基于进化思想的方法,它通过模拟自然进化过程来搜索最优的超参数组合。演化算法通常使用进化策略或遗传算法来进行优化,这些算法通过对超参数进行随机变异、交叉和选择,逐步优化超参数组合。 总的来说,随着计算机性能的提高和机器学习应用的不断发展,超参数优化也在不断发展和创新。未来,随着新的算法和技术的出现,超参数优化的效率和精度将会进一步提高。 ### 回答2: 超参数优化是指在机器学习算法中,通过对超参数(模型参数之外的配置参数)进行调整,从而找到最佳的超参数组合,以提高模型的性能和泛化能力。超参数优化的发展历程可以总结为以下几个阶段: 1. 人工调优阶段:最早期的机器学习算法中,超参数的选择通常是基于经验或者直觉来进行调整。这种方法的局限在于依赖于人工经验,效率低下,且不能保证找到最优的超参数组合。 2. 网格搜索:随着计算机技术的发展,人们开始使用网格搜索方法来优化超参数。网格搜索将超参数的取值范围划分为一个网格,并对每个网格点进行评估,找到最佳的超参数组合。网格搜索方法简单易懂,但计算复杂度较高,当超参数的取值范围较大时,搜索空间会非常大,导致计算时间长。 3. 随机搜索:为了解决网格搜索的计算复杂度问题,人们开始使用随机搜索方法。随机搜索随机采样超参数组合,并进行评估,然后根据评估结果更新采样分布,以便更多地搜索到有希望的超参数组合。随机搜索相较于网格搜索具有更高的效率,但仍然存在一些问题,如无法利用已有信息来进行更有针对性的采样。 4. 贝叶斯优化:贝叶斯优化是超参数优化的重要进展。它基于贝叶斯理论和高斯过程回归模型,建立了一个在超参数空间上的概率模型,并根据已有数据对概率模型进行训练和更新。贝叶斯优化可以根据已有数据的信息,自适应地采样更有可能获得好结果的超参数组合,从而更加高效地搜索到最佳的超参数组合。贝叶斯优化利用概率模型进行搜索,具有较高的效率和效果,但计算复杂度仍然较高。 5. 强化学习优化:近年来,强化学习方法开始应用于超参数优化。传统的贝叶斯优化通过模拟采样和评估来进行搜索,而强化学习方法则通过学习一个策略来决定在超参数空间上的采样和评估。强化学习在超参数优化中可以通过学习最优策略,来提升搜索的效率和效果,但其实现更复杂,需要更多的计算资源和训练时间。 通过以上历程,超参数优化从最早期的人工调优逐渐演变为自动化的优化过程,从简单的网格搜索和随机搜索,到贝叶斯优化和强化学习优化,越来越多的方法被提出来用于超参数优化,同时也解决了计算复杂度和效率的问题,为机器学习模型的性能提升带来了更大的帮助。 ### 回答3: 超参数优化是机器学习中的一个重要问题,指的是通过调整模型中的超参数,以提高模型的性能和泛化能力。超参数的选择对于模型的性能至关重要,但是并没有一个标准的方法来确定最佳的超参数。 超参数优化的发展历程可以分为以下几个阶段: 1. 手动调整:在早期,超参数的选择通常是由人工经验和试错法来确定的。通过不断调整超参数的值,观察模型在验证集上的表现,直到找到一个相对较好的超参数配置。虽然人工调整的方式简单直观,但是需要大量的时间和经验,并且无法保证找到全局最优解。 2. 网格搜索:随着计算能力的提升,研究者提出了网格搜索的方法来自动化超参数的选择。网格搜索通过指定超参数的候选值范围,对所有可能的超参数组合进行尝试,并选择在验证集上表现最好的模型。网格搜索的方法能够在有限的超参数空间中找到最优解,但是计算量较大,不能很好地处理高维问题。 3. 随机搜索:为了解决网格搜索计算量大的问题,随机搜索被提出。与网格搜索不同的是,随机搜索在超参数空间中随机选择一组超参数进行评估,通过多次随机选择来找到最优解。随机搜索能够在相对较少次数的尝试中找到相对较好的超参数组合,适合于计算资源有限的情况。 4. 基于模型的优化:基于模型的优化方法在超参数优化中也得到了广泛的应用。这类方法通过建立一个模型来估计超参数与性能之间的关系,然后通过优化模型来选择最佳的超参数。例如,贝叶斯优化将超参数优化问题转化为求解最大化后验概率的问题,利用贝叶斯方法建立模型,并通过不断迭代来逼近最优解。与传统的优化方法相比,基于模型的优化方法能够更高效地找到超参数的最优解。 综上所述,超参数优化经历了从手动调整到网格搜索、随机搜索,最后发展到基于模型的优化的过程。不断提出新的方法,为超参数优化提供了更高效、自动化的解决方案,帮助提升了机器学习模型的性能和泛化能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值