@@ -107,8 +107,8 @@ public class Parameters implements Persistable {
107107 defaultSpatialParams .put (KEY .LOCAL_AREA_DENSITY , -1.0 );
108108 defaultSpatialParams .put (KEY .NUM_ACTIVE_COLUMNS_PER_INH_AREA , 10.0 );
109109 defaultSpatialParams .put (KEY .STIMULUS_THRESHOLD , 0.0 );
110- defaultSpatialParams .put (KEY .SYN_PERM_INACTIVE_DEC , 0.008 );//0.01
111- defaultSpatialParams .put (KEY .SYN_PERM_ACTIVE_INC , 0.05 );//0.1
110+ defaultSpatialParams .put (KEY .SYN_PERM_INACTIVE_DEC , 0.008 );
111+ defaultSpatialParams .put (KEY .SYN_PERM_ACTIVE_INC , 0.05 );
112112 defaultSpatialParams .put (KEY .SYN_PERM_CONNECTED , 0.10 );
113113 defaultSpatialParams .put (KEY .SYN_PERM_BELOW_STIMULUS_INC , 0.01 );
114114 defaultSpatialParams .put (KEY .SYN_PERM_TRIM_THRESHOLD , 0.05 );
@@ -223,7 +223,7 @@ public static enum KEY {
223223 * predicted but inactive segments are decremented.
224224 */
225225 PREDICTED_SEGMENT_DECREMENT ("predictedSegmentDecrement" , Double .class , 0.0 , 9.0 ),
226- /** Remove this and add Logging (slf4j) */
226+ /** TODO: Remove this and add Logging (slf4j) */
227227 //TM_VERBOSITY("tmVerbosity", Integer.class, 0, 10),
228228
229229
@@ -234,21 +234,136 @@ public static enum KEY {
234234 * using the Network API (which sets this automatically)
235235 */
236236 POTENTIAL_RADIUS ("potentialRadius" , Integer .class ),
237+ /**
238+ * The percent of the inputs, within a column's potential radius, that a
239+ * column can be connected to. If set to 1, the column will be connected
240+ * to every input within its potential radius. This parameter is used to
241+ * give each column a unique potential pool when a large potentialRadius
242+ * causes overlap between the columns. At initialization time we choose
243+ * ((2*potentialRadius + 1)^(# inputDimensions) * potentialPct) input bits
244+ * to comprise the column's potential pool.
245+ */
237246 POTENTIAL_PCT ("potentialPct" , Double .class ), //TODO add range here?
247+ /**
248+ * If true, then during inhibition phase the winning columns are selected
249+ * as the most active columns from the region as a whole. Otherwise, the
250+ * winning columns are selected with respect to their local neighborhoods.
251+ * Using global inhibition boosts performance x60.
252+ */
238253 GLOBAL_INHIBITION ("globalInhibition" , Boolean .class ),
254+ /**
255+ * The inhibition radius determines the size of a column's local
256+ * neighborhood. A cortical column must overcome the overlap score of
257+ * columns in its neighborhood in order to become active. This radius is
258+ * updated every learning round. It grows and shrinks with the average
259+ * number of connected synapses per column.
260+ */
239261 INHIBITION_RADIUS ("inhibitionRadius" , Integer .class , 0 , null ),
262+ /**
263+ * The desired density of active columns within a local inhibition area
264+ * (the size of which is set by the internally calculated inhibitionRadius,
265+ * which is in turn determined from the average size of the connected
266+ * potential pools of all columns). The inhibition logic will insure that
267+ * at most N columns remain ON within a local inhibition area, where
268+ * N = localAreaDensity * (total number of columns in inhibition area).
269+ */
240270 LOCAL_AREA_DENSITY ("localAreaDensity" , Double .class ), //TODO add range here?
271+ /**
272+ * An alternate way to control the density of the active columns. If
273+ * numActiveColumnsPerInhArea is specified then localAreaDensity must be
274+ * less than 0, and vice versa. When using numActiveColumnsPerInhArea, the
275+ * inhibition logic will insure that at most 'numActiveColumnsPerInhArea'
276+ * columns remain ON within a local inhibition area (the size of which is
277+ * set by the internally calculated inhibitionRadius, which is in turn
278+ * determined from the average size of the connected receptive fields of all
279+ * columns). When using this method, as columns learn and grow their
280+ * effective receptive fields, the inhibitionRadius will grow, and hence the
281+ * net density of the active columns will *decrease*. This is in contrast to
282+ * the localAreaDensity method, which keeps the density of active columns
283+ * the same regardless of the size of their receptive fields.
284+ */
241285 NUM_ACTIVE_COLUMNS_PER_INH_AREA ("numActiveColumnsPerInhArea" , Double .class ),//TODO add range here?
286+ /**
287+ * This is a number specifying the minimum number of synapses that must be
288+ * on in order for a columns to turn ON. The purpose of this is to prevent
289+ * noise input from activating columns. Specified as a percent of a fully
290+ * grown synapse.
291+ */
242292 STIMULUS_THRESHOLD ("stimulusThreshold" , Double .class ), //TODO add range here?
293+ /**
294+ * The amount by which an inactive synapse is decremented in each round.
295+ * Specified as a percent of a fully grown synapse.
296+ */
243297 SYN_PERM_INACTIVE_DEC ("synPermInactiveDec" , Double .class , 0.0 , 1.0 ),
298+ /**
299+ * The amount by which an active synapse is incremented in each round.
300+ * Specified as a percent of a fully grown synapse.
301+ */
244302 SYN_PERM_ACTIVE_INC ("synPermActiveInc" , Double .class , 0.0 , 1.0 ),
303+ /**
304+ * The default connected threshold. Any synapse whose permanence value is
305+ * above the connected threshold is a "connected synapse", meaning it can
306+ * contribute to the cell's firing.
307+ */
245308 SYN_PERM_CONNECTED ("synPermConnected" , Double .class , 0.0 , 1.0 ),
309+ /**
310+ * <b>WARNING:</b> This is a <i><b>derived</b><i> value, and is overwritten
311+ * by the SpatialPooler algorithm's initialization.
312+ *
313+ * The permanence increment amount for columns that have not been
314+ * recently active
315+ */
246316 SYN_PERM_BELOW_STIMULUS_INC ("synPermBelowStimulusInc" , Double .class , 0.0 , 1.0 ),
317+ /**
318+ * <b>WARNING:</b> This is a <i><b>derived</b><i> value, and is overwritten
319+ * by the SpatialPooler algorithm's initialization.
320+ *
321+ * Values below this are "clipped" and zero'd out.
322+ */
247323 SYN_PERM_TRIM_THRESHOLD ("synPermTrimThreshold" , Double .class , 0.0 , 1.0 ),
324+ /**
325+ * A number between 0 and 1.0, used to set a floor on how often a column
326+ * should have at least stimulusThreshold active inputs. Periodically, each
327+ * column looks at the overlap duty cycle of all other columns within its
328+ * inhibition radius and sets its own internal minimal acceptable duty cycle
329+ * to: minPctDutyCycleBeforeInh * max(other columns' duty cycles). On each
330+ * iteration, any column whose overlap duty cycle falls below this computed
331+ * value will get all of its permanence values boosted up by
332+ * synPermActiveInc. Raising all permanences in response to a sub-par duty
333+ * cycle before inhibition allows a cell to search for new inputs when
334+ * either its previously learned inputs are no longer ever active, or when
335+ * the vast majority of them have been "hijacked" by other columns.
336+ */
248337 MIN_PCT_OVERLAP_DUTY_CYCLES ("minPctOverlapDutyCycles" , Double .class ),//TODO add range here?
338+ /**
339+ * A number between 0 and 1.0, used to set a floor on how often a column
340+ * should be activate. Periodically, each column looks at the activity duty
341+ * cycle of all other columns within its inhibition radius and sets its own
342+ * internal minimal acceptable duty cycle to: minPctDutyCycleAfterInh *
343+ * max(other columns' duty cycles). On each iteration, any column whose duty
344+ * cycle after inhibition falls below this computed value will get its
345+ * internal boost factor increased.
346+ */
249347 MIN_PCT_ACTIVE_DUTY_CYCLES ("minPctActiveDutyCycles" , Double .class ),//TODO add range here?
348+ /**
349+ * The period used to calculate duty cycles. Higher values make it take
350+ * longer to respond to changes in boost or synPerConnectedCell. Shorter
351+ * values make it more unstable and likely to oscillate.
352+ */
250353 DUTY_CYCLE_PERIOD ("dutyCyclePeriod" , Integer .class ),//TODO add range here?
354+ /**
355+ * The maximum overlap boost factor. Each column's overlap gets multiplied
356+ * by a boost factor before it gets considered for inhibition. The actual
357+ * boost factor for a column is number between 1.0 and maxBoost. A boost
358+ * factor of 1.0 is used if the duty cycle is >= minOverlapDutyCycle,
359+ * maxBoost is used if the duty cycle is 0, and any duty cycle in between is
360+ * linearly extrapolated from these 2 endpoints.
361+ */
251362 MAX_BOOST ("maxBoost" , Double .class ), //TODO add range here?
363+ /**
364+ * Determines if inputs at the beginning and end of an input dimension should
365+ * be considered neighbors when mapping columns to inputs.
366+ */
252367 WRAP_AROUND ("wrapAround" , Boolean .class ),
253368
254369 ///////////// SpatialPooler / Network Parameter(s) /////////////
0 commit comments