-
Notifications
You must be signed in to change notification settings - Fork 0
SDR Classifier
The SDR classifier is used to turn the HTM output or prediction SDR back into an estimated output value. Since the output value will not be an exact match, the classifier will find the highest probable value.
###How is the output value generated In an HTM, the input value is applied, spacial pooling, temporal pooling, and then output values are given. Some columns will be in the active state representing the output value. Some columns will be in the prediction state for 1 step in to the future. Others will be in the predictive state for 2 or more steps into the future (building context). If we wanted to try and predict the next input value, we would search the HTM for cells that are in the predictive state due to a segment that is predicting 1 step into the future. Given these active cells, we can use the proximal synapses to project an SDR into an SDR that is of the same size as the input space. This classifier does this by taking the predicted cells and multiplying them by the permanence of the proximal synapses, this gives you an SDR of float values that can be used for "classification".
###Classification The classifier takes theses output SDR values (floats) and compares the overlap of any input SDR that has overlap. The overlap is calculated by multiplying each overlapping cell (dot product of 2 SDRs), and then summing up the total overlap. Since we do this for each possible input SDR, we can then create a graph of overlapping totals (shown in the lower left in the GUI). The classifier will use the maximum overlap to select the value that is best match for the next input value.
In some cases the HTM will not give an input prediction. In the case of our classifier, the previous prediction value is used. The graph on the GUI will highlight this section of the graph in red to indicate that the HTM failed to make any prediction. Also, to make sure there wasn't too much noise in the output SDR being classified, the graph will also show the amount of values that did not overlap (the values in the prediction that didn't overlap with the input SDR being tested). This could be used as part of the classification, but for now it is only shown in the graph. Depending on the application, it may not be a good idea to use this "not overlapped" value anyways, one cool property of the SDR is that multiple inputs and output can be applied on top of each other, if that was the case, then the "not overlapped" metric wouldn't really tell you much.
One other thing to note in the GUI graph displaying the overlap amount, is that the values have been normalized. Many cases, the overlap sums will be quite large and the neighboring values will be very close. Seeing the difference in the bar sizes either need the axes adjusted, or the values normalized. To get both the overlap and notOverlap on the same graph, normalization is used today.
- Overview
- Informational Links
- GUI Overview
- SDR Encoder
- SDR Classifier
- Sine Function Prediction