O aprendizado por reforço (RL) abrange uma classe de técnicas de aprendizado de máquina (ML) que podem ser usadas para resolver problemas de tomada de decisão sequencial. As técnicas de RL encontraram aplicações generalizadas em vários domínios, incluindo serviços financeiros, navegação autônoma, controle industrial e comércio eletrônico. O objetivo de um problema de RL é treinar um agente que, dada uma observação de seu ambiente, escolherá a ação ótima que maximiza a recompensa cumulativa. Resolver um problema de negócios com RL envolve especificar o ambiente do agente, o espaço de ações, a estrutura de observações e a função de recompensa certa para o resultado de negócios alvo. Em métodos de RL baseados em políticas, o resultado do treinamento do modelo geralmente é uma política, que define uma distribuição de probabilidade sobre as ações dadas uma observação. A política ótima maximizará os retornos acumulados obtidos pelo agente.
Em problemas de tomada de decisão com restrições, o agente é encarregado de escolher as ações ótimas sob restrições. Existe uma classe distinta de tais problemas em que, dependendo do estado, o agente só pode escolher entre um subconjunto de todas as ações. As demais ações são inadmissíveis.
Por exemplo, considere um carro autônomo com 10 níveis de velocidade possíveis. Este carro só pode escolher entre um subconjunto de seus níveis de velocidade ao atravessar um bairro residencial. Aqui, a restrição nos níveis de velocidade é determinada pela localização do carro. Essas restrições parametrizadas nas ações são comuns em muitos problemas do mundo real. Resolver tais problemas com RL requer incorporar as restrições no processo de treinamento. Mascaramento de ação é uma abordagem para resolver problemas de RL que envolvem restrições de inadmissibilidade de maneira amostral eficiente. Como o nome sugere, envolve mascarar quaisquer ações inadmissíveis definindo sua probabilidade de amostragem como zero. A figura a seguir representa o ciclo RL com máscara de ação. Consiste em um agente, as restrições que determinam as máscaras de ação, as máscaras, as transições de estado e as recompensas observadas.
Neste post, descrevemos como implementar mascaramento de ação com RL do Amazon SageMaker usando espaços de ação paramétricos em Ray RLlib. Descrevemos um exemplo de problema que envolve espaços de ação multidimensionais discretos e múltiplas restrições. Para acessar o caderno completo deste post, veja o Exemplo de bloco de anotações do SageMaker no GitHub.
Visão geral do caso de uso
Consideramos um exemplo de problema de otimização de portfólio no qual um investidor negocia vários tipos de ativos para maximizar o valor total de seu portfólio. A carteira consiste em três tipos de ativos diferentes e um saldo de caixa que se refere simplesmente ao dinheiro que você tem em sua conta bancária. Durante cada período de investimento, o agente deve escolher a quantidade de cada tipo de ativo que deseja comprar ou vender. O agente usa o saldo de caixa disponível para financiar qualquer compra de ativos. Há também custos de transação associados a cada ação de compra/venda de ativos. Supõe-se que o preço de mercado de cada ativo varie ao longo do tempo. Os preços são amostrados aleatoriamente, mas modelados para mostrar um comportamento distinto com diferentes níveis de volatilidade. As faixas de preço para as três classes de ativos são mostradas na figura a seguir.
O conjunto de ações admissíveis para o agente é determinado por parâmetros como o valor atual total da carteira, o saldo atual de caixa, o número de cada tipo de ativo mantido e seu valor atual de mercado. Para este problema, aplicamos as seguintes restrições nas ações possíveis:
- C1 – O agente não pode vender mais unidades de qualquer tipo de ativo do que possui atualmente. Por exemplo, se o agente tiver 100 unidades do Ativo 3 no momento k em seu portfólio, ele não poderá vender 120 unidades desse ativo naquele momento.
- C2 – O ativo 3 é considerado altamente volátil pelos investidores. O agente não pode comprar o Ativo 3 se o valor total de suas participações no Ativo 3 for superior a um terço do valor total de sua carteira.
- C3 – Os consumidores do modelo RL têm uma preferência de risco moderada e consideram o Ativo 2 uma compra conservadora. Como resultado, o agente não pode comprar o Ativo 2 quando o valor total das participações do Ativo 2 ultrapassar dois terços do valor total da carteira.
- C4 – O agente não pode comprar nenhum ativo se seu saldo de caixa atual for inferior a $ 1 USD.
Configure o ambiente
Para começar, provisione uma instância de notebook SageMaker por meio de Estúdio Amazon SageMaker. Para mais informações, veja Usar instâncias de bloco de anotações do Amazon SageMaker.
Em seguida, implementamos o problema de negociação de portfólio em um Academia de IA aberta ambiente e treinar um agente RL usando o SageMaker RL. Um ambiente Gym fornece uma interface para o agente RL interagir com seu ambiente e gerar recompensas e observações. O ambiente para a negociação da carteira está localizado no trading.py
módulo. Nós usamos o __init__
para definir e inicializar alguns parâmetros do ambiente. Isso inclui custos de transação associados a ações de compra/venda de ativos, valor médio dos preços dos ativos, variações de preços e muito mais. Também definimos os espaços de observação e ação no __init__
método. Veja o seguinte código:
Como o agente negocia três ativos a qualquer momento, as ações tomadas pelo agente são representadas usando um vetor de ação tridimensional. As três ações discretas que compõem o vetor de ação representam as negociações em cada classe de ativos e cada uma pode ter 11 valores possíveis. Os 11 valores discretos codificam diferentes ações de venda, compra e retenção, conforme mostrado na figura a seguir. Por exemplo, escolher um1=3 se traduz no agente vendendo 20 unidades do tipo de ativo 1. Os ativos são comprados e vendidos em múltiplos de 10.
O espaço de observação tem uma estrutura de dicionário com dois elementos. Eles representam o estado de negociação atual e os valores de máscara de ação atuais. O estado de negociação é um vetor 7 × 1 que consiste nas quantidades de cada ativo atualmente detido pelo agente, saldo de caixa atual e o valor de mercado atual de cada um dos três ativos. A máscara de ação é uma matriz 3×11 com valores de máscara correspondentes a cada ação possível. O ambiente calcula os valores da máscara a cada momento usando um update_mask()
método. As ações que violam qualquer uma das restrições C1:C4 recebem uma máscara zero. O valor de mask é definido como 1 para ações admissíveis. Veja o seguinte código:
No início de cada episódio, um reset()
O método é chamado para reinicializar o estado de negociação, observações e outros parâmetros. O agente inicia cada episódio de treinamento com US$ 1,000 em saldo de caixa e zero participações em ativos. Cada episódio consiste em 20 períodos de investimento.
No início de cada período de investimento, o agente amostra uma ação com base nas últimas observações que registrou e atualiza seu portfólio. Isso é modelado usando um step()
método. Depois que o portfólio é atualizado, recalculamos o estado. A máscara de ação também é atualizada chamando o update_mask()
método.
A função de recompensa é definida como o valor total final da carteira e calculada ao final de cada episódio, que ocorre após 20 períodos de investimento.
modelo de máscara
A cada intervalo de tempo, o ambiente retorna o estado do dicionário e o modelo de ML que representa a política mostra uma ação com base nesse estado. Um modelo de ação paramétrica facilita a amostragem apenas das ações não mascaradas (máscara ≠ 0). Aqui descrevemos o modelo de ações paramétricas que permite o mascaramento de ações:
As ações são amostradas pelo modelo por meio de uma função Softmax usando os logits fornecidos por um modelo de incorporação de ações. Este modelo é definido no __init__
método. O próprio comportamento de mascaramento é implementado no forward()
método. Aqui, separamos as máscaras de ações e o estado de negociação do estado do dicionário recuperado do ambiente. As incorporações de ação são então obtidas passando o estado de negociação para a rede de incorporação de ação. Em seguida, modificamos o valor dos embeddings de cada ação adicionando logit_mod
aos logitos. Notar que logit_mod
é uma função do logaritmo da máscara de ação. Para ações com máscara =1, o logaritmo da máscara será zero, o que deixa seus embeddings inalterados. Por outro lado, quando mask=0, o logaritmo de mask → −∞. Porque Softmax(x)
→0 como x→ −∞, isso garante que as ações mascaradas não sejam amostradas pelo agente.
Vamos testar se a máscara está funcionando conforme o esperado. Iniciamos um objeto ray trainer e mascaramos algumas das ações e vemos se o treinador está amostrando apenas as ações não mascaradas:
A saída na captura de tela a seguir mostra a matriz de máscara de ação inicial.
Agora modificamos os vetores de máscara para que, para um1, todas as opções exceto a ação 8 (comprar 30 unidades do Ativo 1); para2 tudo, exceto a ação 5 (mantenha o Ativo 2 nos números atuais); e por um3, tudo exceto as ações 1 e 2 (vender 40 ou 30 unidades do Ativo 3) são mascarados:
Agora que modificamos a matriz de máscara de ação, tentamos experimentar uma nova ação.
O agente amostra apenas aquelas ações que são desmascaradas. Isso verifica se o mascaramento de ação está funcionando conforme o esperado.
Resultados
Agora que o ambiente e o modelo de ações paramétricas estão definidos, treinamos um agente para resolver o problema de otimização de portfólio usando o SageMaker RL. Treinamos um agente RL para aprender a política ótima para maximizar a recompensa sob as restrições C1:C4. Usamos o algoritmo de otimização de política proximal (PPO) no SageMaker RL para treinar o agente RL para 500,000 episódios. A configuração de treinamento a seguir mostra como especificamos o agente para usar o trading_mask
como um custom_model
ser usado:
O agente começa com $ 1,000 USD no saldo inicial de caixa. A recompensa média por episódio é plotada em função do tempo de treinamento, conforme mostrado no gráfico a seguir. Lembre-se de que usamos o valor total final do portfólio como recompensa. Ao final de 20 períodos de investimento, observamos que o valor médio da carteira do agente é superior a $ 3,000 USD.
limpar
Não provisionamos nenhuma infraestrutura além do uso de uma instância de notebook SageMaker. Se você estiver usando uma instância de bloco de anotações do SageMaker por meio do Studio, poderá desligá-la seguindo as instruções em Desligar um Notebook Aberto.
Conclusão
Nesta postagem, discutimos como você pode implementar o mascaramento de ação para impor restrições no treinamento do modelo RL. Ao mascarar ações inadmissíveis, permitimos que o agente experimente apenas ações válidas e aprenda a política ótima de maneira eficiente. Introduzimos um problema de otimização de portfólio em que o agente é encarregado de maximizar o valor de seu portfólio negociando três tipos de ativos sob várias restrições. Demonstramos como implementar mascaramento de ação multidimensional para esse problema usando Ray RLlib. Treinamos um agente RL para resolver o problema de otimização de portfólio restrito usando o SageMaker RL.
Agora que você sabe como executar o mascaramento de ação usando SageMaker RL e Ray RLlib na otimização de portfólio, pode experimentá-lo em outros problemas de RL que envolvam ações inadmissíveis. Você também pode adaptar o código de mascaramento de ação desenvolvido neste post para problemas mais simples envolvendo espaço de ação unidimensional. Incentivamos você a aplicar a abordagem desenvolvida aqui aos seus casos de uso de RL e nos informar se tiver dúvidas ou comentários.
Referências adicionais
Para obter informações adicionais e conteúdo relacionado, consulte os seguintes recursos:
Sobre os autores
Dilshad Raihan Akkam Veettil é cientista de dados da AWS Professional Services, onde interage com clientes de todos os setores para resolver seus desafios de negócios por meio do uso de aprendizado de máquina e computação em nuvem. Ele é PhD em Engenharia Aeroespacial pela Texas A&M University, College Station. Nos momentos de lazer, gosta de assistir futebol e ler.
Paul Budnarain é um Cientista Aplicado no grupo de Sistemas de Previsão de Inventário (IFS) da Amazon e mora em Los Angeles, Califórnia.
- Conteúdo com tecnologia de SEO e distribuição de relações públicas. Seja amplificado hoje.
- Platoblockchain. Inteligência Metaverso Web3. Conhecimento Ampliado. Acesse aqui.
- Fonte: https://aws.amazon.com/blogs/machine-learning/portfolio-optimization-through-multidimensional-action-optimization-using-amazon-sagemaker-rl/
- :é
- $3
- $UP
- 000
- 1
- 10
- 100
- 11
- 500k
- 7
- 8
- a
- acima
- Acesso
- Conta
- em
- Açao Social
- ações
- adaptar
- Adicional
- Informação adicional
- Indústria aeroespacial
- Depois de
- Agente
- agentes
- AI
- algoritmo
- Todos os Produtos
- Amazon
- Amazon Sage Maker
- e
- Angeles
- aplicações
- aplicado
- Aplicar
- abordagem
- SOMOS
- Ordem
- AS
- ativo
- Ativos
- atribuído
- associado
- assumiu
- At
- Autônomo
- disponível
- AWS
- Serviços Profissionais AWS
- Equilíbrio
- Bank
- conta bancária
- baseado
- BE
- Porque
- Começo
- Pós
- comprou
- negócio
- comprar
- by
- calculado
- calcula
- Califórnia
- chamado
- chamada
- CAN
- carro
- casas
- casos
- dinheiro
- desafios
- de cores
- escolhas
- Escolha
- escolha
- classe
- aulas
- Na nuvem
- computação em nuvem
- código
- Faculdade
- comum
- completar
- computação
- condição
- Configuração
- conservador
- Considerar
- considerado
- Consistindo
- restrições
- Consumidores
- conteúdo
- continuar
- ao controle
- Correspondente
- Custo
- custos
- Atravessar
- Atual
- Atualmente
- personalizadas
- Clientes
- ciclo
- dados,
- cientista de dados
- Tomada de Decisão
- definido
- Define
- demonstraram
- Dependendo
- descreve
- Determinar
- determinado
- desenvolvido
- diferente
- discutido
- distinto
- distribuição
- domínios
- down
- durante
- e-commerce,
- cada
- eficiente
- elementos
- permitir
- permite
- engloba
- encorajar
- Engenharia
- Meio Ambiente
- Cada
- tudo
- exemplo
- Exceto
- existe
- esperado
- explorar
- facilita
- retornos
- Figura
- final
- financiar
- financeiro
- serviços financeiros
- seguinte
- Futebol
- Escolha
- encontrado
- da
- função
- gerar
- GitHub
- dado
- Grupo
- ginásio
- mão
- acontece
- Ter
- Herói
- SUA PARTICIPAÇÃO FAZ A DIFERENÇA
- Alta
- altamente
- segurar
- Holdings
- detém
- Como funciona o dobrador de carta de canal
- Como Negociar
- HTML
- HTTPS
- executar
- implementado
- importar
- in
- inclui
- Incluindo
- incorporando
- índice
- industrial
- indústrias
- INFORMAÇÕES
- Infraestrutura
- do estado inicial,
- iniciar
- instância
- instruções
- interagir
- Interface
- introduzido
- inventário
- investimento
- investidor
- Investidores
- envolver
- IT
- ESTÁ
- se
- jpg
- Saber
- mais recente
- APRENDER
- aprendizagem
- Comprimento
- níveis
- localizado
- localização
- os
- Los Angeles
- Baixo
- máquina
- aprendizado de máquina
- fazer
- FAZ
- maneira
- muitos
- mercado
- Preços de mercado
- máscara
- Máscaras
- matemática
- Matriz
- max
- Maximizar
- maximiza
- máximo
- método
- métodos
- mínimo
- ML
- modelo
- modificada
- modificar
- Módulo
- dinheiro
- Monitore
- mais
- múltiplo
- nome
- Navegação
- rede
- Novo
- Próximo
- caderno
- número
- números
- numeroso
- numpy
- objeto
- objetivo
- observar
- obtido
- of
- on
- aberto
- ideal
- otimização
- Outros
- Resultado
- saída
- próprio
- propriedade
- parâmetros
- Passagem
- Realizar
- significativo
- períodos
- platão
- Inteligência de Dados Platão
- PlatãoData
- Privacidade
- pasta
- possível
- Publique
- preço
- Valores
- Problema
- problemas
- processo
- profissional
- fornece
- provisão
- compras
- quantidade
- Frequentes
- acaso
- RAY
- Leitura
- mundo real
- gravado
- refere-se
- registro
- relacionado
- remanescente
- representar
- representado
- representando
- exige
- residencial
- Recursos
- resultar
- retorno
- Retorna
- Recompensa
- Recompensas
- Risco
- Execute
- sábio
- Promoção
- Cientista
- AUTO
- vender
- Vender
- separado
- Serviços
- conjunto
- contexto
- mostrar
- mostrando
- Shows
- simplesmente
- So
- vendido
- RESOLVER
- Resolvendo
- alguns
- Espaço
- espaços
- velocidade
- começo
- começa
- Estado
- estação
- Passo
- Dê um basta
- estrutura
- estudo
- tal
- Sugere
- sistemas
- Tire
- Target
- técnicas
- teste
- texas
- que
- A
- O Estado
- deles
- Este
- Terceiro
- três
- tridimensional
- Através da
- tempo
- para
- Total
- trades
- Trading
- Trem
- treinado
- Training
- transação
- custos de transação
- Transações
- transições
- verdadeiro
- dois terços
- tipos
- para
- unidade
- unidades
- universidade
- Atualizar
- Atualizada
- Atualizações
- atualização
- us
- USD
- usar
- valor
- Valores
- via
- volátil
- 👍 Volatilidade
- assistindo
- O Quê
- qual
- generalizada
- precisarão
- de
- trabalhar
- X
- Vocês
- investimentos
- zefirnet
- zero