본문 바로가기
Programming/Deep learning

Deep Neural Nets

by OKOK 2018. 1. 17.

인류이 꿈. 골치있는 문제를 기계를 만들즈아!!!! 우리의 뇌를 공부해서 오케이. 여러가지를 가지고 있는데, 뇌가 복잡하게 연결되어 있습니다. 연결된 부분을 자세하게 보았더니, 깜짝놀란 것은 뉴런이라고 불린 유닛이 너무나 단순하게 동작이 되더라. 어떻게 생각할 수 있을 것인가. 고민에 빠질 정도로 단순하게 동작이 되는 것입니다. 길이에 따라 신호의 양이 달라집니다. 어떤 웨이트의 곱이 되는 정보로 할 수 있습니다. 웨이트로 볼 수 있습니다. 다할 수 있습니다. 썸이 일어납니다. 그런다음에 통과가 되면 바이어스 항목이 더해져서 그다음으로 전달 되거나, 다 모여져 있는 값이 정해져있는 값 이상이 되면 활성화되고 그 값 이상이되지 않으면 활성화되지 않더라. 오 이런것들은 이런 형태의 뉴런은 기계적 수학적으로 나타낼 수 있습니다. 활성화 함수 함을 구하는 것을 가정합시다. 어떤 신호가 있습니다. 어떤 형태의 어떤 값으로 곱하게 됩니다. 웨잇으로 곱하게 됩니다. 이런 것을 다 더한다음에 바이어라는 것으로 합합니다. 그런다음에 활성화 함수를 사용해서 어떠 임계값을 넘어가면 1이라는 신호를 주고 어떤 값이 신호가 작으면 오케이 1 과 0으로 단순한 형태로 만들 수 있겠다 든것입니다. 오케이. 이것을 이전 수업에서 본 것입니다. 이런 형태로 나타낼 수 있습니다. 이것을 모은 다면 동시 출력 여러개 할 수 있다 이것입니다. 네. 이 기계를 직접 하드웨어를 가지고 만들 수 있습니다. 웨이를 학습하기 위한 다이얼을 웨이트를 특정한 인풋 값들에 대해 출력을 냅니다. 자 이것을 가지고 인공지능이라고 많은 사람들이 관심. 연구하는 분들이.  


