앞에서 뉴런에 대해서 대충 알아봤습니다. 제 실력이 이정도라;;;;
뉴런은 다음과 같은 구조로 생겼었죠?
우리 뇌에 수없이 많은 뉴런을 프로그래밍하기 위해서는 어떻게 해야하는지 알아보겠습니다.
뉴런은 다음과 같은 연결성을 지니고 있습니다.
제가 그림그리는 실력이 없어서 이해 부탁드립니다. ^^;;
그리고 이 뉴런 하나 하나가 전기신호를 받아 들이고 또 그 신호를 다른 뉴런에게 전달합니다.
실제로 우리가 신경망을 구현하기 위해 저 뉴런을 한개의 노드로 구현합니다.
노드는 한개의 지점이라고 생각하시면 됩니다.
그리고 뉴런을 병렬화로 수없이 많은 뉴런에 전기신호를 받고 또 수없이 많은 뉴런에 전기신호를 보냅니다.
여기서 전기신호를 최초로 받아들이는 뉴런을 입력계층(input layer)에 넣습니다.
그리고 이 뉴런을 이제부터 노드라고 부릅니다.
입력계층에는 전기신호를 최초로 받아들이는(입력) 노드를 위치시킵니다.
그리고 최종적으로 전기신호를 내보내는(출력) 노드는 출력계층(output layer)에 위치시킵니다.
그림으로 표현한다면 다음과 같습니다.
위의 그림을 보면 입력계층에 노드가 3개 그리고 짝맞춰서 출력계층에 노드가 3개가 있습니다.
실제로 인간의 뉴런은 1천억개가 넘지만 우리가 이 뉴런을 공부하기 위해서 1천억개의 뉴런을 그릴필요는 없습니다.
우리는 학습하기 위해 많아봤자 20개 이하의 노드를 연습용으로 사용할 것입니다.
실제로 위의 이미지와 같이 6개의 뉴런을 가진 생명체가 있다면 정말 단순한 삶을 살다가 죽을것 같습니다.
우선 뉴런이 많으면 많을 수록 똑똑합니다.
뉴런이 10개 20개 정도면 그만큼 학습능력이 떨어집니다.
뉴런이 어느정도 있어줘야 강아지도 구분하고 고양이도 구분하고 숫자도 구분하고 할 수 있습니다.
그리고 우리가 나중에 시뮬레이션 할 때도 노드를 1천억개를 만들지는 않습니다.
노드가 1000개 이하정도여도 우리가 하고자하는 것은 충분히 해낼 수 있습니다.
하지만 전문가분들이 하는것은 정말 전문적이여서 엄청나게 많은 노드를 필요로하고 그럴수록 신경망이 고양이 사진, 강아지 사진, 손 사진등의 학습시간도 엄청나게 걸리기 때문에 몇천만원을 들여 고사양의 컴퓨터를 구매하는것이지요.
이세돌과 바둑을 둔 알파고만해도 cpu가 1202개가 였다고하죠?
지금은 Tensorflow Process Unit라는게 나와서 TPU 6개로 처리를 하고 있다고 들었습니다.
아무튼 우리가 사용하고 있는 컴퓨터로는 노드 1000개 정도는 시간이 걸리긴해도 불가능은 아니니 이 학습을 같이할 수 있습니다.
다시 학습으로 돌아와서 이미지에서 입력계층과 출력계층 2개만 있습니다.
입력계층은 정말 입력만 받습니다.
그리고 출력계층은 정말 출력만 합니다.
입력, 출력만 진행하면 정말 아무것도 할 수 없습니다.
우리는 이제 입력계층과 출력계층에 연산을 처리하는 계층을 여러개 만듭니다.
그리고 계층간, 노드간 가중치를 임의로 부여하여 앞에서 학습한 시그모이드 함수를 통해 노드간의 계산을 해나갈겁니다.
입력계층과 출력계층 사이에 들어가는 계층은 은닉계층(hidden layer)이라고 부릅니다.
입력계층과 출력계층에 노드를 몇개를 넣어도 학습에는 아무 효과가 없습니다.
은닉계층이 많아야 학습률이 높아집니다.
뉴런이 적은 생명체와 뉴런이 많은 생명체가 다르듯이
은닉계층을 많이 만들어야 학습효과가 좋습니다.
우선 은닉계층을 1개 만들어 이미지화 해보면 다음과 같습니다.
이렇게 인위적으로 신경망을 만들어봤습니다.
그럼 다음시간에는 가중치에 대해서 알아보겠습니다.
봐주셔서 감사합니다. 문의 또는 잘못된 설명은 아래의 댓글에 부탁드립니다.
당신의 작은 누름이 저에게는 큰 희망이 됩니다.
댓글 0개
정렬기준