# How boosting changes the SP representation

**URL:** <https://discourse.numenta.org/t/how-boosting-changes-the-sp-representation/1159>\
**Category:** NuPIC\
**Tags:** spatial-pooling, boosting\
**Created:** [August 1, 2016, 10:49pm UTC](https://discourse.numenta.org/t/how-boosting-changes-the-sp-representation/1159 "2016-08-01T22:49:09Z")\
**Posts on this page:** 4\
**Page:** 2

<div class="post-metadata">

**Author:** ![ddobric](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.numenta.org/ddobric/32/3798_2.png) [@ddobric](https://discourse.numenta.org/u/ddobric)\
**Post date:** [July 11, 2019, 10:20am UTC](https://discourse.numenta.org/t/how-boosting-changes-the-sp-representation/1159/21 "2019-07-11T10:20:15Z")

</div>

Hi all,

i have noticed the same issue as @nluu. As @sheiser1 has explained, this is all fine and correct. However, in the real life, bosting seems to be problematic.  
For example, SP is learn a pattern very quickly in just few steps. However, once a boosting became active, SP briefly “forgets” all learned patterns and start learning again.  
At some point of time (in some learning iteration step) SP learns patterns again and remains stable, until bosting becomes active again.  
In real world applications, this means following:

- Application learns patterns.
- Bosting becomes active and SP forgets learned patterns

To recap, boosting is biologically cool, but how it is helpful in real world applications?

Do I see that wrong?

---

<div class="post-metadata">

**Author:** ![breznak](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.numenta.org/breznak/32/1935_2.png) [@breznak](https://discourse.numenta.org/u/breznak)\
**Post date:** [July 11, 2019, 11:28am UTC](https://discourse.numenta.org/t/how-boosting-changes-the-sp-representation/1159/22 "2019-07-11T11:28:50Z")

</div>

Currently discussing log boosting and its plausibility and impact on MNIST, and @vpuente shared great biological detail why boosting is used, but probably only in the early stages.

> [@Spatial Pooler Implementation for MNIST Dataset](https://discourse.numenta.org/t/spatial-pooler-implementation-for-mnist-dataset/2317/20):
>
> As a note of caution seems like homeostatic synaptic plasticity (the mechanism behind boost) is disabled in L4 quite soon (After the animal was born [1]). Most of the papers about homeostatic synaptic plasticity talk about the inverse proportion between activation frequency and mEPSC voltage [2] (which ultimately affects who will win the inhibition).
> 
> In any case, in [2] you can read:
> 
> > Currently, we know little about the cellular  
> > and molecular mechanisms underlying homeostatic plasticity in vivo.
> 
> [1] A. Maffei, S. B. Nelson, and G. G. Turrigiano, “Selective reconfiguration of layer 4 visual cortical circuitry by visual deprivation,” _Nat. Neurosci._ , vol. 7, no. 12, pp. 1353–1359, 2004.
> 
> [2] G. Turrigiano, “Homeostatic synaptic plasticity: Local and global mechanisms for stabilizing neuronal function,” _Cold Spring Harb. Perspect. Biol._ , vol. 4, no. 1, pp. 1–17, 2012.

Could someone please try to replicate @rhyolight 's results with log boosting? The formula is simple

> <https://github.com/htm-community/htm.core/pull/545/files#diff-75db947f594e8a477099a6c8bb86daa0R763>
>
> instead of current exponential. 
> 
> Log boosting has been discussed by @ctrl-z-9…000-times on the forums and I believe is actually used in #293 
> 
> I have tried experimenting with it in the SP. 
> 
> \- Actually I don't plan merging this, as it currently has slightly worse performance and worse computation time. 
> - on MNIST: 
> 
> \> \[master, exponential boost \* strength 7.0\] 
> MNIST train time: 61.1118
> Testing for 10000 cycles ...
> ..........
> ===========RESULTs=================
> Score: 95.31% (469 / 10000 wrong). 
> 
> vs
> 
> \> \[this PR, log boosting, parameterless\]
> MNIST train time: 72.5795
> Testing for 10000 cycles ...
> ..........
> ===========RESULTs=================
> Score: 95.18% (482 / 10000 wrong)

> [@mrcslws](#):
>
> One thing to keep in mind: If there aren’t enough unique inputs, boosting will wreak havoc.
> 
> An easy example: my “trivial sequence”: [http://mrcslws.com/blocks/2016/03/13/column-overlaps-and-boosting.html](http://mrcslws.com/blocks/2016/03/13/column-overlaps-and-boosting.html)
> 
> I have 25 unique inputs, 40 active columns, and 2048 columns. That means at most 25 \* 40 = 1000 columns will be used. So at any given time, at least 1048 columns are getting starved, and boosting is going to teeter-totter the representations.

@mrcslws Thanks for sharing this, this dates ages back to a problem some NASA guy raised, a SP with boosting on a “dummy” input sequence will produce periodic boosts in activity. Which is unwanted.

Here by “inputs” you mean actual 25 different iptut patterns, not any bits, right?  
Basically the issue is with over-provisioned SP.  
I’d like to make this into a test.

My takeaway is, I understand what boosting should do and why it helps sometimes, on the other hand I don’t see clearly how it’s done biologically. And we have the edge cases here where boosting hurts.  
What do you think of my proposal to remove boosting as is now, and replacce the functionality with synaptic death? Unused synapses are removed (solves over-provisioned issue above), this avoids “weak” columns by simply killing them off. Now we need a mechanism to add new column when all other are busy (well estabilished, connected) and we still lack the precision.

---

<div class="post-metadata">

**Author:** ![breznak](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.numenta.org/breznak/32/1935_2.png) [@breznak](https://discourse.numenta.org/u/breznak)\
**Post date:** [July 11, 2019, 11:37am UTC](https://discourse.numenta.org/t/how-boosting-changes-the-sp-representation/1159/23 "2019-07-11T11:37:10Z")

</div>

I’ve posted some proposals to diminish the negative impact of boosting

> <https://github.com/htm-community/htm.core/issues/556>

---

<div class="post-metadata">

**Author:** ![ddobric](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.numenta.org/ddobric/32/3798_2.png) [@ddobric](https://discourse.numenta.org/u/ddobric)\
**Post date:** [July 28, 2019, 8:04am UTC](https://discourse.numenta.org/t/how-boosting-changes-the-sp-representation/1159/25 "2019-07-28T08:04:53Z")

</div>

As @vpuente mentioned by reference [1], it seems that boosting should only be active at the very beginning of learning process in HTM. This would correspond to disabling of synaptic plasticity in L4 after animal was born and prevent HTM of “forgetting” during learning process as pointed out by @nluu and noticed in many experiments.

[1] A. Maffei, S. B. Nelson, and G. G. Turrigiano, “Selective reconfiguration of layer 4 visual cortical circuitry by visual deprivation,” _Nat. Neurosci._ , vol. 7, no. 12, pp. 1353–1359, 2004.

[Previous page](https://discourse.numenta.org/t/how-boosting-changes-the-sp-representation/1159.md?page=1)