기계를 만들었던 프랭크 박사님이 하신 말씀입니다. 오케이요. 이것이 곧 스스로 학습해서 걷기도 말하기. 자기 존재를 인식하게 됩니다. 오케이요 아직까지도 안되고 있는 것이지만, 큰 관심을 끌게 되었습니다. 어느정도의 성공도 끌었습니다. 앤드나 오어 문제를 풀수 있으면, 이것을 조합해서 생각하는 기계를 만들 수 있다고 생각했습니다. 엑스원 엑스투 를 주었을때 엔드와 오어을 만들어 낼 수 있을까. 중요한 문제였습니다. 리니어한 모델 이었기 때문입니다. 엔드도 마찬가지로 됩니다. 모델을 만들어내면 되기 때문입니다. 오, 우리가 할 수 있겠다. 굉장한 희망에 부풀었습니다. 액스오얼이라는 것입니다. 매우 단순한 로직인데, 이것을 가지고 우리가 해볼까. 기계를 만들어서 엑스와이 엑스투를 주고 엑스와이라 나오게 해볼까. 이게 안되는 것입니다. 이게 리니어 하게 선을 그어도 그것이 50 밖에 안되는 것입니다. 구분을 할 수 없게 됩니다. 엑스원 엑스 투를 정확도가 떨어지게 됩니다. 많은 사람들이 심플한 모델을 가지고 많은 사람들이 도전했습니다. 딱한 생각이 들것 입니다. 민스키가 있습니다. 민스키 민스키 민스키 민스키 에이아이랩에 파운더 대장. 오케이요. 자기가 보기에는 안될 것 같다는 것입니다. 안된다 지금 가지고 있다는 것. 여러개를 합치면 멀티레이어 퍼셉트론인데 이것을 할 수도 있어, 그런데 더 큰 문제가, 각각의 웨이트와 바이어스 학습시킬수 없어. 이 책의 주제입니다. 많은 사람들이 실망을 하게 됩니다. 그리고 이런 레이어에서 즉, 다시 강조한 것이 아무도 이것 안되는 것입니다...... 책에 설득되어 이것은 아무도 할 수 없구나. 하고 10년 20년이 흐르게 됩니다. 86년도에 가서 해결합니다. 74, 82 기본적으로 네트워크가 이렇게 연결되어 있고, 출력을 만들어 낼 수 있고, 출력이 틀린 출력 더블유 비를 조절해야 합니다. 오케이. 이렇게 백프로파게이션이라는 것 에러는 뒤로 전달해가면서 각각을 체인지 하면 어떨까. 이것이 1974 폴이 박사과정 논문에서 작성했습니다. 이 문제를 풀었습니다. 82년도. 86년도 힌튼 이분이 똑같은 방법을 독자적으로 만들어냅니다. 많은 분들이 재발견이다. 주목을 받기 시작했습니다. 복잡한 형태의 망도 학습을 시키고 예측이 정확해졌습니다. 한편으로는 라쿤이라는 다른 방법으로 접근하였습니다. 고양이를 가지고, 그림을 보게 하고 시신경을 뉴런 네트워이 어떤게 동작하는지 살펴보았는데, 그림의 형태에 따라 일부의 뉴런들만 활성화 다른 형태에는 다른 뉴런이 활성화되었다. 그림을 볼 때, 우리의 신경망 세포와 동시에 전체를 보는 것이 아니라 일부의 부분 부분들을 보고 조합되는 것이 아닌가. Convoltional Neurla netowrks 전체적으로 보는 것이 아니라 이만큼 보고, 이만큼 보고 이만큼 보내고 이런식으로, 하는 것입니다. 나중에 합치는 방법으로 개발한 것이다. 오케이요. 이 방법이 굉장히 잘 동작합니다. 90% 문자 숫자 90% 을 사용합니다. 책을 자동으로 읽어들이는 기계를 사용하였습니다. 오. 그런것들이 있군요. 굉장한 성공이었습니다. 구글 차가 처음 나온것이 아니라, 84-94 프로젝트 씨엠유랩에서 했던 자동 주행차가 있었습니다. 나의 시피유는 뉴럴넷이다. 오케이요. 그 때 관심과 희망을 가지게 되었습니다. 그러다가 안타깝게도 큰 문제에 봉착하게 됩니다. 백프로파게이션알고맂ㅁ이 몇개 정도의 레이어에서는 동작하는 복잡한 것은 굉장히 많은 10여개 이상되는 레이어를 학습시킬 수 있어야 합니다 백프로파게이션은 뒤에서 가는 구조였기 때문에 앞에 있는 에러를 뒤에서 보낼때 여기에 가면 전달되지 않고 학습시킬 수 없게 됩니다. 많이 할 수록 성능이 떨어지는 것입니다. 오케이 에스브이엠 랜덤포레스트 이런것들이 있고 라쿤 교수님은 자기가, 뉴럴넷의 전문가이지만 다른 에스브에임이 랜덤포레스트가 더 잘 되더라. 너무 복잡하기 때문에, 어렵겠죠. 뉴럴넷은 2번째 침체기를 맞게 됩니다.


몇개가 안되는 것은 학습시키는데, 오케이, 계속해보도록 하겠습니다. 시는 논문 리젝됩니다. 캐나다로 이주하게 됩니다. 이렇게 캐나다 출신인데요. 몬트리올 토론토 출신들 입니다. 칭찬해주고 싶은 단체입니다. 이 단체의 그 당시를 회고하면 아무도 이 일을 하지 않고 있을 때, 마치 도박을 한것과 같이 칭찬을 해주어야 한다. 이 단체가 굉장히 훌륭하다 거듭이야기 하고 있습니다. 찬바람이 불던 10년 지난 다음에, 2006년 2007년도에 이 힌튼 교수님과 벤져 교수님 큰 브레이크트륙 되는 논문을 발표합니다. 신경망은 학습할 수 없다고 했는데, 이것을 알고보니, 더블유 값이 있잖습니까. 이 처음에 초기값을 주고 초기값을 잘 못주었다. 초기값을 잘 선택한다면 학습할 수 있습니다. 초기값을 주는것이 중요해 신경망을 구축하면 복잡한 문제를 풀 수 있다. 논문을 통해서 보여주었습니다. 이 때, 뉴럴 네트웍이라고 헀을때, 딥러닝으로 바꾸자. 이때부터 다시 관심을 가지고 연구를 시작했습니다. 이미지 넷이라는 첼린지가 있습니다. 그림을 주고 이 그림이 무엇인지 맞추는 것입니다. 컴퓨터 비전에서 오케이. 약 30에 가까운 에러율이 있었습니다. 90이상되어야 쓸 수 있는 기술이었습니다. 2012년 히튼 교수 연구실 알랙스 박사 과정 친구 알랙스넷이 15프로로 툭 떨어지게 됩니다. 엠에스알에 딥류럴 3퍼센트 에러로 들어갔습니다. 스탠포드 학생이 역시 5프로 가량의 에러가 났습니다. 인간을 뛰어넘었습니다. 오케이 한 걸음 나아가서 그림을 설명해보아 해도 설명할 수 있게 되었습니다. 와우,딥 에피아이 러닝입니다. 에피아이라는 것을 자동으로 예측하자 자연어로 시스템에게 입력을 줍니다. 파일을 카피하고, 이것을 원하는 디렉토리에 저장하고 싶다. 자동적으로 어떤 에이피아이를 써야하는지 어떤 순서대로 써야하는지 쭉 나열해줍니다. 그대로 나열 하고 변수들만 채우면 프로그래밍이 완성됩니다. 약 20%의 정확도를 딥러닝을 이용해서 만들었더니, 정확도가 65까지 올라갔습니다. 기하학적인 발전을 하였습니다. 이것이 딥러닝을 이용한 결과입니다. 최근 바이두에서는 노이즈가 굉장히 많을때도 90까지 알아들을 수 있습니다. 딥러닝을 이용해서 아타리 게임을 잘하게 됩니다. 알파고도 딥러닝을 일부사용해서 사람의 대표를 이기게 되었습니다. 힌튼이 뒤를 돌아보면 왜 안됬을까 4가지정도로 밝혔습니다. 나는 연구자도 아니고 컴퓨터 공학자도 아닌데? 데이터를 가지고 있거나, 어떤 것을 팔고 있다, 어떤 것의 비지니스를 한다. 반드시 상관있는 일입니다. 생각을 하게 됩니다. 한 예로, 유투브를 보면 자면을 키게 되면 자막이 나오게 됩니다. 이것이 사람이 입력해서 나오는 것이 아니라, 소리를 듣고 만들어내는 것입니다. 


