# Why does batch norm have learnable scale and shift?

As far as I understand it, batch norm normalises all the input features to a layer to a unit normal distribution, $\mathcal{N}(\mu=0,\sigma=1)$. The mean and variance $\mu, \sigma^2$ are estimated by measuring their values for the current mini-batch.

After the normalisation the inputs are scaled and shifted by scalar values:

$$\hat{x}_i' = \gamma \hat{x}_i + \beta$$

(Correct me if I'm wrong here - this is where I start to get a bit unsure.)

$\gamma$ and $\beta$ are scalar values and there is a pair of each for every batch-normed layer. They are learnt along with the weights using backprop and SGD.

My question is, aren't these parameters redundant because the inputs can be scaled and shifted in any way by the weights in the layer itself. In other words, if

$$y = W \hat{x}' + b$$

and

$$\hat{x}' = \gamma \hat{x} + \beta$$

then

$$y = W' \hat{x} + b'$$

where $W' = W\gamma$ and $b'=W\beta + b$.

So what is the point of adding them of the network is already capable of learning the scale and shift? Or am I totally misunderstanding things?