본문 바로가기

인공지능23

7.4.2 im2col로 데이터 전개하기 이미지를 데이타로 나타내면, 앞서 말했듯이 아래 그림처럼 도형 모양이 됨. 도형모양은 머리 속으로 상상하긴 좋은데, 막상 컴퓨터가 계산하도록 할 때는 불편함. 그래서 image를 2차원 행렬로 바꾸어 주는 함수가 필요한데, 그게 이미 있음. 이름을 im2col 이라 하는데, 아래 그럼처럼 n차원 도형을 입력으로 받은 후 2차원 행렬을 출력함. 즉, im2col 함수의 역활은 입력데이타를 펼쳐놓는 것임. 2021. 8. 4.
7.4 합성곱/풀링 계층 구현하기, 7.4.1 4차원배열 숫자를 일정한 공간에 배열한 것을 ..... 수학적 용어로 '배열'이라고 함. 뭐야! 말장난? 노우. 사실임! 위 참조 그림처럼 숫자를 배열하는 경우도 있는데, 저렇게 배열한 것을 2차원 배열 또는 '행렬'이라고 함. 2차원 행렬이라 불러도 됨. 영어로는 array. A = [1 2 33 4 2 0 44 6575645645 1 1 2] 요것도 배열임. 요것을 그냥 1차원 배열, 또는 1차원 행렬이라고 함. 2021. 8. 4.
7.3 풀링 계층 풀링은 입력데이타를 가로.세로방향으로 줄여주는 연산이다. 위 그림은 2x2 max pooling하는 과정이다. 입력데이타의 2x2 부분에서 최대값을 취하고, 2만큼 자리를 옮겨(즉, 스트라이드=2) 또 max pooling하는 과정이다. 풀링 연산 특징 중 하나는 입력데이타가 조금 변해도 결과는 거의 변하지 않는다는 것이다. 위 그림에서는 왼쪽에 있는 입력데이타가 오른쪽으로 1씩 자리이동이 일어난 후 풀링을 한 것인데, 자리이동이 있긴전이나 후 모두 풀링후 결과는 같다. 기억할 점: 입력데이타 크기를 줄일 때는 풀링을 쓴다. 2021. 8. 2.
7.2.3 배치처리 입력 데이타를 여러개 묶어 '한번에 병렬로 처리'하는 것을 배치처리라고 한다. 아래 그림과 같은 모양이 된다. 배치처리의 반대는 시분할처리인데, 컴퓨터 CPU 활용도 면에서 배치처리가 좋다. 무엇보다도 시간이 절약된다. 2021. 8. 2.
7.2.6 블록으로 생각하기 앞서 배운 데이타는 3차원 느낌을 갖는다. 따라서, 신경망 계산을 생각할 때 각 데이타를 마치 도형처럼 생각하면 편하다. 앞서 결과를 도형으로 나타내면 다음 그림과 같다. 이미지는 3개 행렬(빨,노,파)이다. 그래서 이미지에 가해지는 필터도 대부분 3채널이다. 각 색에 대해서 필터링 해야 하니까! 위 그림은 출력 데이타가 1행렬이다. 만약 여러개의 출력데이타가 필요하다면 어떻게 하면 될까? 사실 출력데이타도 3채널이어야 한다. 그런데 위 그림보면 1개다. 3개로 만들려면 어떻게 하면 될까? 필터를 여러개 사용하면 된다. 아래 그림처럼, 입력데이타에 대해서 FN개의 필터 각각을 합성곱 연산하면 FN개의 출력데이타가 나온다. 출력데이타가 3개이면 필터가 3개면된다. 출력데이타가 만약에 10개가 필요하다면? .. 2021. 8. 1.
7.2.5 3차원 데이타의 합성곱 연산 이미지는 대부분 칼라이다. 즉, 입력 데이타가 R, G, B 3개의 행렬로 구성된다는 것이다. 이것을 처리하려는 인공지능 역시 3채널을 받을 수 있어야 한다. 그래서 3차원 데이타 합성곱 연산이 필요한데, 아래 그림처럼 연산한다. 쉽다 쉬워 ~~~ 공부하고 있는 책에서는 아래 그림처럼 나오는데, 그 의미를 위 그림들이 잘 설명해주고 있다. 기억해야 할 점: 입력채널수와 필터수는 같아야 한다. 여기서는 3개씩이다. 그리고 필터의 크기는 동일해야 한다. 2021. 7. 31.
7.2.4 스트라이드 2021. 7. 29.
7.2.3 패딩 합성곱 연상을 계속하면 출력 크기가 계속 작아진다. 위 그림에선 4x4 입력이 2x2 크기의 출력으로 작아졌다. 이 출력을 다시 입력으로 사용하면 더 작아질 것이고 이 과정을 계속 반복하면 엉뚱한 결과가 나올 것이다. 그래서, 출력 데이타의 크기가 작아지지 않도록 해주기 위해서 입력데이타를 일부러 크게 만든다. 크게 만드는 방법은 패드를 붙이는 것이다. 주위가 0으로 채워진 더 큰 입력을 만든다. 아래 그림처럼. 4x4 입력에 0으로 패드를 붙여서 5x5 입력이 되었고 합성곱 연산결과 4x4 출력이 되었다. (작아졌다) 이것을 다시 입력쪽으로 돌릴 땐 다시 0으로 패드를 붙여서 크게 만든다. 이런 과정을 무한히 반복해도 출력데이타 크기는 작아지지 않는다. 그래서 패드를 붙이며 이것을 패딩이라고 한다. 2021. 7. 28.
7.2.2 합성곱 연산 CNN에서는 '합성곱 연산'을 많이 하는데, 이미지 처리 분야에서 말하는 '필터연산'과 같은 말이다. 표시는 다음과 같이 한다. '필터'행렬을 '커널'이라 부르기도 한다. 어쨌든, 동그라미 안에 별이 들어간 수학기호는 '콘볼류션'이라 하는데, 다음과 같이 계산한다. 필터 윈도우를 일정간격(여기서는 한칸씩 이동)으로 이동해 가면서 콘볼류션 연산을 한다. 자세히 보면 겹쳐지는 숫자끼지 곱한 후 더하면 된다. 필터연산(=콘볼류션 연산)에 편향(bias)까지 더하면 위 그림처럼 된다. 2021. 7. 26.
7.2 합성곱 계층 먼저 이미지에 대해서 알아보자. 흑백 이미지 데이타는 다음과 같이 되어 있다. 0은 검은 색, 255는 흰색을 의미한다. 칼라는 Red, Green, Blue 이렇게 3개 색의 조합으로 표현할 수 있는데, 각 색을 '채널'이라고 부른다. 위 그림처럼, 천연색 사진은 각각 빨강, 파랑, 녹색 채널로 분리될 수 있고, 각 채널 픽셀의 어둡기(0부터 255)에 대한 정보를 가지고 있다. 다시 말해서, 위 그림처럼 3개의 '밝고 어둡기' 행렬 데이타를 조합하여 천연색이 표현된다는 것이다. 이미지 데이타는 위 그림들에서처럼 네모박스 (수학용어로는 행렬)로 표현하면 아주 편하다. 2021. 7. 25.