본문 바로가기
728x90

AI18

Day12. Recurrent Neural Network 어떤 문장을 이해할 때 앞의 단어들을 이해해야 맥락을 알 수 있듯이 이러한 squence data가 존재하게 된다. (단 문장을 분석한다고 해서 무조건 RNN을 사용해야하는 것은 아님) CNN, NN은 이러한 것을 학습할 수 없다. 때문에 RNN이라는 Neural Network를 사용해야한다. 위 RNN에서 학습을 위해 사용하는 식은 다음과 같다. 이때 모든 f_w가 사용하는 W_hh, W_xh, W_hy가 모두 동일하다 그럼 만약에 Hello라는 단어를 학습시킨다는 가정 하에 네트워크에 어떻게 결과를 도출하게 될까? 요약하자면 다음과 같은 형태로 글자를 예측하게 된다. 여러 Cell(A)을 서로 엮어 데이터를 교환하며 squence한 데이터를 분석하게 되는 것이다. 즉, 이전에 입력한 문자 데이터의 s.. 2022. 4. 21.
Day11. Convolution Neural Network 이번에 우리가 배워볼 내용은 CNN이다. 흔히 합성곱신경망이라고 불리는 이 Neural Network는 다음과 같이 학습을 수행하게 된다. 이때 우리가 유의깊게 봐야하는 것은 Conv Layer와 Pooling Layer이다. 그럼 각 Layer가 어떤 역할을 하는지 알아보도록 하자. [Conv Layer] 우선 Conv Layer에서는 filter라고 불리는 W의 모음을 가지고 이미지의 한 부분의 특징을 뽑아낸다. 만약 filter의 크기가 2x2x3 이었다면 다음과 같은 식을 계산한 후 활성화 함수로 결과값(Y)를 도출하게 된다. 이때 filter의 크기는 자유롭게 설정하면 되고, 결과적으로 하나의 값을 만들어내게 된다. (즉 기존에 사용하던 XW + b의 식을 사용하여 특징을 뽑아내는 것일 뿐 크게.. 2022. 4. 21.
Day10. Activation Functions, weight initialization, Dropout and Ensemble [Sigmoid function의 문제점] 다음 단어들의 뜻을 이해해야 앞으로 이야기할 내용들이 이해될 것이다. 우리는 지금까지 깊은 NN을 어떻게 만드는지 넓은 NN은 어떻게 만드는지 알아보았다. 그럼 한번 XOR문제를 깊고 넓은(Deep and Wide) NN에서 사용해보라. (대충 hidden layer가 10개 정도면 됨, sigmoid 함수를 사용해서 구현할 것) 그럼 Accuracy가 높아졌다 낮아졌다를 반복하다가 결국 어떤 수로 유지되고, cost값은 0에 가까워지는 것이 아닌 0.6에 가까운 값으로 멈춰있는 것을 확인할 수 있다. 왜 이런 현상이 발생하는 것일까? 그 이유는 sigmoid의 그래프 모습에 있다. 우리가 이전에 back propagation을 배울 때 확인할 수 있듯이 뒤의 .. 2022. 4. 20.
Day9. Neural Network and TensorBoard code 드디어 본격적으로 Neural Network(이하 NN)를 공부한다. 일단 미리 말해두지만 선형대수, 통계학 지식이 없는 나는 그냥 수박겉핥기로 공부하는 거다... 저 두 지식은 BoB에서 만났던, 좋은 인연이 되주신 형님이 알려준 커리큘럼대로 공부해볼 예정이다. (Kaggle master가 알려준 방법이니... 효과적이겠지?) 그럼 이제 시작해보자! [NN의 구현] 저번 시간에 우리는 XOR 문제를 하나의 Perceptron으로 해결할 수 없다는 것을 볼 수 있었다. (뒤에 나오는 코드를 실행시켜보면 실제로 해결되지 않는 것을 확인할 수 있음) 때문에 아래 사진과 같은 NN을 구성해야한다! 아래의 풀이 과정대로 (x1, x2)에 (0, 1), (1, 0), (1, 1)을 대입하여 풀이하면 다음과 같은 .. 2022. 4. 19.
Day8. Basic information for Neural Network 이번에 정리할 글들은 모두 Neural Network를 이해하기 전에 필요한 기초지식들이다. 생각보다,,,인공지능을 만들 때 필요한 개념들은 모두 뇌의 구조에서 따왔다는 것을 볼 수 있다. 입력 신호를 받아 이 신호를 증폭(w값을 사용하여)시키고 편향값을 더한 후 신호들의 합을 출력 신호로 출력하는 뉴런의 모습은 지금까지 우리가 tensorflow를 이용해 개발한 hypothesis와 매우 유사해보인다! 수많은 뉴런이 엮어져 만들어진 뇌의 구조를 본따 인공지능을 만들 수 있을 것 같아 보이는데, 이는 사실 실제로 가능한 일이 되었다는 점을 아래 사진을 보면 알 수 있다. 위와 같은 아이디어는 xor 문제를 해결하기 위해 탄생했다. xor의 특징은 하나의 linear한 hypothesis로 해결하기 까다롭.. 2022. 4. 18.
Day7. learning rate, overfitting, regularization [Overshooting] overshooting은 learning rate의 크기에 따라 학습에 대한 가중치를 찾을 수 없게 되는 현상을 의미한다. 1. learning rate가 너무 클 경우 사진과 같이 cost값이 너무 커지거나 가장 작은 cost 값을 구하지 못해, 잘못된 가중치를 반환할 수 있다. 이를 해결하기 위해 cost값을 출력해보며 값이 너무 커지거나 숫자가 아닌 이상한 값들이 출력될 경우, learning rate를 줄여가며 학습 후 결과를 살펴본다. 2. learning rate가 너무 작을 경우 사진과 같이 cost 값이 너무 작게 변화하여 가장 작은 cost 값을 구하지 못해, 잘못된 가중치를 반환할 수 있다. 이를 해결하기 위해 cost값을 출력해보며 값이 너무 작게 변화하면 .. 2022. 4. 16.
Day6. Softmax 이번에 공부한 내용은 Y의 종류가 여러 개 존재하는 상황에서의 분류이다. 이전까지는 powerpoint에 그림을 그려서 붙여 넣었지만 이제는 직접 쓰고 이것을 스캔하여 사용하도록 하겠다! (절대로 powerpoint 사용이 귀찮아서가 아니다...ㅎㅎ) 우선 다음과 같은 데이터가 있다고 가정하자. 데이터를 보면 2개의 독립변수가 Y의 종속변수로써 사용되는 상황임을 알 수 있다. 이때, 중요한 것은 여러 변수가 존재하면 여러 차원으로 나타난다는 점에 유의해야한다. 위와 같이 변수의 개수가 3개인 경우 3차원에서 면으로 만들어진 식이 주어지게 될 것이라는 점이 중요하다. (이게 헷갈려서 고생 조금 했다... 수학 못하는 나란 녀석...) 즉, 3차원 그래프에서 나타나는 면으로 이뤄진 식을 잘라 2차원으로 표현.. 2022. 4. 11.
Day5. Logistic Classification과 Logistic Regression 우리가 지금까지 배운 Regression은 HCG를 사용하였다. 이진 분류에서 나타나는 문제가 존재함 Problem1. 새로운 데이터가 추가되면서 H가 변하고 이로 인해 기존에 올바르게 판단되던 값이 올바르지 않게 판단됨 예를 들어 0, 1 encoding이 있다고 할 때, 다음과 같이 극도로 높은 X값을 지닌 새로운 데이터가 들어오면, 기존에 pass를 받던 데이터들이 모두 fail을 받게 될 확률이 존재함 Problem2. H가 개발자가 의도한 값의 범위를 넘어설 수 있음 예를 들어 H(x) = Wx + b에서 H값을 0, 1로 정했을 때 위 그림의 식에서 입력으로 들어오는 X값이 100이 된다면 그 값이 1을 넘게 되면서 의도하지 않은 값이 나오게 되므로 분석에 문제가 발생함 이러한 문제를 해결하기.. 2022. 4. 1.
Day4. multi-variable linear regression 변수가 여러 개일 경우(multi-variable)의 선형 회귀는 어떻게 할까? Matrix를 이용해 표현하자! 이때 matrix를 사용하면 X가 앞으로 오고, 대문자로 표현하는 특징이 있다. 보통 다음과 같은 식이 계속해서 나오는데 X와 H(X)는 주어지는 경우가 많다. import tensorflow.compat.v1 as tf tf.disable_v2_behavior() x1_data = [73., 93., 89., 96., 73.] x2_data = [80., 88., 91., 98., 66.] x3_data = [75., 93., 90., 100., 70.] y_data = [152., 185., 180., 196., 142.] #placeholder를 통해 여러 데이터를 저장함 x1 = tf... 2022. 3. 21.
728x90