Advanced Machine Learning 6 - Estimating Probabilities from Data (3)
Before starting
“Class” 카테고리에 있는 포스팅들은 실제로 수업에서 배운 내용을 정리하려는 목적으로 작성되었다. 이 글은 그 중 Advanced Machine Learning 과목의 수업을 다룬다.
Logistic Regression - Recap.
Logistic Regression을 통해 MLE를 구하는 방법을 다시 확인해보자. 먼저, Logistic Regression은 $P(y \vert x)$가 다음과 같이 주어진다.
\[P(y|x)=\dfrac{1}{1+e^{-y(w^Tx+b)}}\]그런데 여기서 상수항 $b$가 남아있으면 계산하기 어려우니, $x$에 상수 차원을 추가하여, 즉 $x=\begin{bmatrix}1 & x_1 & \ldots & x_d\end{bmatrix}^T$로 간주하면 상수항 $b$를 $w^Tx$에 통합시킬 수 있다. 여기서 $y=-1,1$이므로 두 가지 경우를 모두 풀어서 쓸 수 있다.
\[P(y=-1|x)=\dfrac{1}{1+e^{w^Tx+b}}, P(y=1|x)=\dfrac{1}{1+e^{-(w^Tx+b)}}\]그러면 $y=0,1$이라면 어떻게 해야 할까? 위의 경우 중 $P(y=-1 \vert x)$가 그대로 $P(y=0 \vert x)$로 바뀌기만 하면 된다. 그런데 이 경우엔 두 케이스를 $y$를 사용해서 하나의 수식으로 통합하는 것이 불가능해서 아래와 같이 써야 한다.
\[\begin{aligned} P(y|x) &=P(y=1|x)+P(y=0|x) \\ &= \lambda_{y=1}\dfrac{1}{1+e^{-(w^Tx+b)}} + \lambda_{y=0}\dfrac{1}{1+e^{w^Tx+b}} \\ &= y\cdot\dfrac{1}{1+e^{-(w^Tx+b)}} + (1-y)\cdot\dfrac{1}{1+e^{w^Tx+b}} \end{aligned}\]$\lambda_{y=0}$, $\lambda_{y=1}$은 각각 $y=0$, $y=1$일 때를 의미하는건데, 그럴 때를 생각해보면 한쪽 항을 1로, 다른쪽 항을 0으로 만들면 되니 위와 같이 표현할 수 있다.
그럼 이제 Logistic Regression의 MLE를 계산해보자. 우선, 파라미터 $w$가 주어질 때 우리에게 주어진 데이터 $D$가 발생할 확률을 정리해보면 다음과 같다.
\[\begin{aligned} P(D;w) &=P((x_1,y_1),(x_2,y_2),\ldots,(x_n,y_n);w) \\ &= P(x_1,y_1;w)P(x_2,y_2;w)\ldots P(x_n,y_n;w) \\ &= \prod_{i=1}^{n}P(x_i,y_i;w) \\ &= \prod_{i=1}^{n}P(x_i)P(y_i|x_i;w) \end{aligned}\]원래 $P(x_i,y_i;w)=P(x_i;w)P(y_i\vert x_i;w)$지만, $w$가 $x_i$와 독립적이기에 $P(x_i;w)=P(x_i)$가 된다.
그리고 이를 기반으로 하여 위의 확률이 최대화가 되는 $w^{\ast}$를 구하는 것이 MLE이다.
\[\begin{aligned} w^{\ast} &=\arg\max_w \prod_{i=1}^{n}P(x_i)P(y_i|x_i;w) \\ &= \arg\max_w \sum_{i=1}^{n} \log(P(x_i)P(y_i|x_i;w)) \\ &= \arg\max_w \sum_{i=1}^{n} \log P(y_i|x_i;w) \\ &= \arg\max_w \sum_{i=1}^{n} \log\dfrac{1}{1+e^{-y_i(w^Tx)}} \\ &= \arg\min_w \sum_{i=1}^{n} \log\left(1+e^{-y_i(w^Tx)}\right) \end{aligned}\]그럼 만약에 $y=0,1$이라면 위의 식이 어떻게 바뀔까? 위에서의 표기법을 그대로 적용하면 된다.
\[w^{\ast}=\arg\min_w \sum_{i=1}^{n}\left(y_i\log\left(1+e^{-(w^Tx)}\right)+(1-y_i)\log\left(1+e^{w^Tx}\right)\right)\]이러한 형태를 Binary Cross Entropy, 즉 BCE Loss라고 부른다.
Gradient Descent
아직 위의 식을 어떻게 최소화시킬까 하는 문제는 여전히 남아있다. 일반적으로 변화량을 구할 때는 미분을 사용한다. 그렇다면 이 경우에도 미분을 해보면 어떨까? 다만 $w$가 단일 변수가 아니라 여러 파라미터들이 합쳐진 벡터이니만큼, 벡터에 대한 미분을 수행해야 한다.
여기서 $L(w)$를 MLE에서 유도되었던 손실함수라고 가정하자. 위에서 구한 $\sum\limits_{i=1}^{n} \log\left(1+e^{-y_i(w^Tx)}\right)$를 사용해도 되고, 다른 모델을 사용해서 다른 형태의 손실함수를 사용한다 해도 무방하다.
\[\nabla_w L(w)=\dfrac{\partial}{\partial w}L(w)=\begin{bmatrix} \dfrac{\partial L(w)}{\partial w_1} \\ \dfrac{\partial L(w)}{\partial w_2} \\ \vdots \\ \dfrac{\partial L(w)}{\partial w_d}\end{bmatrix}\]이것을 Gradient라고 부른다. 일반적으로 최댓값이나 최솟값은 도함수의 값이 0이 되는 지점에서 발생하기 때문에, 위의 Gradient가 $\vec{0}$이 되는 지점, 즉 Gradient 벡터의 모든 요소가 0이 되는 지점을 찾는 것이 목표라고 할 수 있다.
그러면 어떻게 0이 되는 지점을 찾을까? 이를 위해 고안된 방법이 바로 Gradient Descent다.
최적화 문제에 대한 Closed form을 구하기 어렵거나 구할 수 있더라도 계산이 난해한 경우에 사용되며, 현재 지점 $w$에서의 Gradient 값을 확인하고 그 반대 방향으로 $w$를 iterative하게 업데이트하면서 $\nabla_w L(w)=\vec{0}$이 되는 $w$를 찾는 방법이다. 이는 Closed form을 구할 수 없는 상황에서 파라미터의 가능한 모든 조합을 하나하나 다 계산하는 것은 현실적으로 불가능하기 때문에 고안된 방법이라고 할 수 있다. 물론 Gradient Descent를 적용하기 위해서는 당연히 손실함수가 연속적이고 미분 가능해야 한다.
여기서 Gradient의 반대 방향으로 이동하는 이유는, Gradient의 값은 이 함숫값이 증가하는 방향을 가리키기 때문이다. 우리는 최솟값을 찾기 위해서 Gradient Descent를 쓰기 때문에, 정 반대 방향으로 이동해야 한다.
Gradient Descent의 구체적인 알고리즘은 다음과 같다. $l:R^d \rightarrow R, w \in \mathbb{R}^d$일 때 $\min\limits_w l(w)$를 만족하는 $w$를 찾는다고 가정하자.
초기값 $w_0$를 선정
각 스텝 $t$에 대해, 다음의 과정으로 다음 단계의 파라미터 $w_{t+1}$을 구함
\[w_{t+1} \leftarrow w_t - \alpha\cdot\nabla_w l(w_t)\]여기서, $\alpha$는 step-size를 뜻한다. Gradient를 그대로 따라가면 너무 크기 떄문에 일정량을 정해서 이 비율대로, 조금씩만 움직인다.
$w_t$가 특정 값에 수렴할 때까지 반복
이를 Stopping Criterion이라고 하며, $\lVert \nabla_w l(w_t) \rVert_2 \leq \epsilon$, $\lVert l(w_{t+1})-l(w_t) \rVert_2 \leq \epsilon$, 혹은 $\lVert w_{t+1}-w_t \rVert_2 \leq \epsilon$ 등으로 수렴을 판단한다.
Details of Gradient Descent
그럼 이제 Gradient Descent의 수학적 근거를 포함한 좀 더 자세한 내용들에 대해 알아보자.
Taylor’s Expansion
먼저 테일러 급수부터 확인해보자. $k$번 미분이 가능한 함수 $f$에 대해, $f(x+s)$를 다음과 같이 표현할 수 있다.
\[f(x+s) \approx f(x)+\dfrac{f^{(1)}(x)}{1!}s+\dfrac{f^{(2)}(x)}{2!}s^2+\ldots+\dfrac{f^{(k)}(x)}{k!}s^k\]이 근삿값은 $k$가 높아질수록 더 정확해진다. 그리고 각 항의 기여도를 살펴보면, 뒤의 항으로 갈수록 점점 더 기여도가 줄어든다. 그러니까 충분히 작은 $s$에 대해서는 다음과 같이 간략화시킬 수 있다.
\[f(x+s) \approx f(x)+f^{\prime}(x)s\]그리고 이러한 근사는 다변수 함수라고 딱히 성립되지 않는 것이 아니다. 즉, 위에서 Gradient Descent의 설명에 사용된 손실함수와 $w$를 가지고 써도 마찬가지로 성립한다.
\[l(w+s) \approx l(w)+(\nabla_w l(w))^T\cdot s\]그런데 Gradient Descent에서 $w_{t+1}=w_t-\alpha\cdot\nabla_w l(w)$이 된다. Taylor’s Expansion으로 얻은 근사식에 위 값을 대입해보면 다음과 같다.
\[l(w_{t+1}) \approx l(w_t)+(\nabla_w l(w))^T \cdot \left(-\alpha\cdot\nabla_w l(w) \right)\] \[\begin{aligned} l(w_{t+1})-l(w_t) &\approx -(\nabla_w l(w))^T(\nabla_w l(w))\cdot\alpha \\ &=- \lVert \nabla_w l(w) \rVert_2^2 \cdot\alpha \end{aligned}\]그런데 $\lVert \nabla_w l(w) \rVert_2^2$는 L2-norm으로써 항상 0보다 크다. 따라서 $l(w_{t+1})-l(w_t)$는 항상 0 이하가 됨을 알 수 있다. 그렇기 때문에 Gradient Descent를 통해 이동하는 다음 스텝에서의 손실함수 값은 항상 그 이전 스텝보다 작음을 알 수 있다. 이는 곧 우리가 맞는 방향으로 가고 있음을 증명하는 수학적 근거가 되어준다.
또한 위의 근사는 $s$가 작을수록 더 잘 성립한다고 했다. 이 $s$가 Gradient Descent에서의 step-size와 직결되는만큼, 이 step-size를 작게 잡아야 더욱 예측 성능이 좋아진다고 할 수 있다.
Convergence of Gradient Descent
그러면 Gradient Descent가 우리가 원하는대로 손실함수를 줄이는 방향으로 이동한다는건 알았는데, 이것이 유한 번의 step 안에 수렴한다는 것을 어떻게 알 수 있을까? 실제로 Gradient Descent는 Convex하다는 전제 하에 수렴을 보장함이 증명되었다.
증명을 소개하기 앞서, 세 가지 개념을 먼저 알아야 한다.
함수 $f:\mathbb{R}^d \rightarrow \mathbb{R}$이 Convex하다는 것은 다음을 의미한다.
\[\forall 0 \leq \lambda \leq 1, \forall x,y \in \mathbb{R}^d, f(\lambda x + (1-\lambda)y) \leq \lambda f(x) + (1-\lambda)f(y)\]즉, 함수 내의 임의의 두 점을 잇는 선분은 항상 함숫값보다 크다.
Continuous Convex 함수 $f:\mathbb{R}^d \rightarrow \mathbb{R}$이 다음의 조건을 만족하면 L-Lipschitz Continuous라고 부른다.
\[\forall x,y, \lVert f^{\prime}(x)-f^{\prime}(y) \rVert \leq L\cdot\lVert x-y \rVert\]이 $L$값이 커질수록 함수가 굉장히 날카롭게 되고, 반대로 작을수록 함수가 Smooth하다고 얘기한다.
Cauchy-Schwarz Inequality
\[\lVert u\cdot v\rVert^2 \leq \lVert u \rVert^2 \lVert v \rVert^2\]
이제 본격적으로 Gradient Descent의 수렴을 증명해보자. 우리가 증명할 명제는 구체적으로 다음과 같다.
“Let $f:\mathbb{R}^d \rightarrow \mathbb{R}$ be a convex function with L-Lipschitz continuous gradient and define $w^{\ast}=\arg\min\limits_w f(w)$. Then, $f(w_k)-f(w^{\ast}) \leq \dfrac{L\cdot\lVert w^{\ast}-w_0 \rVert^2}{2k}$ where $k$ is the number of iteration.”
우선, $f$가 Convex function이면서 L-Lipschitz continuous라는 점에서 다음의 두 성질들을 유도할 수 있다.
$f(y) \geq f(x)+\nabla f(x)^T(y-x)$
$f$가 Convex하므로 $\lambda \in \left(0,1\right]$에 대해 다음이 성립한다.
\[\begin{aligned} f(\lambda y + (1-\lambda)x) &\leq \lambda f(y)+(1-\lambda)f(x) \\ f(x+\lambda (y-x)) &\leq f(x)+\lambda (f(y)-f(x)) \\ \dfrac{f(x+\lambda (y-x))-f(x)}{\lambda} &\leq f(y)-f(x) \end{aligned}\]여기서 $\lambda \rightarrow 0^{+}$를 취하면 좌변이 다음과 같이 된다.
\[\lim_{\lambda \to 0^{+}}\dfrac{f(x+\lambda (y-x))-f(x)}{\lambda} = \nabla f(x)^T(y-x)\]따라서 위의 부등식은 다음과 같이 된다.
\[\nabla f(x)^T(y-x) \leq f(y)-f(x)\] \[\therefore f(y) \geq f(x)+\nabla f(x)^T(y-x)\]$f(y) \leq f(x)+\nabla f(x)^T(y-x) + \dfrac{L}{2}\lVert y-x \rVert^2$
적분의 정의에 의해 다음이 성립한다.
\[f(y)=f(x)+\int_{0}^{1} \nabla f(x+t(y-x))^T(y-x)\, dt\]여기서 우변에 $\nabla f(x)^T(y-x)$를 더하고 빼면,
\[\begin{aligned} f(y)&=f(x)+\nabla f(x)^T(y-x)+\int_{0}^{1}\left(\nabla f(x+t(y-x))-\nabla f(x)\right)^T(y-x)\, dt \\ &\leq f(x)+\nabla f(x)^T(y-x)+\int_{0}^{1}\lVert \nabla f(x+t(y-x))-\nabla f(x) \rVert \cdot \lVert y-x \rVert\, dt \\ &\text{(by Cauchy-Schwarz inequality)} \\ &\leq f(x)+\nabla f(x)^T(y-x)+\int_{0}^{1} (L\cdot t\lVert y-x \rVert) \cdot \lVert y-x \rVert\, dt \\ &\text{(since } f \text{ is L-Lipschitz continuous)} \\ &= f(x)+\nabla f(x)^T(y-x)+L\lVert y-x \rVert^2\int_{0}^{1}t\,dt \\ &= f(x)+\nabla f(x)^T(y-x)+\dfrac{L}{2}\lVert y-x \rVert^2 \end{aligned}\] \[\therefore f(y) \leq f(x)+\nabla f(x)^T(y-x) + \dfrac{L}{2}\lVert y-x \rVert^2\]
그러면 Claim 1에 의해 다음이 성립한다.
\[f(w^{\ast}) \geq f(w_t)+\nabla f(w_t)^T(w^{\ast}-w_t)\]또한 Claim 2에 의해서, 그리고 $w_{t+1} = w_t-\alpha\nabla f(w_t)$이므로 $\alpha\leq\dfrac{1}{L}$라고 가정하면,
\[\begin{aligned} f(w_{t+1}) &\leq f(w_t)+\nabla f(w_t)^T(w_{t+1}-w_t)+\dfrac{L}{2}\lVert w_{t+1}-w_t \rVert^2 \\ &\leq f(w_t)-\alpha\lVert\nabla f(w_t)\rVert^2+\dfrac{L}{2}\alpha^2 \lVert\nabla f(w_t)\rVert^2 \\ &\leq f(w_t)-\alpha\left(1-\dfrac{L\alpha}{2}\right)\lVert\nabla f(w_t)\rVert^2 \\ &\leq f(w_t)-\dfrac{\alpha}{2}\lVert\nabla f(w_t)\rVert^2 \end{aligned}\]위의 두 부등식에 의해서, 다음을 얻는다.
\[\begin{aligned} f(w_{t+1}) &\leq f(w^{\ast})-\nabla f(w_t)^T(w^{\ast}-w_t)-\dfrac{\alpha}{2}\lVert \nabla f(w_t)\rVert^2 \\ &= f(w^{\ast})+\dfrac{1}{\alpha}(w_t-w_{t+1})^T(w_t-w^{\ast})-\dfrac{1}{2\alpha}\lVert w_t-w_{t+1}\rVert^2 \\ &= f(w^{\ast})+\dfrac{1}{2\alpha}\lVert w_t-w^{\ast}\rVert^2-\dfrac{1}{2\alpha}\left(\lVert w_t-w^{\ast}\rVert^2+\lVert w_t-w_{t+1}\rVert^2-2(w_t-w_{t+1})^T(w_t-w^{\ast})\right) \\ &= f(w^{\ast})+\dfrac{1}{2\alpha}\left(\lVert w_t-w^{\ast}\rVert^2-\lVert w_{t+1}-w^{\ast}\rVert^2\right) \end{aligned}\]위의 부등식을 $t=0,\ldots,k-1$에 대해서 전부 더하면,
\[kf(w_k) \leq \sum_{t=0}^{k-1}f(w_{t+1}) \leq kf(w^{\ast})+\dfrac{1}{2\alpha}\left(\lVert w_0-w^{\ast}\rVert^2-\lVert w_k-w^{\ast}\rVert^2\right)\] \[f(w_k) \leq f(w^{\ast})+\dfrac{1}{2\alpha k}\lVert w^{\ast}-w_0\rVert^2\] \[\therefore \epsilon =f(w_k)-f(w^{\ast}) \leq \dfrac{1}{2\alpha k}\lVert w^{\ast}-w_0\rVert^2\]따라서 $f(w_k)-f(w^{\ast})$의 상한선이 존재하며 그 상한선은 수행횟수 $k$에 반비례하므로 Gradient Descent 알고리즘은 반드시 수렴함을 알 수 있다.
여담으로, 위의 상한선으로 유도된 값이 작아야 모델이 더 정확하게 예측을 할 수 있다는 의미이므로, 다음의 조건을 만족할수록 예측을 더 잘한다는 것도 알 수 있다.
$w_0$가 $w^{\ast}$에 근접할수록. 즉, 초기값을 잘 잡을 경우.
L이 작을수록. 즉, 손실함수 $f$가 smooth할 경우.
$k$가 클수록. 즉, Gradient Descent의 수행횟수를 늘릴 경우.
Adaptive Learning Methods
Gradient Descent 자체는 위에 제시된 알고리즘이 전부이다. 그러나 이 방법을 최적화하기 위한 연구가 상당히 많이 이루어졌는데, 여기서는 그 중 일부를 간단하게 소개한다.
Momentum
Gradient Descent는 local minimum에 빠질 경우 나올 방법이 없다. 이러한 현상을 해결하기 위해, 관성이라는 개념을 도입했다. 즉, 빨리 내려가야 할 때는 빨리 내려가서 작은 local minimum 정도는 쉽게 넘어가도록 만들어주는 것이다.
\[s_t \leftarrow \beta s_{t-1}+\alpha\dfrac{\partial l(w)}{\partial w}, w_{t+1} \leftarrow w_t-s_t\]즉 다음 스텝의 파라미터값을 계산할 때 이전 스텝의 값을 일부 반영하는 방법이다.
AdaGrad (Adaptive Gradient Descent)
각각의 파라미터에 따라 그에 맞는 별도의 step-size를 도입하자는 취지에서 제안된 알고리즘이다.
\[s_t \leftarrow s_{t-1}+\nabla l(w_t)\odot \nabla l(w_t), w_{t+1} \leftarrow w_t - \alpha\dfrac{\nabla l(w_t)}{\sqrt{s_t+\epsilon}}\]즉, 자주 업데이트 되는 파라미터일수록 step-size를 줄이는 것이다. 그러나 파라미터의 업데이트에 사용된 값의 분모 $s_t$는 학습이 진행될수록 점점 커지기만 하여 결국 학습이 진행될수록 점점 업데이트 자체가 거의 이루어지지 않는 문제가 있다.
RMSProp (Root Mean Square Propagation)
AdaGrad의 문제를 해결하기 위한 알고리즘으로, AdaGrad에서 사용한 덧셈 대신 Gradient의 평균을 사용한다.
\[E[\nabla l(w)^2]_t \leftarrow 0.9 \cdot E[\nabla l(w)^2]_{t-1}+0.1\cdot \nabla l(w)_t^2, w_{t+1} \leftarrow w_t - \alpha\cdot\dfrac{\nabla l(w_t)}{\sqrt{E[\nabla l(w)^2]_t+\epsilon}}\]Adam (Adaptive Moment Estimation)
Momentum과 RMSProp의 방법을 모두 합쳐서 사용한 방식이다.
\[m_t \leftarrow \beta_1 m_{t-1} + (1-\beta_1)\nabla l(w), v_t \leftarrow \beta_2 v_{t-1}+(1-\beta_2)\nabla l(w)^2\] \[\hat{m}_t=\dfrac{m_t}{1-\beta_1^t}, \hat{v}_t=\dfrac{v_t}{1-\beta_2^t}, w_{t+1} \leftarrow w_t-\alpha\cdot\dfrac{\hat{m}_t}{\sqrt{\hat{v}_t}+\epsilon}\]
Newton’s Method
사실 Taylor’s Expansion은 근사를 하고 싶은 함수 $f$가 미분가능한 횟수만큼 항을 전개할 수 있다. 그리고 Gradient Descent는 이 중 2번째 항까지만 사용한 것이다. 그렇다면 3번째 항, 즉 2계도함수까지 사용하면 좀 더 정확하게 근사할 수 있지 않을까?
\[l(w+s) \approx l(w)+\nabla l(w)^Ts + \dfrac{1}{2}s^TH(w)s\]실제로 3번째 항까지 가져오면 위와 같다. 여기서 $H$는 Hessian Matrix라고 하며, $H(x)_{ij}=\dfrac{\partial^2 l}{\partial x_i \partial x_j}$로 정의되는 2계도함수의 행렬이다.
이 경우, 우리의 목표는 $\nabla l(w)+H(w)s=0$이 되어야 하고, 이를 만족하는 $s=-H(w)^{-1}\nabla l(w)$가 된다. 이러한 방법을 Newton’s Method라고 한다.
그런데 이 방식은 확실히 수렴 속도는 빠르긴 하나, $H(w)$에 대한 연산이 필요하고, 심지어 그것의 역행렬을 계산해야 한다는 문제가 있다. 우선 Hessian을 만드는 것부터가 시간이 상당히 소요된다. 또한 역행렬 연산은 시간복잡도가 $O(d^3)$인 매우 무거운 연산인데다가 약간의 변수로도 역행렬이 존재하지 않을 수 있게 되는 민감한 연산이라 이를 임의의 모델에 대해 사용하기엔 너무 무거운 연산이다.
그렇기 때문에 대부분의 모델들은 Gradient Descent를 사용한다. 그러나 이를 반대로 말하면 충분히 가벼운 모델이라면 Newton’s Method를 사용하면 빠른 수렴 속도를 누릴 수 있다는 뜻이기도 하다.
Gradient Descent for Logistic Regression
그럼 위에서 배운 Gradient Descent를 Logistic Regression에 적용해보자. $\hat{y_i}=P(y=1\vert x=x_i)=\dfrac{1}{1+e^{-w^Tx_i}}$라고 하면,
\[\hat{w}=\arg\min_w \left(-\dfrac{1}{n}\sum_{i=1}^{n}(y_i\log\hat{y_i}+(1-y_i)\log(1-\hat{y_i}))\right)\]여기서 $L(x_i,y_i,w)=-y_i\log\hat{y_i}-(1-y_i)\log(1-\hat{y_i})$라고 하면 다음과 같이 정리가 된다.
\[\begin{aligned} L(x_i,y_i,w) &= -y_i\log\hat{y_i}-(1-y_i)\log(1-\hat{y_i}) \\ &= -y_i\log\dfrac{1}{1+e^{-w^Tx_i}}-(1-y_i)\log\dfrac{e^{-w^Tx_i}}{1+e^{-w^Tx_i}} \\ &= -y_i\log\dfrac{e^{w^Tx_i}}{1+e^{w^Tx_i}}-(1-y_i)\log\dfrac{1}{1+e^{w^Tx_i}} \\ &= -y_i(w^Tx_i)+y_i\log(1+e^{w^Tx_i})+(1-y_i)\log(1+e^{w^Tx_i}) \\ &= \log(1+e^{w^Tx_i})-y_i(w^Tx_i) \end{aligned}\] \[\therefore \dfrac{\partial L(x_i,y_i,w)}{\partial w}=-y_ix_i+\dfrac{x_ie^{w^Tx_i}}{1+e^{w^Tx_i}}=\dfrac{x_i}{1+e^{-w^Tx_i}}-y_ix_i\]그리고 각각의 $x_i$, $y_i$에 대해서 Gradient가 이렇게 정의가 되기 때문에, 다음이 성립한다.
\[\nabla_w \left(\dfrac{1}{n}\sum_{i=1}^{n}L(x_i,y_i,w)\right)=\dfrac{1}{n}\sum_{i=1}^{n}\nabla_w L(x_i,y_i,w)\]즉, 각 데이터의 Gradient를 따로따로 구한 후 더하나 전체 데이터셋의 Gradient를 한번에 계산하나 동일하다는 것이다. 이 특징으로부터 기인하는 장점이 몇 가지 있는데, 우선 Gradient를 일종의 함수로 취급할 수 있다. 이는 구현적인 측면에서 상당히 편리해진다. 또한 Dataset이 너무 크면 이를 한번에 계산하는 것이 상당히 힘든데, 위의 성질 덕분에 큰 Dataset이 주어지더라도 적절히 나눠서 계산하거나 혹은 병렬적으로 계산하는 것을 가능하게 만들어준다.
위의 “적절하게 나눠서 계산하는 것”이 가능하다는 점은 (Mini-batch) Stochastic Gradient Descent이라는 알고리즘이 동작하게 되는 근거가 되어준다. 한 번에 데이터를 1개, 혹은 Mini-batch로 사전에 정해둔 개수만큼만 보고 이들에 대한 Gradient만 계산해서 파라미터를 업데이트하는 것이다. 이것 또한 Gradient가 분리되기 때문에 가능한 방법이라고 할 수 있다.