페이스북에 관심이 갈만한 피드들만 학습을 통해서 보여줍니다. 구글 검색엔진 문장이 있는 것이 아니라 클릭할만한 문서를 학습을 통해서 예측을 해서 보여줍니다. 아마존 인공지능을 도입해서 성공한 사례입니다. 홍콩하면 물건을 잘 판단고 합니다. 데이터를 학습시키면 어떤 물건을 걸어두어야 하는지 어떤 것을 진열해야할지를 예측을 해서 매출을 올릴 수 있게 됩니다. 왜 이것을 지금 해야할까. 연구자나 학생이다 이 분야에 권장합니다. 지금 시작해도 세계적인 전문가가 되기에는 늦지 않았습니다. 충분히 전문가가 될 수 있습니다. 복잡하지도 않고 수학적으로 복잡하지 않습니다. 실용적으로 시작해도 오케이요. 현재의 딥러닝은 90% 이상의 정확도를 가지고 실제로 매출을 올려주고 삶을 도와줄 수 있는 수준이 되었습니다. 이미 많은 것들이 공개되어있습니다. 쉬운 랭귀지가 많이 있기 때문에 학습하면서 딥러닝을 충분히 배워서 활용할 수 있습니다. 분야가 무엇보다 재미있습니다. 오케이요. 한번 해보면 재미를 볼 수 있습니다. 


