Normalizing the final weights vector in the upper bound on the Perceptron's convergence
The Perceptron's output $f$ is
$$
f(\overline\theta \cdot \overline{x}) = \begin{cases} 1 &amp;\text{ if } \overline{\theta }\cdot \overline{x} &gt; 0 \\ 0 &amp;\text{ if } \overline{\theta }\cdot \overline{x} \le 0\end{cases}
$$
Here, $\overline{x} = (1, x_1, \dots, x_n)$ where $(x_1, \dots, x_n)$ is the input vector.

You can see that the output only depends on the sign of the product $\overline{\theta }\cdot \overline{x}.$
Therefore the output will not change if we multiply $\overline\theta \cdot \overline{x}$ with a positive constant:
$$
f(\overline\theta \cdot \overline{x}) = f(c\times \overline\theta \cdot \overline{x}) \qquad \text{ for all } c &gt; 0.
$$
In particular, we may choose $c = 1/\lVert \overline\theta \rVert.$ So we get
$
f(\overline{\theta }\cdot \overline{x}) = f(\tilde\theta\cdot \overline{x}),
$
where $\tilde\theta = \overline\theta / \lVert \overline\theta \rVert$ is the normalized vector.
Conclude that there is no loss of generality in assuming $\lVert \overline\theta \rVert = 1.$