인공지능 28

RGB 이미지의 합성곱 연산

지금까지는 위의 예시처럼 채널을 고려하지 않고 합성곱 연산을 했었는데, 실제 합성곱 연산의 입력이미지는 다수의 채널을 가지고 있거나 또는 이전 연산의 결과로 나온 특성 맵일 수도 있다. 그레이 스케일의 이미지의 경우 채널이 1개지만 RGB 이미지는 적,녹,청의 3개의 채널을 가지니 RGB 이미지를 예로 다수의 채널을 가진 입력 이미지의 합성곱 연산을 살펴보자. 입력이미지가 다수의 채널을 가진다면 필터 또한 같은 채널의 개수를 가져야 한다. “입력이미지의 채널 수 = 필터의 채널 수” 저 세 개의 행렬을 쌓은 것 같은 3 x 3 x 3 필터를 단순화시켜서 삼차원의 정육면체로 나타내볼 수 있다. 이때 합성곱 연산은 이전이랑 같은 방법이다. 이 정육면체의 필터를 입력 이미지의 가장자리부터 시작해 계산하면서 쭉..

패딩(Padding)

패딩 (Padding) 합성곱 연산에도 단점이 존재한다. 1). 위의 예시를 봐서도 알겠지만 합성곱 연산을 할 때마다 이미지가 축소된다. 이 작업을 여러 번 반복한다면 특성 맵은 초기 입력보다 매우 작아질 것이다. (1 x 1 크기만큼 축소될지도?) 윤곽선을 검출하거나 어떤 특성들을 찾아내려고 할 때마다 저렇게 이미지가 축소되는 걸 원하지는 않을 것이다. 2). 모서리 부분에 놓인 픽셀들의 정보들은 거의 날려버리게 된다. 입력 이미지의 모서리 부분에 있는 픽셀(파란 네모로 표기한)들을 보면 딱 한 번씩만 필터와 맵핑되니 결과 이미지인 특성 맵에 단 한번만 사용되는 것이다. 그만큼 다른 픽셀들과 비교했을 때, 결과 이미지에 덜 사용하게 되니 이 픽셀들의 정보들을 거진 사용하지 않게 되는 것이다. 이 두 문..

합성곱 연산(Convolution operation)

다충 퍼셉트론으로 이미지 인식 문제를 처리해야 한다고 가정해보자. 위의 고양이 이미지의 크기를 1000 x 1000이라 해보자. 추가로 칼라이미지라 채널을 3개를 가지니 해당 이미지의 차원은 1000 x 1000 x 3 으로 총 3백만 개의 픽셀값으로 이루어진 것이다. 따라서 신경망에서 입력층은 총 3백만개의 입력특징을 갖게 된다. 만일 이 신경망에서 첫 은닉층에서 1000개의 은닉노드가 있다면 첫번째 은닉층로 가는 매개변수의 수는 3,000,000 x 1000 = 삼십억개가 된다. 이렇게 변수가 크면 큰 만큼의 충분한 데이터를 얻어서 과적합을 방지하기가 어려워진다. 또한 메모리의 요구사항이 몇 십억개의 변수를 학습하기에는 적합하지 않을 수도 있다. 하지만 합성곱 연산을 통해 이미지의 크기에 대해 고민할..

픽셀(Pixel)과 채널(Channel)

합성곱 신경망을 통해 이미지가 어떻게 처리되는지 알아보기 전에 이미지가 컴퓨터에 어떻게 저장되는지 부터 알아보자. 8이라는 숫자가 써진 흑백이미지다. (그레이 스케일 이미지라고도 불린다.) 해당 이미지를 더 확대하고 자세히 살펴보면 이미지가 작은 사각형들로 이루어져 있는게 보인다. 이 각각의 작은 사각형들을 픽셀(Pixel)이라고 한다. 보통 이미지를 (높이 x 너비)라는 차원을 가진다 라고 하는데 이는 이미지의 크기를 의미한다. 이미지의 크기는 단순히 높이와 너비에 놓인 픽셀의 수로 위의 예시의 경우 높이에는 총 24개의 픽셀이, 너비에는 총 16개의 픽셀이 사용되어 24 x 16의 크기를 가진다. 가운데 사진을 보자. 각 픽셀은 저렇게 숫자 값으로 표시되며 이런 숫자들을 픽셀 값이라고 한다. 픽셀 값..

가중치 규제 (Weight Regularization) ft. 과적합 해결하기

해당 글은 유튜브 채널(https://www.youtube.com/@Deeplearningai) 의 Machine Learning 강의를 정리한 글입니다.  일반적으로 모델의 복잡도를 키우고, 과적합을 막는 방법론을 사용한다고 했다. 과적합을 해결할 수 있는 3가지의 방법을 알아보자. 1. 더 많은 훈련 샘플 모으기 과적합의 경우 각 훈련 샘플에 너무 잘 맞다보니 곡선의 형태가 둘쑥날쑥하다. 더 많은 훈련 샘플을 모으면 그만큼 모델의 들쑥날쑥한 정도가 줄어들어 우측 그래프처럼 일정하게 완만히 올라가는 그래프의 형태를 얻을 수 있다.   2. 피쳐들 중에 몇 개만 선택하기 많은 피처에 비해 데이터셋이 충분치 않으면 과적합을 유발할 수 있으니 필요할 것만 같은 피쳐만 뽑자. 이렇게 예측값(y)에 가장 영향을..

Linear Regression 과 Logistic Regression

해당 글은 유튜브 채널(https://www.youtube.com/@Deeplearningai) 의 Machine Learning 강의를 정리한 글입니다.  분류 문제를 선형 회귀로 해결할 수 없는 이유 선형 회귀(Linear regression) 문제는 집의 크기와 방의 크기 등의 피쳐값을 통해 집의 가격을 알아보는, 즉 예측값이 연속적인 값으로 나오는 문제들에 대해 사용되었다. 그렇다면 어떤 사진이 고양이인지 아닌지 라던가 환자가 어떤 병을 가진지아닌지 또는 숫자 이미지가 0부터 9까지의 숫자 중 어떤 숫자를 가리키는지 등과 같은 분류 문제는 집의 가격을 예측하는 문제처럼 선형식을 통해 해결할 수 있을까?  환자의 종양의 크기를 보고 이 종양이 악성종양인지 아닌지를 예측해야한다고 해보자.해당 분류 문..

Classification: 붓꽃(Iris) 데이터 분석하기

해당 분석글은 https://liz09045.tistory.com/94 글을 토대로 작성되었습니다. 분류(Classification) 문제로 유명한 붓꽃(Iris) 데이터셋을 분석해보자. 붓꽃(Iris)은 위와 같이 3가지의 종류(Setosa, Versicolor, Virginica)를 가지고 있다. 이제 샘플 데이터를 불러와보자. 사이키런(Sklearn)에는 머신 러닝을 쉽게 배울 수 있게 샘플 데이터셋들을 가지고 있다. 그 중에 붓꽃(Iris) 데이터셋도 있으니 이를 로드해준다. 붓꽃 데이터셋은 자료형이 딕셔너리(Dictionary)니 먼저 Key 값을 확인해주자. [ 파이썬에는 딕셔너리라 하는 자료형이 있다. 단어 뜻이 '사전'인 것처럼, 사전처럼 이해하면 된다. "flower" 이 라는 단어에 "..

Train data | Test data | Validation data 차이

평가 데이터(Test data)의 필요성 기계도 사람이 학습과정을 거쳐 능력이 향상되듯이, 반드시 훈련(Training) 과정을 거쳐 성능을 쌓아 올린 후, 그것을 평가하는 단계로 모델 완성을 해줘야 한다. Train set 와 Test set이 필요한 이유가 여기에 있다. '학습/훈련 ⇒ 평가' 는 필수적이다. 위 데이터셋은 여러 증상에 따른 코로나 감염여부에 관한 것이다. 우리는 사람들의 증상에 따라 코로나 감염 여부를 예측하는 모델을 만들고 싶은 거니 맨 오른쪽 초록부분이 우리가 알고 싶은(예측하고 싶은) 목표가 된다. 이 목표에 영향을 미치는 기침, 발열 등의 특징들은 피처(feature)다. 위 데이터는 해당 증상을 가지고 있으면 1, 없으면 0으로 표기하고 있으며 코로나 양성여부의 경우 양성일..

과대적합(Overfitting)과 과소적합(Underfitting)

과소적합(Underfitting) 모델이 너무 단순해서(충분히 복잡하지가 않아서) 데이터의 내재된 구조/패턴을 학습하지 못할 때 발생한다.머신에게 공을 학습시켜야 한다고 가정해보자. 먼저 축구공, 야구공, 농구공 들의 데이터를 보여주면서 "이런 동그란게 공이야" 라고 가르치게 될 것이다.  이렇게 학습이 될 경우, 테스트 과정에서(새로운 데이터) 사과같이 동근 과일이나 보름달도 공으로 예측할 수 있지만, 학습 때 보여주지 않은 다른 수많은 동근 공(테니스공, 배구공, 골프공 등)들도 어쨌든 동그라니 공으로 맞게 예측하게 되는 것이다. 예측 곡선이 학습데이터를 제대로 학습하지 못해, 패턴을 반영하지도 못하니 훈련 데이터에서도 오차가 크고, 동근 애들은 공이 아닐지라도 공이라 예측해버리니 테스트 데이터에서의..

배치 사이즈(batch size) | 에포크(epoch) | 반복(iteration) 차이

기계는 다음과 같은 과정을 통해 학습한다.1. 임의의 파라미터(가중치($w$))를 정한다.2. 이 가중치에 대한 손실값을 구하고 손실 함수(Loss function)의 기울기(Gradient)를 구한다.3. 경사하강법(Gradient Descent)을 이용해 파라미터를 업데이트 한다.4. 업데이트 된 지점에서 새 손실 함수의 기울기를 구한다.5. 3번 다시 실시6. 파라미터가 최적값에 도달하면 파라미터 업데이트를 중지한다.    학습 과정에서의 문제보통 기계를 학습 시킬 때 사용하는 데이터의 양은 매우 많으며 이렇게 많은 데이터를 모두 한꺼번에 모델에 태우게 되면, 컴퓨터가 버티질 못한다. 데이터 크기가 너무 크면 메모리가 부족해진다.한번의 학습에 계산되어야할 파리미터 수가 지나치게 많아져 학습 속도가 ..