Reinforcement learning (RL) omfatter en klasse af maskinlæringsteknikker (ML), der kan bruges til at løse sekventielle beslutningstagningsproblemer. RL-teknikker har fundet udbredte applikationer i adskillige domæner, herunder finansielle tjenester, autonom navigation, industriel kontrol og e-handel. Formålet med et RL-problem er at træne en agent, der, givet en observation fra sit miljø, vil vælge den optimale handling, der maksimerer kumulativ belønning. Løsning af et forretningsproblem med RL involverer specificering af agentens miljø, handlingsrummet, strukturen af observationer og den rigtige belønningsfunktion for målet for virksomhedens resultat. I policy-baserede RL-metoder er resultatet af modeltræning ofte en politik, som definerer en sandsynlighedsfordeling over de handlinger, der gives en observation. Den optimale politik vil maksimere de kumulative afkast opnået af agenten.
I begrænsede beslutningsproblemer har agenten til opgave at vælge de optimale handlinger under begrænsninger. Der eksisterer en særskilt klasse af sådanne problemer, hvor agenten, afhængigt af tilstanden, muligvis kun får lov til at vælge fra en delmængde af alle handlinger. De resterende søgsmål afvises.
Overvej for eksempel en autonom bil, der har 10 mulige hastighedsniveauer. Denne bil kan kun få lov til at vælge fra en delmængde af dens hastighedsniveauer, når den krydser et boligkvarter. Her er begrænsningen på hastighedsniveauerne bestemt af bilens placering. Sådanne parametriserede begrænsninger på handlingerne er almindelige i mange problemer i den virkelige verden. At løse sådanne problemer med RL kræver inkorporering af begrænsningerne i træningsprocessen. Action maskering er en tilgang til at løse RL-problemer, der involverer uantagelighedsbegrænsninger, på en stikprøveeffektiv måde. Som navnet antyder, involverer det maskering af eventuelle utilladelige handlinger ved at sætte deres stikprøvesandsynlighed til nul. Følgende figur viser RL-cyklussen med handlingsmaskering. Den består af en agent, de begrænsninger, der bestemmer handlingsmaskerne, maskerne, tilstandsovergange og de observerede belønninger.
I dette indlæg beskriver vi, hvordan man implementerer handlingsmaskering med Amazon SageMaker RL ved hjælp af parametriske handlingsrum i Ray RLlib. Vi beskriver et eksempelproblem, der involverer diskrete multidimensionelle handlingsrum og flere begrænsninger. For at få adgang til den komplette notesbog for dette indlæg, se SageMaker notesbog eksempel på GitHub.
Brug case oversigt
Vi betragter et eksempel på et porteføljeoptimeringsproblem, hvor en investor handler med flere aktivtyper for at maksimere deres samlede porteføljeværdi. Porteføljen består af tre forskellige aktivtyper, og en kassebeholdning, der blot refererer til penge, du har på din bankkonto. I hver investeringsperiode skal agenten vælge mængden af hver aktivtype, som de køber eller sælger. Agenten bruger den tilgængelige kassebeholdning til at finansiere eventuelle køb af aktiver. Der er også transaktionsomkostninger forbundet med hver aktiv køb/salg handling. Markedsprisen for hvert aktiv antages at variere over tid. Priserne er stikprøven tilfældigt, men modelleret til at vise særskilt adfærd med forskellige niveauer af volatilitet. Prisintervallerne for de tre aktivklasser er vist i følgende figur.
Sættet af tilladte handlinger for agenten bestemmes af parametre som den aktuelle samlede porteføljeværdi, nuværende kassebeholdning, antallet af hver type aktiver, der besiddes, og deres aktuelle markedsværdi. For dette problem håndhæver vi følgende begrænsninger for mulige handlinger:
- C1 – Agenten kan ikke sælge flere enheder af enhver aktivtype, end hvad de ejer i øjeblikket. For eksempel, hvis agenten har 100 enheder af aktiv 3 på tidspunktet k i deres portefølje, så kan den ikke sælge 120 enheder af det pågældende aktiv på det tidspunkt.
- C2 – Aktiv 3 anses for meget volatil af investorer. Agenten har ikke tilladelse til at købe aktiv 3, hvis den samlede værdi af deres beholdninger i aktiv 3 er over en tredjedel af deres samlede porteføljeværdi.
- C3 – Forbrugere af RL-modellen har en moderat risikopræference og betragter aktiv 2 som et konservativt køb. Som følge heraf har agenten ikke tilladelse til at købe aktiv 2, når den samlede værdi af aktiv 2-beholdninger krydser to tredjedele af den samlede porteføljeværdi.
- C4 – Agenten kan ikke købe nogen aktiver, hvis dens nuværende kassebeholdning er mindre end $1 USD.
Indstil miljøet
For at starte skal du klargøre en SageMaker notebook-instans via Amazon SageMaker Studio. For mere information, se Brug Amazon SageMaker Notebook-forekomster.
Dernæst implementerer vi porteføljehandelsproblemet i en brugerdefineret Åbn AI Gym miljø og træne en RL-agent ved hjælp af SageMaker RL. Et Gym-miljø giver en grænseflade for RL-agenten til at interagere med sit miljø og til at generere belønninger og observationer. Miljøet for porteføljehandel er placeret i trading.py
modul. Vi bruger __init__
metode til at definere og initialisere nogle miljøparametre. Dette inkluderer transaktionsomkostninger forbundet med aktivets køb/salgshandlinger, middelværdien af aktivpriserne, prisafvigelser og mere. Vi definerer også observations- og handlingsrummene i __init__
metode. Se følgende kode:
Fordi agenten handler med tre aktiver på et givet tidspunkt, repræsenteres de handlinger, som agenten foretager, ved hjælp af en tredimensionel handlingsvektor. De tre diskrete handlinger, der udgør handlingsvektoren, repræsenterer handlerne i hver aktivklasse og kan hver have 11 mulige værdier. De 11 diskrete værdier koder for forskellige salgs-, købs- og holdhandlinger, som vist i den følgende figur. For eksempel at vælge en1=3 oversættes til, at agenten sælger 20 enheder af aktivtype 1. Aktiver købes og sælges i multipla af 10.
Observationsrummet har en ordbogsstruktur med to elementer. Disse repræsenterer den aktuelle handelstilstand og de aktuelle handlingsmaskeværdier. Handelstilstanden er en 7×1-vektor, der består af mængderne af hvert aktiver, der i øjeblikket besiddes af agenten, den aktuelle kassebeholdning og den aktuelle markedsværdi af hvert af de tre aktiver. Handlingsmasken er en 3×11 matrix med maskeværdier svarende til hver mulig handling. Miljøet beregner maskeværdierne hver gang ved hjælp af en update_mask()
metode. Handlinger, der overtræder nogen af begrænsningerne C1:C4, tildeles en nulmaske. Værdien af masken er sat til 1 for tilladelige handlinger. Se følgende kode:
I begyndelsen af hver episode, en reset()
metode kaldes for at geninitialisere handelstilstanden, observationer og andre parametre. Agenten starter hver træningsepisode med $1,000 USD i kontantbeholdning og nul beholdninger i aktiver. Hver episode består af 20 investeringsperioder.
I begyndelsen af hver investeringsperiode prøver agenten en handling baseret på de seneste observationer, den har registreret, og opdaterer sin portefølje. Dette er modelleret ved hjælp af en step()
metode. Efter porteføljen er opdateret, genberegner vi tilstanden. Handlingsmasken opdateres også ved at kalde update_mask()
fremgangsmåde.
Belønningsfunktionen defineres som den endelige samlede porteføljeværdi og beregnes i slutningen af hver episode, hvilket sker efter 20 investeringsperioder.
Maskeringsmodel
Ved hvert tidstrin returnerer miljøet ordbogstilstanden og ML-modellen, der repræsenterer politikeksemplerne, en handling baseret på denne tilstand. En parametrisk handlingsmodel letter sampling kun af de umaskerede (maske ≠ 0) handlinger. Her beskriver vi den parametriske handlingsmodel, der muliggør handlingsmaskering:
Handlinger samples af modellen gennem en Softmax-funktion ved hjælp af logits givet af en handlingsindlejringsmodel. Denne model er defineret i __init__
metode. Selve maskeringsadfærden er implementeret i forward()
metode. Her adskiller vi handlingsmaskerne og handelstilstanden fra ordbogstilstanden hentet fra miljøet. Handlingsindlejringerne opnås derefter ved at overføre handelstilstanden til handlingsindlejringsnetværket. Dernæst ændrer vi værdien af indlejringer af hver handling ved at tilføje logit_mod
til logitterne. Læg mærke til det logit_mod
er en funktion af handlingsmaskens logaritme. For handlinger med maske =1 vil maskens logaritme være nul, hvilket efterlader deres indlejringer uforstyrret. På den anden side, når maske=0, logaritmen af maske → −∞. Fordi Softmax(x)
→0 som x→ −∞Dette sikrer, at maskerede handlinger ikke udtages af agenten.
Lad os teste, om masken virker som forventet. Vi starter et stråletrænerobjekt og maskerer nogle af handlingerne og ser, om træneren kun prøver de umaskerede handlinger:
Outputtet i det følgende skærmbillede viser den indledende handlingsmaske.
Nu modificerer vi maskevektorerne, så for a1, alle valg undtagen handling 8 (køb 30 enheder af aktiv 1); for en2 alt undtagen handling 5 (hold aktiv 2 på nuværende tal); og for en3, alt undtagen handling 1 og 2 (sælg 40 eller 30 enheder af aktiv 3) er maskeret:
Nu hvor vi har ændret handlingsmaske-arrayet, prøver vi at prøve en ny handling.
Agenten prøver kun de handlinger, der er afsløret. Dette bekræfter, at handlingsmaskering fungerer som forventet.
Resultater
Nu hvor miljø- og parametriske handlingsmodellen er defineret, træner vi en agent til at løse porteføljeoptimeringsproblemet ved hjælp af SageMaker RL. Vi træner en RL-agent til at lære den optimale politik for at maksimere belønningen under begrænsningerne C1:C4. Vi bruger den proksimale politikoptimeringsalgoritme (PPO) i SageMaker RL til at træne RL-agenten til 500,000 episoder. Den følgende træningskonfiguration viser, hvordan vi angiver den agent, der skal bruge trading_mask
som en custom_model
at blive brugt:
Agenten starter med $1,000 USD i indledende kontantsaldo. Den gennemsnitlige belønning pr. episode er plottet som en funktion af træningstiden, som vist i det følgende diagram. Husk, at vi bruger den endelige samlede porteføljeværdi som belønning. Ved udgangen af 20 investeringsperioder observerer vi, at middelværdien af agentens portefølje er over $3,000 USD.
Ryd op
Vi leverede ikke nogen infrastruktur ud over brugen af en SageMaker notebook-instans. Hvis du bruger en SageMaker notebook-instans via Studio, kan du lukke den ned ved at følge instruktionerne i Luk en åben notesbog ned.
Konklusion
I dette indlæg diskuterede vi, hvordan du kan implementere handlingsmaskering for at håndhæve begrænsninger i RL-modeltræning. Ved at maskere utilladelige handlinger gør vi det muligt for agenten kun at prøve gyldige handlinger og lære den optimale politik på en prøveeffektiv måde. Vi introducerede et porteføljeoptimeringsproblem, hvor agenten har til opgave at maksimere deres porteføljeværdi ved at handle tre aktivtyper under flere begrænsninger. Vi demonstrerede, hvordan man implementerer multidimensionel handlingsmaskering til dette problem ved hjælp af Ray RLlib. Vi trænede en RL-agent til at løse problemet med begrænset porteføljeoptimering ved hjælp af SageMaker RL.
Nu hvor du ved, hvordan du udfører handlingsmaskering ved hjælp af SageMaker RL og Ray RLlib på porteføljeoptimering, kan du prøve det på andre RL-problemer, der involverer utilladelige handlinger. Du kan også tilpasse handlingsmaskeringskoden udviklet i dette indlæg til enklere problemer, der involverer et-dimensionelt handlingsrum. Vi opfordrer dig til at anvende den tilgang, der er udviklet her, på dine RL-brugssager og give os besked, hvis du har spørgsmål eller feedback.
Yderligere referencer
For yderligere oplysninger og relateret indhold, se følgende ressourcer:
Om forfatterne
Dilshad Raihan Akkam Veettil er en Data Scientist med AWS Professional Services, hvor han engagerer sig med kunder på tværs af brancher for at løse deres forretningsmæssige udfordringer gennem brug af machine learning og cloud computing. Han har en ph.d.-grad i rumfartsteknik fra Texas A&M University, College Station. I sin fritid nyder han at se fodbold og læse.
Paul Budnarain er en Applied Scientist i Amazons Inventory Forecasting Systems (IFS) gruppe og er baseret i Los Angeles, Californien.
- SEO Powered Content & PR Distribution. Bliv forstærket i dag.
- Platoblokkæde. Web3 Metaverse Intelligence. Viden forstærket. Adgang her.
- Kilde: https://aws.amazon.com/blogs/machine-learning/portfolio-optimization-through-multidimensional-action-optimization-using-amazon-sagemaker-rl/
- :er
- $3
- $OP
- 000
- 1
- 10
- 100
- 11
- 500k
- 7
- 8
- a
- over
- adgang
- Konto
- tværs
- Handling
- aktioner
- tilpasse
- Yderligere
- yderligere information
- Luftfart
- Efter
- Agent
- midler
- AI
- algoritme
- Alle
- Amazon
- Amazon SageMaker
- ,
- Angeles
- applikationer
- anvendt
- Indløs
- tilgang
- ER
- Array
- AS
- aktiv
- Aktiver
- tildelt
- forbundet
- antaget
- At
- autonom
- til rådighed
- AWS
- AWS Professional Services
- Balance
- Bank
- bankkonto
- baseret
- BE
- fordi
- Begyndelse
- Beyond
- købte
- virksomhed
- købe
- by
- beregnet
- beregner
- california
- kaldet
- ringer
- CAN
- bil
- tilfælde
- tilfælde
- Kontanter
- udfordringer
- Chart
- valg
- Vælg
- vælge
- klasse
- klasser
- Cloud
- cloud computing
- kode
- Kollegium
- Fælles
- fuldføre
- computing
- betingelse
- Konfiguration
- konservativ
- Overvej
- betragtes
- Bestående
- begrænsninger
- Forbrugere
- indhold
- fortsæt
- kontrol
- Tilsvarende
- Koste
- Omkostninger
- Cross
- Nuværende
- For øjeblikket
- skik
- Kunder
- cyklus
- data
- dataforsker
- Beslutningstagning
- definerede
- definerer
- demonstreret
- Afhængigt
- beskrive
- Bestem
- bestemmes
- udviklet
- forskellige
- drøftet
- distinkt
- fordeling
- Domæner
- ned
- i løbet af
- e-handel
- hver
- effektiv
- elementer
- muliggøre
- muliggør
- vedrører generelt
- tilskynde
- Engineering
- Miljø
- Hver
- at alt
- eksempel
- Undtagen
- eksisterer
- forventet
- udforske
- letter
- tilbagemeldinger
- Figur
- endelige
- finansiere
- finansielle
- finansielle tjenesteydelser
- efter
- fodbold
- Til
- fundet
- fra
- funktion
- generere
- GitHub
- given
- gruppe
- gym
- hånd
- sker
- Have
- Held
- link.
- Høj
- stærkt
- hold
- Holdings
- besidder
- Hvordan
- How To
- HTML
- HTTPS
- gennemføre
- implementeret
- importere
- in
- omfatter
- Herunder
- inkorporering
- indeks
- industrielle
- industrier
- oplysninger
- Infrastruktur
- initial
- indlede
- instans
- anvisninger
- interagere
- grænseflade
- introduceret
- opgørelse
- investering
- investor
- Investorer
- involvere
- IT
- ITS
- selv
- jpg
- Kend
- seneste
- LÆR
- læring
- Længde
- niveauer
- placeret
- placering
- den
- Los Angeles
- Lav
- maskine
- machine learning
- lave
- maerker
- måde
- mange
- Marked
- Markedspriser
- maske
- Masker
- matematik
- Matrix
- max
- Maksimer
- Maksimerer
- maksimal
- metode
- metoder
- minimum
- ML
- model
- modificeret
- ændre
- Moduler
- penge
- Overvåg
- mere
- flere
- navn
- Navigation
- netværk
- Ny
- næste
- notesbog
- nummer
- numre
- talrige
- bedøvet
- objekt
- objektiv
- observere
- opnået
- of
- on
- åbent
- optimal
- optimering
- Andet
- Resultat
- output
- egen
- ejede
- parametre
- Passing
- Udfør
- periode
- perioder
- plato
- Platon Data Intelligence
- PlatoData
- politik
- portefølje
- mulig
- Indlæg
- pris
- Priser
- Problem
- problemer
- behandle
- professionel
- giver
- bestemmelse
- indkøb
- mængde
- Spørgsmål
- tilfældig
- RAY
- Læsning
- virkelige verden
- registreres
- refererer
- register
- relaterede
- resterende
- repræsentere
- repræsenteret
- repræsenterer
- Kræver
- boligområder
- Ressourcer
- resultere
- afkast
- afkast
- Beløn
- Belønninger
- Risiko
- Kør
- sagemaker
- salg
- Videnskabsmand
- SELV
- sælger
- Salg
- adskille
- Tjenester
- sæt
- indstilling
- Vis
- vist
- Shows
- ganske enkelt
- So
- solgt
- SOLVE
- Løsning
- nogle
- Space
- rum
- hastighed
- starte
- starter
- Tilstand
- station
- Trin
- Stands
- struktur
- Studio
- sådan
- foreslår
- Systemer
- Tag
- mål
- teknikker
- prøve
- Texas
- at
- Staten
- deres
- Disse
- Tredje
- tre
- tredimensionale
- Gennem
- tid
- til
- I alt
- handler
- Trading
- Tog
- uddannet
- Kurser
- transaktion
- transaktionsomkostninger
- Transaktioner
- overgange
- sand
- to tredjedele
- typer
- under
- enhed
- enheder
- universitet
- Opdatering
- opdateret
- opdateringer
- opdatering
- us
- USD
- brug
- værdi
- Værdier
- via
- flygtige
- Volatilitet
- ser
- Hvad
- som
- udbredt
- vilje
- med
- arbejder
- X
- Du
- Din
- zephyrnet
- nul