텐서가 복잡해지기도 하는데 이것만 잘 사용하면 텐서플로우를 쉽게 만들 수 있습니다. 지난번과 마찬가지로 많은 분들과 함께 개발하고 있습니다. 일차원 어래이를 생성할 수 있습니다. 랭크이고 어떻게 사용하는지 보도록 하겠습니다. 어떻게 생겼냐. 7개 있습니다. 숫자가 하나만 나오고 7개가 있다. 쉐이프를 할 수 있습니다. 그런다음에 여기가 인덱스가 오케이요.  슬라이싱이라고도 합니다. 모든것, 그리고 배타적이라는 것을 알고 있으면 됩니다. 이런것들을 값과 연결이 됩니다. 이렇게 1차원에서는 쉽게 볼 수 있습니다. 원하는 것 대로 합니다. 이 차원 어레이도 1차원 어레이를 섞어둔것입니다 랭크는 2가 됩니다. 형태는 4행 3열입니다. 오케이요. 엘리먼트가 3개가 있고, 3개가 있고, 4컴마 3입되비낟. 오케이요. 형태 랭크 축이 있습니다. 축은 무엇인가요. 주어진 텐서에 대해서 1차원 어레이에대해서는 랭크가 1이됩니다. 그리고 1행 4열 쉐임을 볼 수 있습니다. 2행 2열이 있스비다. 랭크는 2디가 되겠습니다. 오케이요. 괄호의 갯수를 보고 랭크를 볼 수 있습니다. 아하 이렇게 되는 것입니다. 어떻게 찾느닞요. 4개입니다. 랭크는 저거 컴마의 숫자이구나요. 어케이요 3개이빈다. 이렇게 인식하는 구나, 컴퓨터가 인식하는 것을 그대로 알면 됩니다. 오케이요. 똑같이 있네요. 2개입니다. 한개 두개 입니다. 오케이요 끝. 1 묶어 나가는 순서를 알면 되겠구나. 복잡했지만 복잡하지 않습니다. 풀어서 써서 보면 이렇게 됩니다. 이렇게 그려보면 좋습니다. 축이라는 개념이 무엇인지 궁금했습니다. 축이라는 개념이 무엇인지 보면 랭커를 보면 랭커가 몇인가요. 랭커가 4개의 축이 있다고 보면 됩니다. 축에 축이 3이 됩니다. 쉐이프가 어떻게 될까요. 머머가 됩니다. 이런게 하나 이런게 하나 하나씩 있습니다. 2컴마 2컴마 2컴마 2 이렇식으로 있습니다. 몇개인가요 랭크가 2개인가요. 맵멀을 하면 됩니다. 오케이 매트릭스 곱인지 그냥 일반적인 것을 하는 것인지. 브로드캐스팅이라는 개념이라는 것 때문입니다. 잘못 사용되면 독이 되기 때문이 주의해야 합니다. 이런경우 쉐이이 웟인가요. 행렬행태가 맞지 않는데 합이 됩니다. 자동으로 이렇게도니느 것입니다. ㄹㅇ크가 다를 경우에도 연산이 가능합니다. 오케이요. 그리고 브로드 캐스팅을 사용하더라도, 같은 쉡을 만들어서 연산하는 것이 좋습니다. 리듀스 민이라는 것을 정체를 보도록 하겠습니다. 말그대로 평균을 구하는 것이비낟. 행렬에서 값이 여러개 있는데 인테저인지 플로팅인지 봐야합니다. 플로팅 포인트라느 것을 기억하면 좋습니다. 축하면 보고 들어가겠습니다. 이렇게 사용이 가능하구나. 오케이. 축이 없이 사용되면 모두를 평균내어라 이렇게 됩니다. 축 개념에 대해서 알고 있어야 합니다. 그럼 충분히 알게 됩니다. 


보통 많이 쓴느 것이 안쪽에 있는 축을 가지고 합을 낸다음에 평균을 내는 것입니다. 많은 질문이 들어왔는데, 안쪽에 이는 축을 먼저 계산을 하고 평균을 내었다 이렇게 보면 됩니다. Argmax 축의 개념과 인덱스가 나오는 구나. 그럼 인덱스 위치가 나오는구나. 오케이요. 어디인지 알겠습니다. 인덱스가 나오는 것입니다. 위치를 나타내는 것입니다. 가장 많이 사용되는 것 리쉡 입니다. 많이 사용되기 떄문에, 오 랭크가 3개인 것입니다. 이런 형태로 나오고 싶다. 어떻게 하는가. 랭크를 이런형태로 쉡을 주어버리면 이렇게 리쉡이 됩니다. 오켕요. 전체적인 것을 변경하지는 않고 축에 대한 것만 변경하는 것이구나, 리쉡중에 스퀴즈랑 익스펜드가 있습니다. 이런 경우에 이런 속에 르어가 있습니다. 스퀘즈하면 이렇게 됩니다. 오케이 펴줍니다. 익스펜드의 경우에는 어떻게 되는 것인가요. 원 핫이 있습니다. 3개 값중에 하나를 주게 되면 몇개인지 주면 됩니다. 오케이 이런것을 원핫하고 리쉡하고 스쿠즈하고 익스펜드하고 이런것들을 잘 알아야 합니다. 오케이요. 참고하면 좋습니다. 캐스팅이라는 것을 사용합니다. 인테져로 바꿀래 하면 이렇게 바꾸게 됩니다. 트루를 인테져로 변경할 수 있습니다. 


스택이라는 것을 사용할 수 있습니다. 엑스 와이지를 싸을 수 있습니다. 축이라는 개념이 있습니다. 아 축값을 변경하여 다른 형태로 변경가능합니다. 


또 많이 사용하는 것이 텐서가 있습니다. 영으로 들어있는 것, 지로로 들어있는 것 원스 제로스 라이크 이러ㅔ 만들 수 있습니다. 오케이요. 0과 1로 만들 수 있습니다. 여러 형태의 복수 개의 텐서를 가지고 있다. 한번에 보면 집입니다. 3개를 집으로 묶어서 한번에 처리할 수 있습니다. 오케이요. 이렇게 하나씩 앞뒤로 다룰 수 있습니다. 이런 것들이 있다. 필요할때마다 하나씩 익혀나가면 됩니다.