Reinforcement learning (RL) omfattar en klass av maskininlärningstekniker (ML) som kan användas för att lösa sekventiella beslutsfattande problem. RL-tekniker har hittat utbredda tillämpningar inom många domäner, inklusive finansiella tjänster, autonom navigering, industriell kontroll och e-handel. Målet med ett RL-problem är att träna en agent som, givet en observation från sin omgivning, kommer att välja den optimala åtgärden som maximerar kumulativ belöning. Att lösa ett affärsproblem med RL innebär att specificera agentens miljö, handlingsutrymmet, strukturen för observationer och rätt belöningsfunktion för målet för affärsresultatet. I policybaserade RL-metoder är resultatet av modellträning ofta en policy, som definierar en sannolikhetsfördelning över de åtgärder som ges en observation. Den optimala policyn kommer att maximera den kumulativa avkastningen som agenten erhåller.
I begränsade beslutsfattande problem har agenten i uppdrag att välja de optimala åtgärderna under restriktioner. En distinkt klass av sådana problem existerar där agenten, beroende på tillståndet, endast tillåts välja från en delmängd av alla åtgärder. De återstående talan kan inte tas upp till sakprövning.
Tänk till exempel på en autonom bil som har 10 möjliga hastighetsnivåer. Den här bilen får endast tillåtas att välja från en delmängd av dess hastighetsnivåer när den korsar ett bostadsområde. Här bestäms begränsningen av hastighetsnivåerna av bilens placering. Sådana parametriserade begränsningar för åtgärderna är vanliga i många verkliga problem. Att lösa sådana problem med RL kräver att man införlivar begränsningarna i utbildningsprocessen. Actionmaskering är ett tillvägagångssätt för att lösa RL-problem som involverar otillåtlighetsbegränsningar på ett stickprovseffektivt sätt. Som namnet antyder handlar det om att maskera alla otillåtna handlingar genom att sätta deras provtagningssannolikhet till noll. Följande figur visar RL-cykeln med åtgärdsmaskering. Den består av en agent, de begränsningar som bestämmer åtgärdsmaskerna, maskerna, tillståndsövergångar och de observerade belöningarna.
I det här inlägget beskriver vi hur man implementerar actionmaskering med Amazon SageMaker RL använda parametriska åtgärdsmellanslag i Ray RLlib. Vi beskriver ett exempelproblem som involverar diskreta flerdimensionella handlingsutrymmen och flera begränsningar. För att komma åt hela anteckningsboken för detta inlägg, se SageMaker anteckningsboksexempel på GitHub.
Använda fallöversikt
Vi betraktar ett exempel på portföljoptimeringsproblem där en investerare handlar med flera tillgångstyper för att maximera deras totala portföljvärde. Portföljen består av tre olika tillgångstyper, och ett kassasaldo som helt enkelt refererar till pengar du har på ditt bankkonto. Under varje investeringsperiod måste agenten välja mängden av varje tillgångstyp som de köper eller säljer. Agenten använder det tillgängliga kassasaldot för att finansiera eventuella köp av tillgångar. Det finns också transaktionskostnader förknippade med varje köp-/säljåtgärd av tillgångar. Marknadspriset för varje tillgång antas variera över tiden. Priserna tas slumpmässigt men modelleras för att visa distinkt beteende med olika nivåer av volatilitet. Prisintervallen för de tre tillgångsslagen visas i följande figur.
Uppsättningen av tillåtna åtgärder för agenten bestäms av parametrar som det aktuella totala portföljvärdet, aktuellt kassasaldo, antalet av varje typ av tillgångar som innehas och deras aktuella marknadsvärde. För detta problem tillämpar vi följande begränsningar för möjliga åtgärder:
- C1 – Agenten kan inte sälja fler enheter av någon tillgångstyp än vad de för närvarande äger. Till exempel, om agenten har 100 enheter av tillgång 3 vid tidpunkten k i sin portfölj, kan den inte sälja 120 enheter av den tillgången vid den tidpunkten.
- C2 – Tillgång 3 anses vara mycket volatil av investerare. Agenten får inte köpa tillgång 3 om det totala värdet av deras innehav i tillgång 3 är över en tredjedel av deras totala portföljvärde.
- C3 – Konsumenter av RL-modellen har en måttlig riskpreferens och betraktar tillgång 2 som ett konservativt köp. Som ett resultat får agenten inte köpa tillgång 2 när det totala värdet av tillgång 2-innehav överstiger två tredjedelar av det totala portföljvärdet.
- C4 – Agenten kan inte köpa några tillgångar om dess nuvarande kassasaldo är mindre än $1 USD.
Ställ in miljön
För att börja, tillhandahålla en SageMaker anteckningsbok-instans via Amazon SageMaker Studio. För mer information, se Använd Amazon SageMaker Notebook-instanser.
Därefter implementerar vi portföljhandelsproblemet i en anpassad Öppna AI Gym miljö och utbilda en RL-agent med SageMaker RL. En gymmiljö tillhandahåller ett gränssnitt för RL-agenten att interagera med sin miljö och generera belöningar och observationer. Miljön för portföljhandeln ligger i trading.py
modul. Vi använder __init__
metod för att definiera och initiera vissa miljöparametrar. Detta inkluderar transaktionskostnader förknippade med köp-/säljåtgärder för tillgångar, medelvärdet av tillgångspriserna, prisavvikelser och mer. Vi definierar också observations- och handlingsutrymmen i __init__
metod. Se följande kod:
Eftersom agenten handlar med tre tillgångar vid varje given tidpunkt, representeras de åtgärder som vidtas av agenten med hjälp av en tredimensionell handlingsvektor. De tre diskreta åtgärderna som utgör actionvektorn representerar affärerna i varje tillgångsklass och kan var och en ta 11 möjliga värden. De 11 diskreta värdena kodar för olika sälj-, köp- och hållåtgärder, som visas i följande figur. Till exempel att välja en1=3 översätts till att agenten säljer 20 enheter av tillgångstyp 1. Tillgångar köps och säljs i multiplar av 10.
Observationsutrymmet har en ordboksstruktur med två element. Dessa representerar det aktuella handelsläget och de aktuella åtgärdsmaskvärdena. Handelstillståndet är en 7×1-vektor som består av kvantiteterna av varje tillgång som för närvarande innehas av agenten, aktuellt kassasaldo och det aktuella marknadsvärdet för var och en av de tre tillgångarna. Åtgärdsmasken är en 3×11-matris med maskvärden som motsvarar varje möjlig åtgärd. Miljön beräknar maskvärdena varje gång med hjälp av en update_mask()
metod. Åtgärder som bryter mot någon av begränsningarna C1:C4 tilldelas en nollmask. Värdet på masken är satt till 1 för tillåtna åtgärder. Se följande kod:
I början av varje avsnitt, a reset()
Metoden anropas för att återinitiera handelsstatus, observationer och andra parametrar. Agenten startar varje träningsavsnitt med $1,000 20 USD i kassasaldo och noll innehav i tillgångar. Varje avsnitt består av XNUMX investeringsperioder.
I början av varje investeringsperiod provar agenten en åtgärd baserat på de senaste observationerna som den registrerat och uppdaterar sin portfölj. Detta modelleras med hjälp av en step()
metod. Efter att portföljen är uppdaterad räknar vi om tillståndet. Åtgärdsmasken uppdateras också genom att anropa update_mask()
metod.
Belöningsfunktionen definieras som det slutliga totala portföljvärdet och beräknas i slutet av varje avsnitt, vilket sker efter 20 investeringsperioder.
Maskerande modell
Vid varje tidssteg returnerar miljön ordbokstillståndet och ML-modellen som representerar policyproven en åtgärd baserad på detta tillstånd. En parametrisk handlingsmodell underlättar sampling av endast de omaskerade (mask ≠ 0) åtgärderna. Här beskriver vi den parametriska åtgärdsmodellen som möjliggör åtgärdsmaskering:
Åtgärder samplas av modellen genom en Softmax-funktion med hjälp av logits som ges av en åtgärdsinbäddningsmodell. Denna modell definieras i __init__
metod. Själva maskeringsbeteendet implementeras i forward()
metod. Här separerar vi åtgärdsmaskerna och handelstillståndet från ordbokstillståndet som hämtas från miljön. Åtgärdsinbäddningarna erhålls sedan genom att överföra handelstillståndet till åtgärdsinbäddningsnätverket. Därefter ändrar vi värdet på inbäddningar av varje åtgärd genom att lägga till logit_mod
till logiterna. Lägg märke till att logit_mod
är en funktion av logaritmen för åtgärdsmasken. För åtgärder med mask =1 kommer maskens logaritm att vara noll, vilket lämnar deras inbäddningar oberörd. Å andra sidan, när mask=0, logaritmen för mask → −∞. Därför att Softmax(x)
→0 som x→ −∞, detta säkerställer att maskerade åtgärder inte samplas av agenten.
Låt oss testa om masken fungerar som förväntat. Vi initierar ett stråltränarobjekt och maskerar några av åtgärderna och ser om tränaren endast samplar de omaskerade åtgärderna:
Utdata i följande skärmdump visar den initiala actionmaskarrayen.
Nu modifierar vi maskvektorerna så att för a1, alla val utom åtgärd 8 (köp 30 enheter av tillgång 1); för en2 allt utom åtgärd 5 (håll tillgång 2 vid nuvarande nummer); och för en3, allt utom åtgärder 1 och 2 (sälj 40 eller 30 enheter av tillgång 3) är maskerade:
Nu när vi har modifierat åtgärdsmaskarrayen försöker vi prova en ny åtgärd.
Agenten samplar endast de åtgärder som är demaskerade. Detta verifierar att åtgärdsmaskeringen fungerar som förväntat.
Resultat
Nu när miljö- och parametriska åtgärdsmodellen har definierats utbildar vi en agent för att lösa portföljoptimeringsproblemet med SageMaker RL. Vi utbildar en RL-agent för att lära sig den optimala policyn för att maximera belöningen under begränsningarna C1:C4. Vi använder algoritmen för proximal policyoptimering (PPO) i SageMaker RL för att träna RL-agenten för 500,000 XNUMX episoder. Följande träningskonfiguration visar hur vi anger vilken agent som ska använda trading_mask
som en custom_model
att användas:
Agenten börjar med $1,000 20 USD i initialt kassasaldo. Den genomsnittliga belöningen per avsnitt plottas som en funktion av träningstiden, som visas i följande diagram. Kom ihåg att vi använder det slutliga totala portföljvärdet som belöning. Vid slutet av 3,000 investeringsperioder observerar vi att medelvärdet av agentens portfölj är över XNUMX XNUMX USD.
Städa upp
Vi tillhandahåller ingen infrastruktur utöver användningen av en SageMaker-anteckningsbok-instans. Om du använder en SageMaker notebook-instans via Studio kan du stänga av den genom att följa instruktionerna i Stäng av en öppen anteckningsbok.
Slutsats
I det här inlägget diskuterade vi hur du kan implementera åtgärdsmaskering för att upprätthålla begränsningar i RL-modellutbildning. Genom att maskera otillåtna åtgärder gör vi det möjligt för agenten att endast ta prov på giltiga åtgärder och lära sig den optimala policyn på ett exempeleffektivt sätt. Vi introducerade ett portföljoptimeringsproblem där agenten har till uppgift att maximera sitt portföljvärde genom att handla tre tillgångstyper under flera begränsningar. Vi visade hur man implementerar flerdimensionell åtgärdsmaskering för detta problem med Ray RLlib. Vi utbildade en RL-agent för att lösa problemet med begränsad portföljoptimering med SageMaker RL.
Nu när du vet hur du utför åtgärdsmaskering med SageMaker RL och Ray RLlib för portföljoptimering, kan du prova det på andra RL-problem som involverar otillåtna åtgärder. Du kan också anpassa åtgärdsmaskeringskoden som utvecklats i det här inlägget för enklare problem som involverar endimensionell handlingsrymd. Vi uppmuntrar dig att tillämpa det tillvägagångssätt som utvecklats här på dina RL-användningsfall och låt oss veta om du har några frågor eller feedback.
Ytterligare referenser
För ytterligare information och relaterat innehåll, se följande resurser:
Om författarna
Dilshad Raihan Akkam Veettil är en datavetare med AWS Professional Services, där han engagerar sig med kunder i olika branscher för att lösa deras affärsutmaningar genom användning av maskininlärning och molnberäkning. Han har en doktorsexamen i flygteknik från Texas A&M University, College Station. På fritiden tycker han om att titta på fotboll och läsa.
Paul Budnarain är en tillämpad forskare i Amazons grupp för Inventory Forecasting Systems (IFS) och är baserad i Los Angeles, Kalifornien.
- SEO-drivet innehåll och PR-distribution. Bli förstärkt idag.
- Platoblockchain. Web3 Metaverse Intelligence. Kunskap förstärkt. Tillgång här.
- Källa: https://aws.amazon.com/blogs/machine-learning/portfolio-optimization-through-multidimensional-action-optimization-using-amazon-sagemaker-rl/
- :är
- $3
- $UPP
- 000
- 1
- 10
- 100
- 11
- 500k
- 7
- 8
- a
- ovan
- tillgång
- Konto
- tvärs
- Handling
- åtgärder
- anpassa
- Annat
- ytterligare information
- Aerospace
- Efter
- Recensioner
- medel
- AI
- algoritm
- Alla
- amason
- Amazon SageMaker
- och
- Angeles
- tillämpningar
- tillämpas
- Ansök
- tillvägagångssätt
- ÄR
- array
- AS
- tillgång
- Tillgångar
- delad
- associerad
- antas
- At
- autonom
- tillgänglig
- AWS
- AWS professionella tjänster
- Balansera
- Bank
- bankkonto
- baserat
- BE
- därför att
- Börjar
- Bortom
- köpt
- företag
- Köp
- by
- beräknat
- beräknar
- kalifornien
- kallas
- anropande
- KAN
- bil
- Vid
- fall
- Kontanter
- utmaningar
- Diagram
- val
- Välja
- välja
- klass
- klasser
- cloud
- cloud computing
- koda
- College
- Gemensam
- fullborda
- databehandling
- tillstånd
- konfiguration
- konservativ
- Tänk
- anses
- Bestående
- begränsningar
- konsumenter
- innehåll
- fortsätta
- kontroll
- Motsvarande
- Pris
- Kostar
- Cross
- Aktuella
- För närvarande
- beställnings
- Kunder
- cykel
- datum
- datavetare
- Beslutsfattande
- definierade
- definierar
- demonstreras
- beroende
- beskriva
- Bestämma
- bestämd
- utvecklade
- olika
- diskuteras
- distinkt
- fördelning
- domäner
- ner
- under
- e-handel
- varje
- effektiv
- element
- möjliggöra
- möjliggör
- omfattar
- uppmuntra
- Teknik
- Miljö
- Varje
- allt
- exempel
- Utom
- finns
- förväntat
- utforska
- underlättar
- återkoppling
- Figur
- slutlig
- finansiering
- finansiella
- finansiella tjänster
- efter
- fotboll
- För
- hittade
- från
- fungera
- generera
- GitHub
- ges
- Grupp
- gym
- sidan
- händer
- Har
- Held
- här.
- Hög
- höggradigt
- hålla
- Innehav
- innehar
- Hur ser din drömresa ut
- How To
- html
- HTTPS
- genomföra
- genomföras
- importera
- in
- innefattar
- Inklusive
- införlivande
- index
- industriell
- industrier
- informationen
- Infrastruktur
- inledande
- initiera
- exempel
- instruktioner
- interagera
- Gränssnitt
- introducerade
- lager
- investering
- investerare
- För Investerare
- engagera
- IT
- DESS
- sig
- jpg
- Vet
- senaste
- LÄRA SIG
- inlärning
- Längd
- nivåer
- belägen
- läge
- den
- Los Angeles
- Låg
- Maskinen
- maskininlärning
- göra
- GÖR
- sätt
- många
- marknad
- Marknadspriser
- mask
- Masker
- matte
- Matris
- max
- Maximera
- maximerar
- maximal
- metod
- metoder
- minsta
- ML
- modell
- modifierad
- modifiera
- Modulerna
- pengar
- Övervaka
- mer
- multipel
- namn
- Navigering
- nät
- Nya
- Nästa
- anteckningsbok
- antal
- nummer
- talrik
- numpy
- objektet
- mål
- observera
- erhållna
- of
- on
- öppet
- optimala
- optimering
- Övriga
- Resultat
- produktion
- egen
- ägd
- parametrar
- Förbi
- Utföra
- perioden
- perioder
- plato
- Platon Data Intelligence
- PlatonData
- policy
- portfölj
- möjlig
- Inlägg
- pris
- Priser
- Problem
- problem
- process
- professionell
- ger
- tillhandahållande
- inköp
- mängd
- frågor
- slumpmässig
- STRÅLE
- Läsning
- verkliga världen
- registreras
- hänvisar
- register
- relaterad
- Återstående
- representerar
- representerade
- representerar
- Kräver
- bostads-
- Resurser
- resultera
- avkastning
- återgår
- Belöna
- Belöningar
- Risk
- Körning
- sagemaker
- Till Salu
- Forskare
- SJÄLV
- sälja
- Försäljningen
- separat
- Tjänster
- in
- inställning
- show
- visas
- Visar
- helt enkelt
- So
- säljs
- LÖSA
- Lösa
- några
- Utrymme
- utrymmen
- fart
- starta
- startar
- Ange
- stationen
- Steg
- Sluta
- struktur
- studio
- sådana
- Föreslår
- System
- Ta
- Målet
- tekniker
- testa
- texas
- den där
- Smakämnen
- Staten
- deras
- Dessa
- Tredje
- tre
- tredimensionella
- Genom
- tid
- till
- Totalt
- handel
- Handel
- Tåg
- tränad
- Utbildning
- transaktion
- transaktionskostnader
- Transaktioner
- övergångar
- sann
- två tredjedelar
- typer
- under
- enhet
- enheter
- universitet
- Uppdatering
- uppdaterad
- Uppdateringar
- uppdatering
- us
- USD
- användning
- värde
- Värden
- via
- flyktiga
- Volatilitet
- tittar
- Vad
- som
- utbredd
- kommer
- med
- arbetssätt
- X
- Om er
- Din
- zephyrnet
- noll-