본문 바로가기

딥러닝

(13)
모두의 딥러닝 (12) - 시퀀스 배열로 다루는 순환 신경망 현재 애플의 시리, 삼성의 빅스비, 네이버의 클로바 등등 AI 비서라고 불리는 대화형 인공지능이 점점 개발되고 있는데 이처럼 인공지능 비서가 갖춰야 할 필수 능력은 바로 사람의 언어를 이해하는 것! 문장을 듣고 무엇을 의미하는지를 알아야 서비스를 제공할 수 있기 때문인데 인공지능이 문장을 듣고 이해한다는 것은 많은 문장을 이미 학습(train)해 놓았다는 것이다. 그런데 문장을 학습한다는 건 지금까지 배운 내용과 다른 특징이 있다. 문장은 여러 개의 단어로 이루어져 있는데 그 의미를 전달하려면 각 단어가 정해진 순서대로 입력되어야 하기 때문! 즉, 과거에 입력된 데이터와 나중에 입력된 데이터 사이의 관계를 고려해야 하는 문제가 생겼는데 이를 해결하기 위해 순환 신경망(Recurrent Neural Net..
모두의 딥러닝 (11) - 이미지 인식의 꽃, CNN 익히기 이번에 사용할 데이터셋은 MNIST 데이터셋! MNIST 데이터셋은 미국 국립표준기술원이 고등학생과 인구조사국 직원들이 쓴 손글씨를 이용해 만든 데이터로 구성되어 있다. 7만개의 글자 이미지에 각각 0부터 9까지 이름표를 붙인 데이터셋으로 머신러닝을 배우는 사람이 자신의 알고리즘과 다른 알고리즘의 성과(Accuracy)를 비교해 보고자 한 번씩 도전하는 유명한 데이터셋!(ex. 캐글) 그럼 과연 지금까지 배운 딥러닝 기술들을 이용해 이 손글씨 이미지를 얼마나 예측할까? 저번 장에서는 학습셋의 정확도를 그래프로 그렸다면 이번에는 학습셋의 오차를 그래프로 표현했을 뿐 저번 장과 매우 비슷! 20번째 실행에서 멈춘 것을 확인할 수 있다 => 베스트 모델은 10번째 에포크! 이 모델의 테스트셋에 대한 정확도는 ..
모두의 딥러닝 (10) - 베스트 모델 만들기 이번 딥러닝에 사용할 데이터는 포르투갈 서북쪽의 대서양을 맞닿고 위치한 비뉴 베르드 지방에서 만들어진 와인을 측정한 데이터! 레드와인 샘플 1,599개를 등급과 맛, 산도를 측정해 분석하고 화이트와인 샘플 4,898개를 마찬가지로 분석해 데이터를 만듬. 먼저 데이터의 처음 5줄을 출력해보면 frac를 1로 잡으면 딥러닝을 실행하는데 오래 걸리기 때문이다. 그리고 보다시피 한 줄당 모두 13개의 정보가 있는 걸 확인! 즉, 12개(0~11)의 속성을 가지고 13번째 클래스를 예측하는 프로젝트! 이 장의 제목처럼 우리는 딥러닝을 실행할 때 최고의 모델을 얻어내야 한다. 따라서 이에 따라 딥러닝을 실행해보자! 설명에 적혀있는대로 모니터할 값과 ModelCheckPoint라는 함수를 이용해 save_best_o..
모두의 딥러닝 (9) - 과적합 피하기 과적합을 설명하기 위해 먼저 세즈노프스키 교수의 광물 데이터를 설명하자면 1988년 그는 힌튼 교수가 발표한 역전파 알고리즘에 관심을 가지고 있어 은닉층과 역전파가 얼마나 큰 효과가 있는지 실험해보고파 광석과 일반 돌을 가져다 놓고 음파 탐지기를 쏜 후 그 결과를 데이터로 정리했다. 지금부터 세즈노프스키 교수가 만들어 공개한 음파 탐지기 데이터 정보를 이용해 광물과 돌을 구분하는 실험을 해보자! Index가 208개이므로 총 샘플의 수는 208개! dtypes에서 보이는 것처럼 부동소수 형태(float64)의 60개 속성과 1개의 클래스(object)가 있다. 현재 학습한 결과 학습셋 안에서 학습을 한 결과 99%의 예측 정확도를 보이고 있다. 하지만 이렇게 학습셋에만 집중을 하면 새로운 데이터에 적용을..
모두의 딥러닝 (8) - 다중 분류 문제 해결하기 죄송합니다.. 흑백사진밖에 없습니다 ㅠㅠ 위 사진은 아이리스라는 꽃인데 아이리스는 꽃잎의 모양과 길이에 따라 여러 가지 품종으로 나뉘는데 보는 거와 같이 다른 품종이지만 비슷해 보인다. 이런 경우는 어떻게 할까? 이번 프로젝트는 아이리스의 품종을 예측하는 문제인데 이 세 품종을 골라내야 되므로 클래스가 3개이다. 이렇게 여러 개의 답 중 하나를 고르는 분류 문제를 다중 분류라고 한다. 이제 케라스를 이용해 아이리스의 품종을 예측해보자! 이런 다중 분류 문제를 위해 필요한 원-핫 인코딩에 대해 배웠고 이제 모델을 만들어 보자! 이제 다중 분류에 적절한 오차 함수인 categorical_crossentropy를 사용하고 활성화 함수는 adam으로 정한후 전체 샘플이 50(epoch=50)회 반복될 때까지 실..
모두의 딥러닝 (7) - 데이터 다루기 빅데이터는 머신러닝과 딥러닝을 통해 사람에 버금가는 판단과 지능을 가지게 했지만 빅데이터의 의미 자체로 데이터 양이 많다고 좋은 결과를 얻을 수 있는 건 아니다. 제일 중요한 건 그 데이터들이 필요한지에 중점을 둬야 한다. 즉 자기가 원하는 목적에 맞춰 데이터를 모았다면 이를 머신러닝, 딥러닝에서 사용할 수 있게 잘 정제된 데이터 형식으로 바꿔야 한다. => 머신러닝 프로젝트의 첫 단추 ! 지금부터 딥러닝 실습 시작을 할텐데 모든 실습은 데이터를 분석, 조사하는 것부터 시작하므로 데이터 분석에 가장 많이 사용되는 파이썬 라이브러리인 panda, matplotlib 등을 사용해 데이터가 어떤 내용을 담고 있는지 확인하며 딥러닝의 핵심 기술을 구현해보자! 활용할 데이터 -> 피마 인디언 - 피마 인디언은 1..
모두의 딥러닝 (6) - 오차 역전파 지금까지 우리는 입력 값, 출력 값을 알고 있는 상태에서 정답에 해당하는 가중치와 편향을 직접 집어넣었는데 실제 프로젝트에서는 이미 배웠던 '경사 하강법'을 통해 임의의 가중치를 선언하고 결괏값을 이용해 오차를 구한 뒤 오차가 최소인 지점으로 계속 이동! 하지만 저번에 배운 경사 하강법은 입력과 출력이 하나일 때, 즉 '단일 퍼셉트론'일 경우였고 이번에는 숨어 있는 층이 하나 생겼으므로 계산이 복잡해졌지만 원리는 똑같다! 단일 퍼셉트론에서 결괏값을 얻으면 오차를 통해 앞에서 정한 가중치를 조정하는 것처럼 다중 퍼셉트론 역시 결괏값의 오차를 구해 하나 앞선 가중치를 차례로 거슬러 올라가며 조정하는 데 그러다 보니 최적화의 계산 방향이 출력층에서 시작해 앞으로 진행된다. 그래서 다층 퍼셉트론에서의 최적화 과..
모두의 딥러닝 (5) - 퍼셉트론 인간의 뇌는 치밀하게 연결된 약 천억개의 뉴런으로 이루어져 있다. 뉴런과 뉴런 사이에는 시냅스라는 연결 부위가 있는데, 신경 말단에서 자극을 받으면 시냅스에서 화학 물질이 나와 전위 변화를 일으킨다. 전위가 임계 값을 넘으면 다음 뉴런을 신호를 전달하고 그렇지 않으면 아무것도 하지 않는다. 지금까지 배운 과정과 비슷하다고 생각하다면 GOOD JOB!! 즉 인간의 뇌의 메커니즘을 바탕으로 딥러닝이 만들어 졌따. 즉 뉴런과 비슷한 메커니즘을 사용하면 인공적으로 '생각'하는 무언가를 만들지 않겠냐는 생각으로 딥러닝이 만들어 졌다. 그 첫 연구가 바로 인공 신경망(Artificial Neural Network) 연구다. 이 사진은 뉴런과 퍼셉트론을 비교한 사진인데 뉴런이 자극을 받아 시냅스라는 연결 부위를 통해..