-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathindex.html
More file actions
144 lines (142 loc) · 7.53 KB
/
index.html
File metadata and controls
144 lines (142 loc) · 7.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Reinforcement Learning: Introduction</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Reinforcement Learning
 <span id="projectnumber">1.1</span>
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.svg"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('index.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="PageDoc"><div class="header">
<div class="headertitle">
<div class="title">Introduction </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>Enterprises are constantly faced with decisions that require picking from a set of actions based on contextual information. Real world reinforcement-based techniques are effective tools in aiding decision making; they rely on free interaction data to "predict" and "learn". This library implements an interface for reinforcement-based prediction based on contextual bandits.</p>
<h2><a class="anchor" id="autotoc_md0"></a>
Reinforcement Learning Loop</h2>
<p><img src="../rl-loop.GIF" alt="Reinforcement Learning Loop" class="inline"/></p>
<h2><a class="anchor" id="autotoc_md1"></a>
RL Inference API</h2>
<p>This API allows the developer to perform inference (choosing an action from an action set) and to report the outcome of this decision. The inference library automatically sends the action set, the decision, and the outcome to an online trainer running in the Azure cloud. It also periodically refreshes its copy of the model produced by the online trainer.</p>
<h2><a class="anchor" id="autotoc_md2"></a>
API Usage: Basic steps to using the RL Inference API</h2>
<p><a class="el" href="classreinforcement__learning_1_1live__model.html" title="Interface class for the Inference API.">reinforcement_learning::live_model</a> class is the main driving interface of the RL Inference API</p><ul>
<li>Instantiate and initialize live_model <div class="fragment"><div class="line"> r::cb_loop rl(config);</div>
</div><!-- fragment --><div class="fragment"><div class="line"> <span class="keywordflow">if</span> (rl.init(&status) != err::success)</div>
<div class="line"> {</div>
<div class="line"> std::cout << status.get_error_msg() << std::endl;</div>
<div class="line"> <span class="keywordflow">return</span> -1;</div>
<div class="line"> }</div>
</div><!-- fragment --></li>
<li>choose_rank() to choose an action from a list of actions (action set) <div class="fragment"><div class="line"> <span class="comment">// Response class</span></div>
<div class="line"> r::ranking_response response;</div>
<div class="line"> </div>
<div class="line"> <span class="keywordflow">if</span> (rl.choose_rank(event_id, context, response, &status) != err::success)</div>
<div class="line"> {</div>
<div class="line"> std::cout << status.get_error_msg() << std::endl;</div>
<div class="line"> <span class="keywordflow">return</span> -1;</div>
<div class="line"> }</div>
</div><!-- fragment --></li>
<li>report_outcome() to provide the outcome of the chosen action (The default outcome is used when this call is not used) <div class="fragment"><div class="line"> <span class="comment">// Report received outcome (Optional: if this call is not made, default missing outcome is applied)</span></div>
<div class="line"> <span class="comment">// Missing outcome can be thought of as negative reinforcement</span></div>
<div class="line"> <span class="keywordflow">if</span> (rl.report_outcome(event_id, outcome, &status) != err::success)</div>
<div class="line"> {</div>
<div class="line"> std::cout << status.get_error_msg() << std::endl;</div>
<div class="line"> <span class="keywordflow">return</span> -1;</div>
<div class="line"> }</div>
</div><!-- fragment --></li>
</ul>
</div></div><!-- PageDoc -->
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
</ul>
</div>
</body>
</html>