본문 바로가기

Computer Science/AL, ML 58

XOR with Neural Network XOR 문제 하나의 unit(linear regression)으로는 XOR 문제를 해결할 수 없다. 그래프를 어떻게 만들더라도 명확하게 구분해낼 수 없다. 해결 이를 해결하기 위해서 여러 개의 unit(multiple logistic regression)을 이용한다. 아래 3개의 unit들을 이용해서 해결할 수 있다. 구현 이러한 문제를 해결하기 위해서 W와 b를 학습해야 한다. 이를 위해서 앞에서와 마찬가지로 gradient descent algorithm을 이용할 수 있다. 각 input이 output에 미치는 영향을 계산해서 node의 weight을 조정해야 하지만, 너무 계산량이 많고 수학적으로도 어렵다. 이를 위해서 backpropagation algorithm을 사용한다. 2022. 4. 20.
Activation Function Activation Function Non-linear function, identity function 이라고도 한다. Sigmoid 외에도 많은 non-linear function이 존재한다. 그러나 어떤 함수를 activation function으로 사용하기 위해서는 그 함수의 gradient를 구할 수 있어야 한다. 즉, 미분 가능한 함수여야 한다. 단, ReLU는 한 점에서 미분 불가능하지만 practical하게 문제가 거의 발생하지 않기 때문에 사용 가능한 함수도 존재한다. Vanishing Gradient 함수의 기울기(gradient)가 0이거나 0에 가까워지면 variable이 update 되지 않게 된다. 이를 해결하기 위해서는 모든 부분에서 gradient가 예쁘게 나오는 함수를 사용.. 2022. 4. 10.
Vectorization of Neural Network Vectorization Vectorization을 통해 연산 속도를 높일 수 있다. Representation 세로로 units에 대해서 가로로 training example에 대해서 쌓아서 matrix로 표현하면 된다. 연산 Scalar에 대한 덧셈이나 곱셈은 broadcasting을 통해 수행한다. Numpy에서는 *을 통해 이를 지원한다. Matrix 간의 곱은 행렬의 곱은 numpy의 dot 메소드를 통해 수행할 수 있다. Pesudo Code Non-vecotirzed Implementation for i = 1 to m: # 1st layer Z[1][i] = W[1]x[i] + b[1] a[1][i] = sigmoid(Z[1][i]) # 2nd layer Z[2][i] = W[2]a[1][.. 2022. 4. 9.
Gradient Descent of Neural Network Gradient Descent of Neural Network 복잡한 네트워크이더라도 computation graph로 나타내서 gradient를 구할 수 있다. 위 그래프를 이용해서 gradient를 구하면 아래와 같이 된다. 2022. 4. 9.
Neural Network Neural Network 여러 개의 unit들이 모인 여러 개의 layer로 이루어진 모델이다. 하나의 unit이 하는 일은 linear transformation + non-linear transformation이다. Logistic regression에서 모델이 커진 것이라고 생각할 수 있다. Representation Nueral Network의 구조는 크게 3가지로 나눌 수 있다. input layer hidden lyaer output layer 몇 개의 layer로 이루어져있는지를 셀 때는 input layer를 포함하지 않는다. Input layer에는 traninable variable이 존재하지 않기 때문이다. Parameters & Variables의 Shape W와 b의 개수와 sh.. 2022. 4. 7.