목록AI (14)
외로운 Nova의 작업실
- 다층 퍼셉트론을 활용한 손글씨 분류 실습 0부터 9까지 손글씨를 가지고 다층 퍼셉트론을 활용해 0부터 9를 분류하는 AI를 만들어보겠습니다. 학습 데이터는 MINIST 데이터를 사용할 건데, MINIST 데이터는 28 * 28 스케일을 가지고 있습니다. 따라서 입력값은 28*28 = 784개가 될 것이며, 출력값은 0부터9까지인 10개가 될 것입니다. 지금부터 만들 다층 퍼셉트론의 구조입니다. 첫번째 레이어에서 784개의 입력을 받아 256개의 출력을 내고 두번째 레이어에서는 256개의 입력을 받아 128개의 출력을 냅니다. 그리고 3번째 레이어에서 128개의 입력으로 10개의 출력값을 내게됩니다. 이후 adam optimizer를 통해 역전파로 최적화를 하게되고 이때 사용하는 손실함수는 크로스 엔트..
- 다층 퍼셉트론으로 XOR 구현 import tensorflow as tf XOR의 입력레이어를 설정하겠습니다. 입력레이어는 4행 2열이고 출력레이어는 4행 1열의 형태를 갖습니다. X = tf.placeholder(tf.float32, shape=[4,2]) Y = tf.placeholder(tf.float32, shape=[4,1]) 첫번째 히든 레이어입니다. # 두개의 입력값을 받는 두개의 뉴론을 만듭니다. W1 = tf.Variable(tf.random_uniform([2,2])) # 각각의 뉴론은 한개의 편향값을 갖습니다. B1 = tf.Variable(tf.zeros([2])) # 출력값으로 Z를 리턴하도록 합니다. sigmoid(W1 * X + B1) Z = tf.sigmoid(tf.mat..
- and, or 연산 퍼셉트론 실습 먼저 데이터를 준비합니다. import tensorflow as tf T = 1.0 F = 0.0 bias = 1.0 def get_AND_data(): X = [ [F, F, bias], [F, T, bias], [T, F, bias], [T, T, bias] ] Y = [ [F], [F], [F], [T] ] return X, Y def get_OR_data(): X = [ [F, F, bias], [F, T, bias], [T, F, bias], [T, T, bias] ] Y = [ [F], [T], [T], [T] ] return X, Y def get_XOR_data(): X = [ [F, F, bias], [F, T, bias], [T, F, bias], ..
- 딥러닝의 탄생 배경 딥러닝은 아주 오래전에 논리적인 연산을 하기위해 만들어진 퍼셉트론에서부터 시작합니다. 퍼셉트론을 이해하면 딥러닝에대해 알아갈 수 있습니다. - 퍼셉트론 퍼셉트론은 두개의 입력이 있을때 하나의 뉴런으로 두개의 입력을 계산한뒤 0 또는 1을 출력하는 논리적인 연산 모델입니다. 아래는 퍼셉트론의 식입니다. z = w1x1 + w2x2 + bias(편향값) 이후 z값을 구한다음 z값에대한 활성화 함수(0과1을 구분하는 함수)로 0과 1을 출력합니다. 그림으로 설명하면 아래와 같습니다. 아래는 활성화 함수로 사용하는 스텝 함수입니다. 이렇게 0과 1을 출력하는데, and 연산에 맞는 w1,w2,bias 값과 or 연산에 맞는 w1,w2,bias의 값을 구할 수 있습니다. 예를 들어 w1 =..
- 주성분 분석 주성분 분석이란 고차원의 데이터를 저차원의 데이터로 차원 축소하는 알고리즘입니다. 주로 고차원의 데이터를 3차원 이하의 데이터로 바꿔서 시각화 하는데 많이 사용되며 유용한 정보만을 살려서 적은 메모리에 저장하거나 데이터의 노이즈를 줄이고 싶을때도 사용되는 알고리즘입니다. 먼저 주성분 분석의 작동원리에 대해 알아보겠습니다. 이해하기 쉽게 시각화 가능한 2차원의 데이터를 1차원의 데이터로 축소하는 과정을 알아보겠습니다. 아래는 2차원의 데이터입니다. 위 데이터를 1차원으로 변경하기 위해 x1 좌표로 옮겨보겠습니다. x1 좌표로 옮기게되면 1차원으로 됬긴하지만 많이 중첩되어 데이터를 구분하기 어려워진 것을 눈으로 확인할 수 있습니다. 그러면 x2는 어떨까요? x2 좌표로 옮겨도 동일한 것을 알..
- 로지스틱 회귀 앞서 다룬 선형 회귀 모델로 이진 분류 문제를 풀 수 있을까요? 선형 회귀의 예측값은 수치값으로 나와서 참 또는 거짓을 분류하는 문제에 적합하지 않습니다. 단, 선형 회귀의 예측값을 입력값으로 받아 참 또는 거짓으로 분류하는 모델을 고려해볼 수 있습니다. 이번장에서 배울 로지스틱 회귀 모델은 선형 회귀를 입력으로 받아 특정 레이블로 분류하는 모델입니다. 로지스틱 회귀의 작동 원리는 다음 그림과 같습니다. 왼쪽은 선형 회귀 그래프로 x라는 입력이 들어왔을떄 wx+b라는 결과값을 출력합니다. 이 결과값이 오른쪽 그래프인 시그모이드 함수의 입력값으로 들어가 0부터 1까지의 사이값을 출력합니다. 출력값이 0.5 이상일 경우에는 참, 0.5 이하일 경우에는 거짓으로 분류하는 분류 모델로 사용할 ..
- 선형 회귀 선형 회귀 분석이란 고나찰된 데이터들을 기반으로 하나의 함수를 구해서 관찰되지 않은 데이터의 값을 예측하는 것을 말합니다. 간단하게 축구선수의 슛횟수와 획득한 점수표로 다음 슛횟수에대한 점수는 몇이 되는지 예측하는 선형 회귀 AI를 이해해보겠습니다. 위 표를 보고 다음과 같이 도식화 할 수 있습니다. 이 축구선수가 4번의 슛을 시도할 경우 몇점을 획득하게 될까요? 하나의 함수를 구해보겠습니다. y=ax+b라는 1차함수를 생각할 경우 y=x라는 함수 공식이 관찰된 데이터에 100% 적용된다는 것을 확인할 수 있습니다. 이 축구선수가 4번의 슛을 쏠경우 함수에 따라 4개의 골을 성공할 것이라고 예측할 수 있습니다. - 평균 제곱 오차 그렇다면 데이터가 아래의 상황일때 더 나은 회귀함수를 찾는 ..
- 군집화 군집화는 비지도학습의 일종으로 데이터의 특징만으로 비슷한 데이터들끼리 모아 군집된 클래스로 분류합니다. 예를 들어, 한교실에 있는 학생들의 키 값만 가지고. 키큰 그룹, 키 작은 그룹으로 나누고 싶을때 사용하는 알고리즘이 바로 군집화입니다. - K 평균 알고리즘 K 평균 알고리즘은 간단하면서도 강력한 군집화 알고리즘입니다. 기본적으로 다음과 같은 순서로 진행됩니다. 1. 데이터 준비 2. 몇개의 클래스로 분류할 것 인지 설정 3. 클러스터의 최초 중심 설정 4. 데이터를 가장 가까운 클러스터로 지정 5. 클러스터 중심을 클러스터에 속한 데이터들의 가운데 위치로 변경 6. 클러스터의 중심이 바뀌지 않을때 까지 4번 5번과정을 반복 수행 예를 들어 학생들의 키와 몸무게 데이터로 키크고 건장한 체격..
- 앙상블 앙상블 기법이란 여러개의 분류 모델을 조합해서 더 나은 성능을 내는 방법입니다. 각 분류 모델의 값을 더해서 가장 최적의 값을 도출하는 기법입니다. - 배깅 배깅은 마치 상당히 연주하기 힘든 바이올린 연주곡을 두 세명의 초급 바이올린 연주자가 나누어 연주함으로써 한명의 중급 바이올린 연주자가 연주하는 것보다 더 나은 연주를 할 수 있는 것과 유사합니다. 의사결정 트리는 과대적합되기 쉽다는게 단점인데 이는 편향적이라는 의미입니다. 배깅은 한가지 분류 모델을 여러개 만들어서 서로 다른 학습 데이터로 학습시킨 후(부트스트랩), 동일한 테스트 데이터에대한 서로다른 예측값을 투표로 통해(어그리게이팅) 가장 높은 예측값으로 최종 결론을 내리는 기법입니다. 즉, 의사결정 트리를 일부러 편향적인 모델을 여러..
- 나이브 베이즈 나이브 베이즈는 확률 기반 머신러닝 분류 알고리즘입니다. 나이브 베이즈를 예시를 통해 이해해보겠습니다. 치킨집에서 손님이 주문을 할때 맥주를 주문할지 안할지 예측해보겠씁니다. 이때 다음과 같은 기존 손님들의 주문 내역이 있습니다. 저녁에 손님이 한 명 와서 주문을 합니다. 이 경우 손님이 맥주를 주문할 확률은 조건부 확률이게됩니다. 즉, 저녁에 와서 주문을 할 확률이기 떄문입니다. 이때 나이브 베이즈는 조건부 확률을 계산하는 자신만의 공식으로 계산하게됩니다. 결국 답은 저녁인 5개중에 3개가 주문을 했기때문에 0.6이라는 값을 도출해냅니다. 이런식으로 특징을 많이 뽑아내어 경우의 수를 만들고 나이브 베이즈에 학습시키면 조건부 확률에따라 답을 도출해냅니다. - 가우시안 나이브 베이즈 가우..