AI/모두를 위한 딥러닝
출처 : 모두를 위한 머신러닝/딥러닝 https://hunkim.github.io/ml/ 모두를 위한 머신러닝/딥러닝 강의 hunkim.github.io XOR 문제는 하나의 unit으로는 풀 수 없고, 여러 개가 합쳐진 경우에는 풀 수 있게 됨. NN에서는 과연 XOR 문제 해결이 가능한 것인가 ? 1번 케이스 (x1, x2)를 (0, 0)으로 가정하여 풀게 된 과정이 아래와 같음. 2, 3, 4번 케이스에 대해서도 한번 적용시켜봄. 앞의 과정들을 하나로 뭉쳐서 확인하게 되면 아래와 같은 형태로 볼 수 있음. 이 과정을 하나의 Neural Network라고 볼 수 있음. 프로그래밍 시킬 경우에는 위와 같은 코드의 형태로 구현할 수 있음. 위의 과정에서 w와 b의 값들은 임의로 정한 값들이었고, 이 값들..
출처 : 모두를 위한 머신러닝/딥러닝 https://hunkim.github.io/ml/ 모두를 위한 머신러닝/딥러닝 강의 hunkim.github.io 2006년과 2007년에 Breakthrough가 되는 두개의 논문이 발표됨. 2006년의 논문에서는 w의 초기값을 적절한 값으로 잘 주게 되면 훈련이 잘 된다는 내용이었으며, 2007년의 논문에서는 신경망을 여러개 아주 깊게 쌓으면 굉장히 복잡한 문제를 잘 풀 수 있다는 것을 보임.
출처 : 모두를 위한 머신러닝/딥러닝 https://hunkim.github.io/ml/ 모두를 위한 머신러닝/딥러닝 강의 hunkim.github.io 기본적으로 동그라미 안과 같은 Cell이 있다고 가정해보자. 그러면 어떤 값이 들어오면 weight 값 w와 곱이 됨. 그 다음에 bias 값을 합함. sum의 값이 어떤 값보다 작으면 0이라는 신호를 주고, 어떤 값보다 크게 되면 1이라는 신호를 주게 되는 구조임. Backpropagation에는 큰 문제가 있는데 layer가 깊어질수록 전달이 잘 안되어서 훈련의 정확도가 떨어지는 문제임.
출처 : 모두를 위한 머신러닝/딥러닝 https://hunkim.github.io/ml/ 모두를 위한 머신러닝/딥러닝 강의 hunkim.github.io 머신러닝 모델이 얼마나 잘 동작하는지 확인하는 방법에 대해서 살펴볼 것. 우리가 갖고 있는 Training set을 모델에 넣어서 훈련을 시킨 다음에 다시 기존의 train data를 가지고 모델에 물어보는 형식으로 점검하게 된다면 ? 아마 100%의 확률로 답을 맞추게 될 것. 이 방법은 아주 좋지 못한 방법임. 좋은 방법은 우리가 가지고 있는 데이터를 7:3의 비율로 나누어서 7은 training용으로 두고, 3은 test로 두는 것임. 그런 다음에 test는 볼 수 없다고 가정하고 나서 train data를 가지고 훈련. 훈련을 마친 이후에 tes..
출처 : 모두를 위한 머신러닝/딥러닝 https://hunkim.github.io/ml/ 모두를 위한 머신러닝/딥러닝 강의 hunkim.github.io 머신러닝 알고리즘을 실제로 사용하는데 있어서의 몇가지 팁들을 이야기할 것. cost function을 정의하고 cost function을 최소화하는 값을 찾기 위해 사용했던 Gradient descent 알고리즘. 경사를 타고 고 내려감. 이 때 알파라는 learning rate 값을 임의로 정의해줬었음. 이 learning rate의 값을 값을 잘 정하는 것이 중요함. 만일 이 값을 크게 정한다고 가정해보자. RL은 내려가는 스텝의 크기라고 볼 수 있음. 그렇기 때문에 아래의 그림처럼 내려가는 형태임. 또, 지나치게 클 경우에는 진행하다가 바깥으로 튕..
출처 : 모두를 위한 머신러닝/딥러닝 https://hunkim.github.io/ml/ 모두를 위한 머신러닝/딥러닝 강의 hunkim.github.io 앞서 배운 내용을 요약하자면... Linear regression이라는 것을 먼저 배웠는데, 여기서 만일 100, 200, -10 등의 큰 값이 주어지게 되면 binary classification에는 적합하지 않았었음. 그래서 이것을 하나의 z라고 두고 g(z)라는 함수에서 압축을 시켜서 0과 1의 사이의 값으로 반환시키는 것을 생각해냄. g(z)의 값이 아주 커져도 1보다는 커지지 않고, g(z)의 값이 아주 작아져도 0보다는 작아지지 않게 됨. 그래서 나오게 된 g(z) 함수를 sigmoid 함수라고 부르거나 logistic 함수라고 불렀음. Lo..
출처 : 모두를 위한 머신러닝/딥러닝 https://hunkim.github.io/ml/ 모두를 위한 머신러닝/딥러닝 강의 hunkim.github.io 우리가 앞서 살펴본 Cost function은 위와 같았음. 하지만 우리의 가설이 바뀌게 되면서 sigmoid function을 사용해서 출력값을 0과 1 사이로 조정해줬음. 또 그래프의 그림을 그려보면 위의 파란색 그래프과 같이 그릴 수 있는데, 오른쪽 그림에서 발생하는 한가지 문제점은 경사하강법을 실시하면 시작점이 어디냐에 따라서 끝나는 점이 달라질 수 있다는 것임. 이렇게 각각 달라지는 최종 점을 Local minimum 이라고 할 수 있는데, 우리가 찾고자 하는 점은 Global minimum임. global minimum을 찾기 위해서는 위와 ..
출처 : 모두를 위한 머신러닝/딥러닝 https://hunkim.github.io/ml/ 모두를 위한 머신러닝/딥러닝 강의 hunkim.github.io 앞선 강의 복습 이전에 배운 regression은 어떤 숫자를 예측하는 것이었음. 이번에 배울 classification은 binary classification이라고도 불리는데, 이는 이름에서 알 수 있듯 2개 중 하나를 고르는 것을 의미함. 이메일의 경우, Spam이냐 아니냐 Facebook의 경우 Show할 것인지 Hide할 것인지 등을 결정. 머신러닝에서는 이렇게 선택 두가지를 0과 1로 나타내기도 함. 그림과 같은 데이터가 있다고 가정해보자. 어떤 학생이 2시간을 공부했을 때는 fail(0)하지만, 일정 시간 이상 공부하면 pass(1)한다는 ..
출처 : 모두를 위한 머신러닝/딥러닝 https://hunkim.github.io/ml/ 모두를 위한 머신러닝/딥러닝 강의 hunkim.github.io 앞선 예시에서는 1개의 input에 대한 regression을 살펴보았지만, 만일 여러 개의 input이 주어졌을 때는 어떻게 해야 하는가 ? 위와 같이 x1, x2, x3의 세개의 input 값이 있다고 가정해보자. 위의 데이터는 quiz 3개의 점수(x1, x2, x3)들을 가지고 final 점수인 Y값을 예측할 수 있을까? 를 나타내는 표임. 3개의 데이터가 주어지면, 아래의 식과 같이 3개의 값을 더해주면 됨. cost function도 마찬가지로, 3개의 데이터를 적용시켜주면 됨. cost function 자체의 의미가 예측한 값과 실제값의 차..