본문 바로가기
Programming/Deep learning

기계학습(Machine Learning)

by OKOK 2018. 5. 3.

 시간이 지남에 따라 세상은 사람조차 어떻게 작동되는지 아직 정확히 모르는 영역을 구현하는 프로그램을 요구하기 시작했습니다. 대표적으로 음성인식을 들 수 있습니다. 애플의 시리 같은 프로그램을 만든다고 생각해봅니다. 일단 사람이 어떤 문장을 말했는지 소리 -> 알파벳으로 알아들을 수 있어야 하며, 알파벳으로 이루어진 그 문장이 어떠한 의미를 갖는지 해석 할 수 있어야 합니다. 전체적인 데이터를 보고 그것이 의미하는 정보들을 명확히 짚어낼 줄 알아야 합니다. 


기계학습. 이름에서 알 수 있듯이 기계학습은 기계, 즉 컴퓨터를 인간처럼 학습시켜 스스로 규칙을 형성 할 수 있지 않을까하는 시도에서 비롯되었습니다. 주로 통계적인 접근 방법을 사용하는데, 위의 독감의 예와 반대로 독감이 걸린 사람은 대부분 열이 많이 나고 오한이 있고 구토 증상이 있었다 라는 통계에 기반하여 독감을 진단하는 것입니다. 

 기계학습의 정의는 어떠한 작업 티에 대해 꾸준한 경험 이를 통하여 그 티에 대한 성능 피를 높이는 것. 이것이 기계학습입니다. 정읭에서 알 수 있듯이. 기계 학습에서 가장 중요한 것은 이에 해당하는 데이텅비니다. 좋은 품질의 데이터를 많이 가지고 있다면 보다 높은 성능을 끌어 낼 수 있습니다.


학습 종류에 따른 분류를 하면 3가지로 나눌 수 있스비다. 

 레이블의 유무에 따라 지도학습과 비지도학습으로 나뉩니다. 지도학습은 사람이 교사로서 각각의 입력에 대해 레이블을 달아놓은 데이터를 컴퓨터에 주면 커퓨터가 그것을 학습하는 것입니다. 사람이 직접 개입하므로 정확도가 높은 데이터를 사용할 수 있다는 장점이 있습니다. 


비지도 학습은 사람 없이 컴퓨터가 스스로 레이블 되어 있찌 않은 데이터에 대해 학습하는 것입니다. 즉 와이없이 엑스만 이용해서 학습하는 것입니다. 정답이 없는 문제를 푸는 것이므로 학습이 맞게 됐는지 확인할 길은 없지만, 인터넷에 있는 거의 모든 데이터가 레이블이 없는 형태로 있으므로 앞으로 기계학습이 나아갈 방향으로 설정더되어 있기도 합니다. 


강화 학습은 위의 두 문제의 분류는 지도의 여부에 따른 것이었는데, 강화학습은 조금 다릅니다. 강화학습은 현재의 상태에서 어떤 행동을 취하는 것이 최적인지를 학습하는 것입니다. 행동을 취할 때마다 외부 환경에서 보상이 주어지는데, 이러한 보상을 최대화 하는 방향으로 학습이 진행됩니다. 



지도학습에서 말을 학습이라고 써놨으니 거창하지만, 그 원리는 데이터에 맞춰서 오차값을 최소화하면서 회귀식을 만드는 것입니다. 오차함수가 오목/볼록 함수라는 전제하에 반드시 최저점이 존재하므로. 이를 찾아내는 알고리즘이 바로 경사 하강법입니다. 얼마나 인공신경망이 깊으냐에 따라 딥러닝이라고도 합니다. 


알고리즘 중 회귀기법중에 속하는 것이 인공신경망입니다. 


인공신경망이란, 인간의 뉴런 구조를 본떠 만든 기계학습 모델입니다.  기본 원리는 단순합니다. 몇 개의 층위를 만들어서 그 안의 뇌세포들을 집어넣고, 이들을 무작위 강도를 가진 시냅스들로 연결합니다. 각 뇌세포들은 자신에게 들어온 신호를 가중치와 곱해 모두 더하고, 역치와 비교해서 신호를 다음 뉴런으로 전송합니다. ㄸ선형 합을 아무리 복잡하게 반복해도 나오는 것은 그냥 입력 신호이므로 따라서 wx+b에 무언가 비선형 함수를 취해야만 합니다. 그런데 여기에 무슨 함수를 적용행 햐나느지는 알려진 바가 없고, 그냥 주먹구구식으로 이것저것 함수를 대입해 보면서 가장 결과가 좋은 함수를 사용하는 중입니다. 뉴런과 뉴런 사이를 잇는 시냅스들의 연결 강도는 최초에 무작위로 설정되며, 많은 데이터를 읽고 연결 강도를 조정해 나감으로써 학습이 이루어지게 됩니다. 실제로 알고리즘을 실행하면 돌릴 때마다 다른 결과가 나오는 것이 기본입니다. 


