Ao estudar cursos teóricos em aprendizado de máquina (matemática. Economia, otimização, finanças, etc.), o conceito de um "problema duplo" é freqüentemente encontrado.
As tarefas duplas são frequentemente usadas para obter estimativas mais baixas (ou superiores) para o destino funcional em problemas de otimização. Além disso, para quase qualquer declaração significativa do problema de otimização, o problema duplo tem uma interpretação significativa. Ou seja, se você se deparar com um importante problema de otimização, o problema duplo também é provavelmente importante.
Neste artigo, falarei sobre a dualidade cônica. Essa maneira de construir tarefas duplas, na minha opinião, é imerecidamente privada de atenção ...
Próximo matan ...
Como as tarefas duplas geralmente são criadas?
Seja dado algum problema de otimização:
A tarefa dupla é construída de acordo com o seguinte esquema:
- Construa uma função dupla
A principal dificuldade desse esquema está ligada na etapa de pesquisa
.
Se o problema não for convexo, é um caixão - no caso geral, não pode ser resolvido em tempo polinomial (se
) e esses problemas neste artigo não entraremos em contato no futuro.
Suponha que o problema é convexo, e daí?
Se o problema for suave, podemos usar a condição de otimização de primeira ordem
. A partir dessa condição, se tudo estiver OK, deduzirá ou
e
ou diretamente função
.
Se o problema não for bom, poderíamos usar um análogo da condição de primeira ordem
(aqui
denota um subdiferencial de uma função
), no entanto, esse procedimento geralmente é muito mais complicado.
Às vezes, existe um problema de otimização “suave” equivalente e pode-se construir um duplo para ele. Mas, para a melhoria da estrutura (de não suave para suave), como regra, você sempre deve pagar um aumento de dimensão.
Dualidade cônica
Existem algumas tarefas de otimização (exemplos abaixo) que admitem a seguinte representação:
onde
- matriz
- vetor
- cone convexo não degenerado.
Nesse caso, a tarefa dupla pode ser construída de acordo com o seguinte esquema:
A tarefa dupla é construída de acordo com o seguinte esquema:
- Construa uma função dupla
onde está o cone conjugado
para cone
definido como
K ^ * = \ left \ {y \ em R ^ k | z ^ T y \ geq 0, \ quad \ forall z \ in K \ right \} .
Como vemos, toda a complexidade da construção do problema duplo foi transferida para a construção do cone duplo. Mas a alegria é que existe um bom cálculo para a construção de cones duplos e, muitas vezes, um cone duplo pode ser escrito imediatamente.
Exemplo
Suponha que precisamos construir um problema de otimização dupla para o problema:
Aqui
,
A primeira coisa que você pode notar: a função objetivo sempre pode ser linear!
Em vez disso, sempre há um problema equivalente com uma função objetivo linear:
Agora você precisa usar um pouco de conhecimento secreto: muitos
K_1 = \ {(x, t) \ em R ^ n \ vezes R | \ quad \ | x \ | _1 \ leq t \}
e
K_2 = \ {(x, t) \ em R ^ n \ vezes R | \ quad \ | x \ | _2 \ leq t \}
são cones convexos.
Assim, chegamos à notação equivalente do problema:
Agora podemos escrever imediatamente um problema duplo:
ou, para simplificar um pouco,
onde
.
Links para mais estudos: