본문 바로가기
  • 비둘기다
  • 비둘기다
  • 비둘기다

분류 전체보기53

[머신러닝, 딥러닝] 신경망 (4) - MNIST 손글씨 데이터 인식 MNIST 손글씨 숫자 인식 일반적으로 출력을 받을 때는 우리가 출력받기로 설정한 클래스의 개수만큼 출력층의 뉴런 수를 정합니다. 예를 들어 0부터 9까지의 수를 숫자에 맞게 분류하기로 한다면 출력층의 뉴런 수를 10개로 잡으면 됩니다. 이번 페이지에서 사용할 MNIST 데이터셋은 손글씨 숫자 이미지의 집합입니다. MNIST 손글씨 숫자 데이터는 위와 같은 형식으로 이루어져 있으며 누군가가 예쁘게 쓴 실제 손글씨입니다. 위의 숫자들이 뭔가 흐릿하게 보이는 이유는 픽셀로 이루어져 있기 때문입니다. 사진들의 크기는 각각 28 x 28로 작은 크기라서 더욱 선명하게 픽셀자국이 보입니다. 각 픽셀은 0에서 255까지의 값을 취합니다. 가장 먼저 해주는 작업은 이 픽셀 사진들을 넘파이 배열로 바꿔주는 것입니다. .. 2023. 1. 23.
[머신러닝, 딥러닝] 신경망 (3) - 항등함수와 소프트맥스 함수 이번에는 지난번의 말미에 언급했던 항등함수와 소프트맥스 함수에 대해서 다뤄보려고 합니다. 먼저 항등 함수입니다. 항등이란 예전부터 수학에서 자주 등장하는 단어이듯, 뜻은 같다, A = A라는 뜻입니다. 이것에 알고리즘을 씌워 생각해 보면 입력과 출력이 항상 같다는 뜻이 됩니다. 여태까지 신경망의 형태를 보면 하나의 입력이 수많은 은닉층에 영향을 미치고 또한 많은 값들이 출력에 영향을 주는 것을 확인할 수 있었습니다. 그러나 항등 함수는 그 구조 특성상 출력층에서 입력 신호가 그대로 출력 신호로 가는 모습을 볼 수 있기 때문에 이전의 신경망의 모습과는 상이한 모습을 볼 수 있습니다. 위와 같은 항등함수는 주로 회귀에서 사용된다고 하였습니다. 그러나 구조를 보면 아시다시피 입력과 출력이 그대로 가기 때문에 .. 2023. 1. 22.
[머신러닝, 딥러닝] 신경망 (2) - 다차원 배열 계단 함수, 시그모이드와 ReLU에 이어 넘어가기 전 행렬에 대한 개념을 짚고 넘어가 보고자 합니다. 행렬은 행과 열로 이루어진 수를 의미합니다. 가로가 행, 세로가 열인데 기존의 배열의 형태와 유사함을 알 수 있습니다. 배열은 단순히 숫자를 나열한 형태이지만 가장 간단한 한 줄에 숫자를 나열한 배열도 하나의 행과 하나의 열을 가지는 행렬이라고 부를 수 있습니다. 만약 1, 2, 3, 4라는 배열이 있다면 우리는 이것을 다차원 배열로 쉽게 변환할 수 있습니다. # 1차원 A = [1,2,3,4] # 2차원 B = ([[1,2], [3,4]]) 개념적인 부분은 기본적인 수학이니 넘어가고 이제 계산에 대해 알아보겠습니다. 예를 들어 2 x 2 행렬 곱 연산을 한다고 할 때 같은 크기의 행렬을 연산하면 결과도.. 2023. 1. 21.
[머신러닝, 딥러닝] 신경망 (1) - 활성화 함수 (계단함수, 시그모이드, ReLU) 이전에 퍼셉트론에 대해 다뤄보았습니다. 퍼셉트론은 논리회로였습니다. 수학으로 따지면 덧셈, 뺄셈 같은 것이죠. 그러나 우리는 덧셈과 뺄셈을 활용하여 문제를 해결하고 때론 만들곤 합니다. 그렇다면 퍼셉트론이라는 논리회로도 더하기처럼 활용을 해야 합니다. 그리고 그 활용처가 바로 신경망입니다. 신경망이 퍼셉트론을 가지고 운영하는 것이라기 보단 퍼셉트론의 틀을 가지고 간다는 것이 알맞은 표현이겠네요. 신경망은 크게 3개의 층으로 나뉩니다. 입력층, 은닉층, 출력층이 있습니다. 앞선 퍼셉트론에서는 입력과 출력층 밖에 없었습니다. 가중치는 그저 입력과 출력 사이에 들어가는 하나의 요소였을 뿐이었지만, 신경망에서는 은닉층에서 가중치를 고려한 계산이 이루어집니다. 그러나 은닉층은 말그대로 '은닉'이기에 실제로 보이는.. 2023. 1. 4.