뉴런과 뉴런 사이를 잇는 시냅스들의 여녈 강도는 최초에 무작위로 설정되며, 많은 데이터를 ㅇ릭고 연결 강도를 조정해 나감으로써 학습이 이루어지게 됩니다. 학습 방법은 역시 경사/기울기 하강법을 사용하는데, 인공신경망 알고리즘에서 발생하는 문제의 99는 여기서 생긴다고 보면 됩니다. 

 가장 중요한 트릭은 사전 훈련이라는 개념입니다. 망이 한 단계 걸러서 자기 자신을 출력하도록 미리 학습시켜, 신호의 기하급수적인 분산을 완화하는 것입니다. 그리고 데이터를 나눠서 각각 일부 시냅스를 끈 뒤에 나중에 다시 합치는 트릭 등 각종 트릭이 개발되었고, 무엇보다 컴퓨터의 연산속도가 무지막지하게 빨라지면서 느린 수렴 속도가 그렇게까지 부각되지 않게 되었습니다. 


인공신경망은 만드는 사람도 쓰는 사람도 이게 왜 잘 작동하는지 잘 모를 만큼 부속과 출력의 상호관계가 천차만별입니다. 그냥 결과가 나오니까 쓰는 것입니다. 그냥 이렇게 하니까 학습이 더 잘 되더라 라는 말이 도는 편입니다. 2013년 즈음부터 현재까지 가장 조목받고 있는 머신러닝 알고리즘입니다. 


딥러닝 

 입력과 출력 사이에 있는 인공 뉴런들을 여러개 층층히 쌓고 연결한 인공신경망 기법을 주로 다루는 연구입니다. 인공신경망을 여러 개 쌓으면 딥러닝, 오꼐이. 딥러닝의 가장 큰 특징은 모델의 부피를 키우고, 데이터를 쏟아부으면 무조건적으로 그만큼의 성능향상을 보인다는 점입니다. 딥러닝 이전과 이후를 각각 청동기 시대와 철기 시대에 비유할정도로 딥러닝을 높게 평가했습니다. 



CNN(Convolutional Neural Network) 

 1989년 인간의 시신경 구조를 모방해 만들어진 인공신경망 알고리즘. 콘볼루셔날 레이어에서 합성곱 연산을 통해서 특징을 추출하고. 서브샘플링을 통해 차원을 축소하여 이미지를 단순화 시킨 후 퓰리 코넥티드 레이어에서 잊ㄴ 레이어의 처리결과를 연결하여 이미지를 분류합니다. 이미지 분류에 유용하며 이미지 이에도 사용할 수 있습니다. 


Recurrent Neural Network 

 뉴런의 출력이 다시 입력으로 피드개 되는 재귀적인 연결구조를 갖는 신경망입니다. 다층 퍼셉트론 신경망은 입력이 출력 방향으로만 활성화되고 은닉 뉴런이 과거으 지어보를 기억하지 못한다는 단점이 있습니다. 이러면 입력이 들어온 문맥을 기억할 수 없습니다. 이런 단점은 시계열분석 관련 문제에서 매우 해롭다 알엔엔은 이런 다점을 해결했습니다.


앞에서 무슨 단어가 나왔는지의 문맥이 다음에 나올 단어를 예측하는 문제를 푸는 데 유용합니다. 이런 문제에는 음석인식, 필기체 인식, 텍스쳐 인식이 있습니다. 기존의 딥뉴럴네트워의 경우 각 레이어마다 파라미터들이 독립적이었으나, 알엔엔은 이를 공유하고 있습니다. 따라서 현재의 출력 결과는 이전 타임 스텝의 결과에 영향을 받으며, 히든 레이어는 일종의 메모리 역할을 하게 된 것입니다. 


딥러닝 연구들은 방법에 따라 크게 3가지로 분류될 수 있는데요. 좋은 피처를 찾기 위한 언슈퍼바이즈 러닝, 이미지 인식 그리고 자연어 처리 등 다양한 분야에서 혁신적인 성과를 얻고 있는 컨벌루션 뉴럴 네트워크, 마지막으로 시퀀스 데이터에 적합한 리커런트 뉴럴 넷트워크로 나뉠 수 있습니다.  

 이미지 데이터는 행렬형태로 표현되는 손글씨 데이터입니다. 엠엘피는 기본적으로 벡터 인풋을 받기 때문에 긴 벡터 형태로 먼저 바꾼 뒤, 이러한 데이터를 엠엘피에 통과시키고, 에러 값을 계산한 후 이를 최소화하기 위해 더블유를 순차적으로 업데이트하는 백프로퍼게이션하는 전략을 취합니다. 


커널 행렬을 통해 콘불션을 진행하는 과정 초록색. 분홍석 콘볼루션의 결과. 콘볼루션에서는 주위값들을 반영해 중앙의 값을 변화시키는 일이라고 할 수 있습니다. 여기서 핵심은 씨엔엔은 목적하는 작업의 성공률이 높아지는 쪽으로 이미지를 변형해 간다는 것입니다. 분류하면 분류의 정확도가 높아지는 쪽으로 2차 이미지를 생성하는 것이 핵심입니다. 피쳐 맵이라고 합니다. 다양헌 커널 행렬을 통해 여러개의 피쳐 맵을 생성해 이를 연쇄적으로 진행해 분류를 니행하는 것이라고 보면 됩니다. 


커널 행렬이 학습이 가능하다는 점입니다. 활성 홤수는 뭐하는 것인가요. 마지막에 dpvmdpvmdpsdpsdmf gksk TKgdmadmfhTj 풀리커넥티드를 쌓음으로써 시엔엔 구조를 완성시킵니다.