8월, 2026의 게시물 표시

벡터란? AI의 숫자 묶음에서 방향·크기·거리까지 이해하기

이미지
기초 시리즈에서는 임베딩을 “단어나 문장을 나타내는 숫자 묶음”이라고 설명했습니다. 이 표현은 시작점으로 충분하지만, AI의 계산을 더 깊이 이해하려면 숫자들이 왜 묶여 있고, 그 묶음의 방향과 길이, 서로의 거리가 무엇을 의미하는지 살펴봐야 합니다. 중급 시리즈의 첫 주제는 벡터(Vector) 입니다. 벡터는 임베딩뿐 아니라 신경망의 입력과 출력, 가중치 계산, Attention, 유사도 검색까지 이어지는 공통 언어입니다. 이번 글에서는 벡터를 단순한 숫자 목록에서 공간의 방향과 관계를 표현하는 대상으로 확장해 보겠습니다. 벡터란 무엇인가? 벡터는 순서가 있는 숫자들의 모음입니다. 예를 들어 [3, 4] 와 [4, 3] 은 같은 숫자를 포함하지만 순서가 다르므로 서로 다른 벡터입니다. 각 숫자를 벡터의 성분(Component) 이라고 부릅니다. 벡터를 이해하는 대표적인 두 관점이 있습니다. 목록 관점: 여러 특징이나 측정값을 순서대로 담은 숫자 배열입니다. 기하학 관점: 공간에서 특정 방향과 크기를 가진 화살표 또는 한 점의 위치입니다. 두 관점은 서로 다른 개념이 아닙니다. [3, 4] 는 첫 번째 축으로 3, 두 번째 축으로 4만큼 이동한다는 뜻으로 그릴 수 있습니다. 같은 숫자 묶음이 계산에서는 배열이고, 좌표 공간에서는 이동과 위치가 되는 것입니다. 스칼라와 벡터는 어떻게 다를까? 스칼라(Scalar) 는 하나의 숫자입니다. 온도 20도, 학습률 0.001처럼 크기 하나만 나타냅니다. 반면 벡터는 여러 성분을 함께 가지므로 하나의 대상을 여러 측면에서 표현할 수 있습니다. 예를 들어 학생 한 명을 [수학 점수, 영어 점수, 과학 점수] 순서로 표현하면 [80, 90, 70] 은 3차원 벡터가 됩니다. 여기서는 각 차원의 의미를 사람이 정했습니다. 임베딩에서는 각 차원의 의미가 이렇게 깔끔하게 이름 붙는 경우가 드물고, 학습 과정에서 여러 특징이 많은 차원에 분산됩니다. 벡터의 성분, 방향, 크기 벡터 v ...

프롬프트 엔지니어링이란? AI에게 원하는 답을 명확히 요청하는 방법

이미지
지난 글에서는 ChatGPT가 질문과 대화 문맥을 토큰으로 처리한 뒤, 다음 토큰을 반복해서 예측하며 답변을 만든다는 원리를 알아봤습니다. 그렇다면 같은 AI를 사용해도 어떤 사람은 원하는 결과를 빠르게 얻고, 어떤 사람은 계속 엉뚱한 답을 받는 이유는 무엇일까요? 차이는 모델의 성능뿐 아니라 무엇을 원하는지 얼마나 분명하게 전달했는가 에서 생길 수 있습니다. 프롬프트 엔지니어링은 AI에게 마법의 주문을 입력하는 기술이 아니라, 목표와 맥락, 자료, 제약 조건, 출력 형식을 설계하고 결과를 반복해서 개선하는 방법입니다. 프롬프트란 무엇일까? 프롬프트(Prompt) 는 AI 모델에 전달하는 입력입니다. 간단한 질문 한 줄일 수도 있고, 참고 문서와 작업 규칙, 결과 형식이 포함된 긴 요청문일 수도 있습니다. 대화형 AI에서는 이전 메시지와 현재 질문도 모델이 답을 만드는 문맥에 영향을 줍니다. 프롬프트 엔지니어링(Prompt Engineering) 은 원하는 결과를 얻기 위해 이 입력을 구조화하고 시험하며 개선하는 과정입니다. 한 번 잘 써서 영원히 사용하는 문장이라기보다, 실제 결과를 보고 부족한 조건을 보완하는 설계 작업에 가깝습니다. 왜 프롬프트가 결과를 바꿀까? 언어 모델은 현재 문맥을 바탕으로 이어질 토큰의 가능성을 계산합니다. “글을 써 줘”처럼 범위가 넓은 요청에는 주제, 독자, 길이, 말투, 포함할 내용이 정해져 있지 않습니다. 모델은 빈칸을 추정해서 채워야 하므로 사용자가 기대한 방향과 달라질 가능성이 커집니다. 반대로 “AI 입문자를 대상으로 임베딩을 설명하는 1,500자 글을 작성하고, 비유 한 개와 주의점 세 개를 포함해 H2 제목으로 구분해 줘”라고 요청하면 가능한 결과의 범위가 좁아집니다. 모델이 무엇을 선택해야 하는지 판단할 근거가 늘어나는 것입니다. 공식 OpenAI 모델 가이드 도 목표, 관련 맥락, 제약 조건, 필요한 근거, 성공 기준과 출력 형식을 명확히 전달하는 방식을 권장합니다. 다만 지시를 같은 뜻으로 ...

ChatGPT는 어떻게 답변할까? 질문이 답변으로 만들어지는 원리

이미지
지난 글에서는 토큰 ID가 임베딩 벡터로 바뀌고, 비슷한 맥락에서 쓰이는 표현들이 숫자 공간에서 관계를 형성하는 원리를 알아봤습니다. 그렇다면 사용자가 질문을 입력한 순간부터 화면에 답변이 나타날 때까지는 어떤 일이 일어날까요? ChatGPT의 답변은 저장된 문장 하나를 그대로 꺼내 보여주는 방식이 아닙니다. 입력된 질문과 대화 문맥을 처리한 뒤, 이어질 가능성이 있는 토큰을 예측하고 선택하는 과정을 반복해 답변을 만듭니다. 여기에 지시를 따르도록 학습된 방식, 안전 규칙, 그리고 필요할 때 사용할 수 있는 도구가 함께 작동할 수 있습니다. ChatGPT와 언어 모델은 같은 말일까? 둘은 밀접하지만 완전히 같은 개념은 아닙니다. 언어 모델 은 문맥을 바탕으로 다음 토큰의 가능성을 계산하는 핵심 모델입니다. ChatGPT 는 사용자가 이 모델과 대화할 수 있도록 입력과 출력, 대화 기록, 지시 체계, 안전 기능, 도구 연결 등을 구성한 서비스입니다. 따라서 “ChatGPT가 답변한다”는 말에는 기본적인 언어 생성뿐 아니라 사용자가 보낸 메시지를 정리하고, 현재 대화의 관련 내용을 전달하며, 결과를 화면에 보여주는 과정까지 포함됩니다. 기능과 설정에 따라 웹 검색, 파일 분석, 이미지 이해 같은 도구가 연결될 수도 있지만 모든 답변이 항상 외부 검색을 거치는 것은 아닙니다. ChatGPT 답변 생성의 전체 흐름 핵심 흐름은 다음 여섯 단계로 정리할 수 있습니다. 실제 시스템 내부에는 더 많은 처리와 검사가 존재할 수 있지만, 답변 생성 원리를 이해하기에는 이 구조가 유용합니다. 질문 입력: 사용자의 메시지와 필요한 대화 문맥이 모델 입력으로 준비됩니다. 토큰화: 텍스트를 모델이 처리할 수 있는 토큰으로 나누고 각각을 숫자 ID로 바꿉니다. 임베딩과 문맥 처리: ID를 벡터로 변환하고 Transformer가 토큰 사이의 관계를 계산합니다. 다음 토큰 예측: 현재 문맥 뒤에 올 수 있는 토큰마다 점수와 확률 분포를 만듭...

임베딩이란? AI가 단어의 의미를 숫자 벡터로 표현하는 방법

이미지
지난 글에서는 AI가 문장을 토큰(Token) 이라는 작은 조각으로 나누고, 각 토큰을 고유한 숫자 ID로 바꾼다는 것을 알아봤습니다. 하지만 “고양이”가 314번이고 “강아지”가 927번이라고 해서 AI가 두 단어의 관계를 이해할 수 있는 것은 아닙니다. 숫자 ID는 사전에서 토큰을 찾기 위한 주소일 뿐, 숫자의 크기나 간격에는 의미가 없기 때문입니다. 언어 모델이 단어 사이의 관계를 계산하려면 ID를 더 풍부한 숫자 표현으로 바꿔야 합니다. 이때 사용하는 것이 임베딩(Embedding) 입니다. 이번 글에서는 임베딩이 무엇이며 어떻게 학습되고, Transformer와 LLM에서 어떤 역할을 하는지 차근차근 살펴보겠습니다. 임베딩이란? 임베딩은 단어·토큰·문장 같은 대상을 여러 개의 실수로 이루어진 벡터(Vector) 로 표현하는 방법입니다. 예를 들어 “고양이”라는 토큰이 [0.2, -0.7, 0.4, …] 처럼 수백 개 이상의 숫자로 표현될 수 있습니다. 여기에 나온 숫자는 이해를 돕기 위한 예시이며, 실제 값과 벡터 길이는 모델마다 다릅니다. Google의 머신러닝 임베딩 학습 자료 는 임베딩을 희소한 데이터를 더 낮은 차원의 조밀한 벡터로 표현하여 항목 사이의 의미 관계를 담는 방법으로 설명합니다. 핵심은 하나의 번호 대신 여러 숫자의 조합으로 대상을 표현한다는 점입니다. 토큰 ID만으로는 왜 부족할까? 토큰 ID는 단지 어휘 사전의 항목을 구분하는 번호입니다. “고양이”의 ID가 314이고 “강아지”의 ID가 927이라고 가정해도, 927에서 314를 뺀 값은 두 동물의 의미 차이를 나타내지 않습니다. “자동차”의 ID가 315라고 해서 고양이와 자동차가 고양이와 강아지보다 비슷한 것도 아닙니다. 원-핫 인코딩처럼 한 위치만 1이고 나머지는 모두 0인 벡터를 사용할 수도 있지만, 어휘가 커질수록 벡터가 매우 길고 대부분이 0인 희소한 표현이 됩니다. 서로 다른 토큰의 원-핫 벡터만 보아서는 어떤 단어가 비슷하게 쓰이는지도 알기 어렵...

토큰이란? AI가 문장을 읽고 만드는 기본 단위

이미지
지난 글에서는 LLM이 문맥에 이어질 내용을 확률적으로 예측하고, 선택한 결과를 다시 문맥에 넣어 긴 답변을 만든다는 것을 알아봤습니다. 이때 모델이 한 번에 예측하는 기본 단위가 바로 토큰(Token) 입니다. 토큰은 AI가 글을 읽고 만드는 작은 조각입니다. 하나의 단어일 수도 있지만 단어의 일부, 문장 부호, 공백과 결합된 문자열이 될 수도 있습니다. 따라서 토큰을 단순히 ‘단어’라고만 생각하면 실제 동작을 이해하기 어렵습니다. 왜 문장을 토큰으로 나눌까? 신경망은 글자를 그대로 이해하지 않고 숫자로 계산합니다. 먼저 토크나이저(Tokenizer) 가 입력 문장을 정해진 규칙에 따라 토큰으로 나누고, 각 토큰을 어휘 사전에 등록된 숫자 ID로 바꿉니다. 예를 들어 “오늘 날씨가 좋다”라는 문장이 여러 토큰으로 분리되면 각 조각은 고유한 토큰 ID에 대응합니다. 모델은 이 ID를 입력받은 뒤 다음 글에서 살펴볼 임베딩 벡터로 변환해 계산합니다. 토큰은 단어와 어떻게 다를까? 사람은 보통 띄어쓰기 단위로 단어를 구분하지만, 토크나이저는 모델이 학습한 어휘와 분할 알고리즘을 기준으로 문장을 나눕니다. 자주 등장한 짧은 단어는 하나의 토큰이 될 수 있습니다. 긴 단어나 드문 단어는 여러 부분 단어로 나뉠 수 있습니다. 쉼표와 마침표 같은 문장 부호가 별도 토큰이 될 수 있습니다. 공백이 다음 단어와 결합된 형태로 저장될 수도 있습니다. Google의 대규모 언어 모델 입문 자료 에서는 토큰이 단어, 부분 단어 또는 한 글자일 수 있으며, 현대 언어 모델은 주로 부분 단어 단위의 토큰화를 활용한다고 설명합니다. 토큰화 과정 살펴보기 원문 입력: 사용자가 자연어 문장을 입력합니다. 정규화와 분할: 토크나이저가 규칙에 따라 글을 처리하고 여러 토큰으로 나눕니다. ID 변환: 각 토큰을 어휘 사전의 숫자 ID에 연결합니다. 모델 입력: ID가 임베딩으로 변환되어 신경망 계산에 사용됩니다. ...

LLM이란? 대규모 언어 모델이 문장을 배우고 만드는 원리

이미지
지난 글에서는 Transformer 가 Self-Attention으로 문장 안의 여러 토큰 관계를 살펴보고 문맥을 처리하는 구조라는 것을 알아봤습니다. 이 구조를 많은 데이터와 큰 규모의 신경망으로 학습하면 오늘날 자주 접하는 LLM 으로 이어집니다. LLM(Large Language Model, 대규모 언어 모델) 은 많은 텍스트에서 언어의 패턴을 학습하고, 주어진 문맥에 이어질 토큰의 가능성을 예측하는 모델입니다. 질문에 답하거나 글을 요약하고 번역할 수 있지만, 사람처럼 생각하거나 모든 사실을 정확히 기억하는 존재는 아닙니다. 먼저 언어 모델이란 무엇일까? 언어 모델은 어떤 문맥 뒤에 특정 단어나 토큰이 나타날 가능성을 계산합니다. “오늘 하늘이 매우 ___”라는 문장이 주어지면 ‘맑다’, ‘흐리다’, ‘어둡다’ 같은 후보에 서로 다른 확률을 부여하는 식입니다. 여기서 토큰(Token) 은 모델이 글을 처리하는 기본 단위입니다. 하나의 단어일 수도 있고, 단어의 일부나 문장 부호일 수도 있습니다. Google의 대규모 언어 모델 입문 자료 도 언어 모델을 긴 토큰 순서 안에서 토큰 또는 토큰 순서의 확률을 추정하는 모델로 설명합니다. LLM에서 ‘대규모’는 무엇을 뜻할까? ‘대규모’라는 말은 단순히 프로그램 파일이 크다는 뜻만은 아닙니다. 일반적으로 다음 요소들이 함께 커진 언어 모델을 가리킵니다. 학습 데이터: 다양한 주제와 표현이 담긴 많은 텍스트를 사용합니다. 파라미터: 학습으로 조정되는 수많은 가중치에 언어 패턴이 분산되어 반영됩니다. 계산량: 학습과 실행에 상당한 연산 자원이 필요할 수 있습니다. 문맥 처리: 여러 토큰 사이의 관계를 이용해 다음 내용을 예측합니다. 다만 크기만 키운다고 항상 좋은 모델이 되는 것은 아닙니다. 데이터 품질, 학습 방법, 모델 구조, 평가와 안전 조정도 결과에 큰 영향을 줍니다. LLM은 어떻게 학습할까? 대표적인 생성형 언어 모델의 기본 학습 목표는 앞의 ...

Transformer란? Attention으로 문맥을 한꺼번에 읽는 AI 구조

이미지
지난 글에서는 Attention(어텐션) 이 현재 필요한 정보와 입력 전체를 비교해 중요한 부분에 더 높은 가중치를 주는 원리를 살펴봤습니다. 그렇다면 이 Attention을 보조 기능이 아니라 모델의 중심 구조로 사용하면 어떻게 될까요? Transformer(트랜스포머) 는 Self-Attention을 중심으로 문맥을 처리하는 신경망 구조입니다. 단어를 반드시 처음부터 하나씩 읽으며 기억을 넘기는 대신, 입력 안의 여러 단어 관계를 직접 비교합니다. 현재 널리 쓰이는 언어 모델의 기반을 이해하려면 먼저 알아야 할 구조입니다. Transformer는 왜 등장했을까? RNN과 LSTM은 순서가 있는 데이터를 처리할 때 이전 단계의 상태를 다음 단계로 전달합니다. 하지만 이런 순차 구조는 문장이 길어질수록 먼 정보를 연결하기 어렵고, 앞 단계의 계산이 끝나야 다음 단계를 처리할 수 있다는 제약이 있습니다. 2017년 발표된 Attention Is All You Need 논문 은 순환 구조나 합성곱 없이 Attention을 중심으로 만든 Transformer를 제안했습니다. 핵심은 입력의 각 위치가 다른 모든 위치를 직접 참고하게 만드는 것입니다. Transformer의 핵심은 Self-Attention Self-Attention은 문장 안의 각 단어가 같은 문장의 다른 단어를 살펴보고, 자신을 이해하는 데 얼마나 중요한지 계산하는 방식입니다. 예를 들어 “철수가 영희에게 책을 주었고, 그녀는 웃었다”라는 문장에서 ‘그녀’의 의미를 파악하려면 ‘영희’와의 관계가 중요합니다. Self-Attention은 두 단어가 멀리 떨어져 있어도 직접 관련도를 계산할 수 있습니다. 지난 글에서 알아본 Query·Key·Value도 여기서 사용됩니다. 각 입력 표현으로부터 Query, Key, Value를 만들고, Query와 Key의 관련도에 따라 Value를 섞어 문맥이 반영된 새로운 표현을 만듭니다. 입력에는 단어 의미와 위치가 함께 들어간다 Tra...

Attention이란? AI가 필요한 정보에 집중하는 원리

이미지
지난 글에서는 LSTM이 셀 상태와 게이트를 이용해 필요한 정보를 오래 유지하는 방법을 알아봤습니다. 하지만 문장이 길어질수록 모든 정보를 하나의 기억에 압축해 전달하는 일은 여전히 어렵습니다. Attention(어텐션) 은 현재 처리하는 대상과 관련이 큰 입력을 직접 찾아 더 많이 참고하는 방식입니다. 쉽게 말하면 모든 내용을 똑같이 보는 대신, 지금 필요한 부분에 집중하는 것입니다. 왜 Attention이 필요할까? 긴 문장을 번역할 때 마지막까지 읽은 하나의 상태에 모든 내용을 담으려 하면 앞부분의 세부 정보가 약해질 수 있습니다. Attention은 출력할 단어마다 입력 전체를 다시 살펴보고 관련된 위치에 서로 다른 중요도를 부여합니다. 예를 들어 “고양이가 의자 위에서 잠을 잔다”를 번역하며 ‘잔다’에 해당하는 표현을 만들 때, 모델은 ‘고양이’와 ‘잠을 잔다’에 더 높은 비중을 둘 수 있습니다. 이 중요도를 어텐션 가중치 라고 합니다. Attention의 세 가지 요소 Attention은 보통 Query, Key, Value라는 세 요소로 설명합니다. Query(쿼리): 지금 찾고 싶은 정보, 즉 질문입니다. Key(키): 각 입력이 어떤 정보를 담는지 비교하기 위한 표식입니다. Value(값): 실제로 가져와 조합할 내용입니다. 도서관에 비유하면 Query는 찾는 주제, Key는 책의 분류 정보, Value는 책 안의 실제 내용입니다. 찾는 주제와 분류 정보가 잘 맞는 책일수록 더 자세히 참고합니다. Attention은 어떻게 계산될까? 현재 Query를 모든 Key와 비교해 관련도 점수를 구합니다. 점수를 정규화해 합이 1인 가중치로 바꿉니다. 각 Value에 해당 가중치를 곱합니다. 가중치가 적용된 Value들을 더해 문맥 벡터를 만듭니다. 관련도가 높은 입력은 결과에 크게 반영되고, 낮은 입력은 적게 반영됩니다. 모델은 정답을 잘 예측하도록 학습하면서 Query·Key·Value를 만드는 가중치를 조정합니다. ...

LSTM이란? RNN의 장기 기억 문제를 해결하는 세 가지 게이트

이미지
지난 글에서는 RNN이 은닉 상태를 다음 시점으로 전달하며 문장과 시계열처럼 순서가 있는 데이터를 처리한다는 것을 알아봤습니다. 하지만 기본 RNN은 단계가 길어질수록 오래전 정보가 희미해지는 장기 의존성 문제를 겪을 수 있습니다. 이 문제를 완화하기 위해 고안된 대표적인 구조가 LSTM(Long Short-Term Memory, 장단기 메모리) 입니다. LSTM은 무엇을 잊고, 무엇을 새로 기억하며, 어떤 정보를 밖으로 내보낼지 조절합니다. LSTM은 선택적으로 기억하는 RNN입니다 기본 RNN은 현재 입력과 이전 은닉 상태를 하나의 계산으로 갱신합니다. LSTM은 여기에 셀 상태(Cell State) 와 여러 게이트(Gate) 를 추가합니다. 셀 상태는 긴 시간 동안 중요한 정보를 운반하는 기억 통로입니다. 게이트는 0에서 1 사이의 값으로 정보가 얼마나 통과할지 조절하는 문과 비슷합니다. 0에 가까우면 대부분 막고, 1에 가까우면 대부분 통과시킵니다. LSTM 셀의 전체 흐름 LSTM은 현재 입력과 이전 은닉 상태를 함께 살펴본 뒤 세 가지 질문을 처리합니다. 기존 기억 중 무엇을 잊을까? 현재 정보 중 무엇을 새로 기억할까? 갱신된 기억 중 무엇을 출력할까? 각 질문을 담당하는 것이 망각 게이트, 입력 게이트, 출력 게이트입니다. 이 계산을 거쳐 새로운 셀 상태와 은닉 상태가 다음 시점으로 전달됩니다. 1. 망각 게이트: 불필요한 기억 지우기 망각 게이트(Forget Gate) 는 이전 셀 상태에서 유지할 정보와 줄일 정보를 결정합니다. 문장의 주제가 바뀌거나 오래된 정보가 더 이상 필요하지 않다면 해당 기억의 영향력을 낮출 수 있습니다. 망각은 기억 실패가 아니라 필요한 정보에 집중하기 위한 선택입니다. 모든 내용을 계속 보관하면 오히려 현재 판단에 방해가 될 수 있습니다. 2. 입력 게이트: 새로운 정보 기록하기 입력 게이트(Input Gate) 는 현재 입력에서 어떤 정보를 셀 상태에 새로 추가할지 정합니다. 현재 입력...

RNN이란? 순서와 기억을 처리하는 순환 신경망의 원리

이미지
지난 글에서는 CNN이 이미지에서 특징을 찾고 분류 결과를 만드는 전체 구조를 살펴봤습니다. CNN이 한 장의 이미지 안에 있는 공간적 특징을 잘 다룬다면, 단어가 이어지는 문장이나 시간에 따라 변하는 데이터는 어떻게 처리할까요? 이처럼 순서 가 중요한 데이터를 다루기 위해 등장한 대표적인 신경망이 RNN(Recurrent Neural Network, 순환 신경망) 입니다. 이번 글에서는 RNN이 이전 정보를 어떻게 다음 단계로 전달하는지, 어디에 활용할 수 있는지, 그리고 어떤 한계가 있는지 쉽게 알아보겠습니다. 순서가 중요한 데이터란? 문장은 같은 단어를 사용하더라도 순서에 따라 뜻이 달라질 수 있습니다. “고양이가 강아지를 쫓는다”와 “강아지가 고양이를 쫓는다”는 등장하는 단어는 비슷하지만 의미는 다릅니다. 주가, 기온, 심박수 같은 시계열 데이터도 이전 값과 현재 값의 흐름이 중요합니다. 이런 데이터를 각 항목이 서로 관계없는 것처럼 따로 처리하면 전체 맥락을 놓치기 쉽습니다. RNN은 데이터를 한 단계씩 순서대로 읽으면서 앞에서 얻은 정보를 다음 단계에 함께 전달합니다. RNN의 핵심은 순환하는 기억입니다 일반적인 신경망은 입력을 받아 출력을 만든 뒤 그 계산을 끝냅니다. 반면 RNN은 현재 입력을 처리한 결과의 일부를 다음 입력을 계산할 때 다시 사용합니다. 구조 안에서 정보가 순환한다고 해서 순환 신경망이라는 이름이 붙었습니다. 이때 이전 단계의 정보를 요약해 담는 값을 은닉 상태(Hidden State) 라고 합니다. 은닉 상태는 RNN의 짧은 메모장과 비슷합니다. 현재 입력: 지금 읽고 있는 단어나 현재 시점의 값 이전 은닉 상태: 앞부분에서 얻은 정보를 요약한 값 새 은닉 상태: 현재 입력과 이전 정보를 함께 반영한 결과 출력: 현재 단계에서 필요한 예측값 시간축으로 펼쳐 보면 더 쉽게 보입니다 RNN 그림에서는 하나의 신경망에 화살표가 되돌아오는 모습으로 표현되지만, ...

CNN 전체 구조란? 이미지 입력부터 분류 결과까지 한 번에 이해하기

이미지
지난 글에서는 특징맵의 크기를 줄이고 중요한 반응을 남기는 풀링(Pooling) 을 알아보았습니다. 지금까지 필터, 합성곱, 특징맵, 풀링을 하나씩 살펴봤다면 이제 이 부품들이 CNN 안에서 어떤 순서로 연결되는지 볼 차례입니다. CNN(Convolutional Neural Network, 합성곱 신경망) 은 이미지에서 특징을 추출하고, 그 특징을 바탕으로 무엇이 보이는지 판단하는 신경망입니다. 이번 글에서는 이미지 한 장이 CNN에 들어와 분류 결과가 되기까지의 전체 흐름을 초보자 눈높이에서 정리하겠습니다. CNN은 크게 두 부분으로 나뉩니다 CNN의 구조는 크게 특징 추출 부분 과 분류 부분 으로 나눌 수 있습니다. 특징 추출: 합성곱, 활성화 함수, 풀링 등을 거치며 선·모서리·질감·형태를 찾습니다. 분류: 추출한 특징을 종합해 고양이, 자동차, 사람처럼 최종 범주를 판단합니다. 쉽게 비유하면 특징 추출 부분은 사진에서 단서를 찾는 조사팀이고, 분류 부분은 모인 단서를 보고 결론을 내리는 판정팀입니다. CNN은 어떤 순서로 동작할까? 기본적인 이미지 분류 CNN은 다음과 같은 흐름으로 동작합니다. 입력 이미지 합성곱 층 활성화 함수 풀링 층 합성곱·활성화·풀링 반복 펼치기 또는 전역 평균 풀링 출력층에서 분류 결과 계산 1. 입력 이미지 CNN이 받는 이미지는 컴퓨터 안에서 숫자 배열로 표현됩니다. 흑백 이미지는 보통 밝기를 나타내는 하나의 채널을 사용하고, 컬러 이미지는 빨강·초록·파랑을 나타내는 여러 채널을 사용합니다. CNN은 그림을 사람처럼 바라보는 대신 이 숫자들을 계산합니다. 2. 합성곱 층에서 특징 찾기 합성곱 층(Convolutional Layer) 에서는 여러 필터가 이미지 위를 이동하며 특징을 찾습니다. 각 필터가 위치마다 보인 반응을 모으면 특징맵이 만들어집니다. 초기 층은 선, 방향, 모서리 같은 단순한 특징에 반응하는 경...

풀링(Pooling)이란? CNN이 특징맵을 작게 줄이는 방법

이미지
지난 글에서는 합성곱 연산으로 만든 특징맵(Feature Map) 이 이미지의 어느 위치에서 특정 특징이 강하게 나타났는지를 기록한다고 설명했습니다. 그런데 CNN은 이 특징맵을 그대로 다음 층에 전달하기도 하지만, 중간에 크기를 줄여 핵심 정보만 남기기도 합니다. 이때 사용하는 대표적인 연산이 풀링(Pooling) 입니다. 이번 글에서는 풀링이 특징맵을 어떻게 줄이는지, 최대 풀링과 평균 풀링은 무엇이 다른지, 그리고 풀링을 사용할 때 무엇을 조심해야 하는지 쉽게 알아보겠습니다. 풀링(Pooling)이란? 풀링은 특징맵의 작은 영역을 하나의 대표값으로 바꾸는 연산입니다. 예를 들어 4×4 크기의 특징맵을 2×2 영역씩 나누고 각 영역에서 하나의 값만 뽑으면, 결과는 2×2 크기로 줄어듭니다. 사진을 축소해 작은 미리보기를 만드는 과정과 비슷합니다. 모든 픽셀을 그대로 보존하지는 않지만, 전체적인 윤곽과 중요한 패턴은 알아볼 수 있도록 남기는 것입니다. CNN에서는 원본 이미지보다 합성곱을 거쳐 만들어진 특징맵에 풀링을 적용하는 경우가 많습니다. 풀링은 어떻게 작동할까? 풀링에도 특징맵을 훑어보는 작은 창이 필요합니다. 흔히 2×2 크기의 창을 사용하고, 창을 두 칸씩 이동하는 스트라이드(Stride) 2 를 적용합니다. 특징맵에서 2×2 영역을 선택합니다. 그 안의 값들을 정해진 규칙으로 하나의 값으로 바꿉니다. 창을 다음 위치로 이동해 같은 계산을 반복합니다. 각 영역에서 얻은 대표값을 모아 더 작은 특징맵을 만듭니다. 2×2 창과 스트라이드 2를 사용하면 가로와 세로 길이가 대체로 절반이 됩니다. 예를 들어 28×28 특징맵은 14×14로 줄어들 수 있습니다. 다만 입력 크기, 창 크기, 스트라이드와 패딩 설정에 따라 정확한 출력 크기는 달라집니다. 최대 풀링과 평균 풀링의 차이 최대 풀링(Max Pooling) 최대 풀링은 작은 영역 안에서 가장 큰 값 을 대표값으로 선택합니다. ...

특징맵(Feature Map)이란? CNN은 이미지의 특징을 어떻게 기록할까?

이미지
지난 글에서는 필터가 이미지 위를 조금씩 이동하며 중요한 특징을 찾는 합성곱(Convolution) 에 대해 알아보았습니다. 그렇다면 필터가 귀, 눈, 모서리 같은 특징을 찾은 뒤에는 무엇이 남을까요? 필터가 각 위치에서 계산한 결과는 사라지지 않습니다. 결과들이 차례대로 모여 새로운 지도를 만듭니다. 이 지도가 바로 특징맵(Feature Map) 입니다. 이번 글에서는 특징맵이 무엇인지, 왜 원본 이미지와 다르게 보이는지 누구나 이해할 수 있도록 쉽게 알아보겠습니다. 특징맵은 필터가 찾은 결과를 모은 지도입니다 필터는 이미지의 한 부분을 살펴볼 때마다 자신이 찾으려는 특징이 얼마나 강하게 나타나는지 계산합니다. 예를 들어 세로선을 찾는 필터라면 세로선이 뚜렷한 위치에서는 큰 반응을 보이고, 세로선이 거의 없는 위치에서는 작은 반응을 보입니다. 필터가 이미지 전체를 훑으며 만든 반응을 위치에 맞게 모으면 하나의 격자 모양 결과가 만들어집니다. 이것이 특징맵입니다. 필터 는 특징을 찾는 도구이고, 특징맵 은 그 도구가 어디에서 강하게 반응했는지 기록한 지도입니다. 원본 사진과 왜 다르게 보일까? 특징맵은 원본 사진을 복사한 이미지가 아닙니다. 필터가 관심을 가진 특징만 강조한 결과입니다. 고양이 사진에 모서리를 찾는 필터를 적용하면 털의 색이나 배경보다 귀의 경계, 눈의 윤곽, 수염처럼 선이 뚜렷한 부분이 더 강하게 나타날 수 있습니다. 그래서 특징맵을 눈으로 보면 원본보다 단순하거나 낯설게 느껴집니다. 중요한 것은 사진이 예쁘게 보이는지가 아니라, AI가 필요한 특징을 얼마나 잘 드러내는가 입니다. 강한 반응과 약한 반응은 무엇을 뜻할까? 특징맵의 각 칸에는 필터가 해당 위치에서 계산한 값이 들어 있습니다. 큰 값 : 필터가 찾으려는 특징과 잘 맞는 위치 작은 값 : 해당 특징이 약하거나 거의 없는 위치 특징맵을 그림으로 표현할 때는 큰 값을 밝게, 작은 값을 어둡게 표시하는 경우가 많습니다. 다만 색상과 ...

합성곱(Convolution)이란?

이미지
  합성곱(Convolution)이란? 필터는 이미지를 어떻게 훑어볼까? 지난 글에서는 CNN의 필터(Filter)가 이미지 속에서 중요한 특징을 찾아내는 작은 탐지기라는 것을 알아보았습니다. 그렇다면 이런 궁금증이 생깁니다. "필터는 이미지를 어떻게 검사할까요?" 사진 전체를 한 번에 보는 것일까요? 아니면 조금씩 움직이며 확인하는 것일까요? 그 답이 바로 합성곱(Convolution) 입니다. 이번 글에서는 CNN의 핵심 계산 방식인 합성곱을 최대한 쉽게 알아보겠습니다. 합성곱은 필터를 움직이는 방법입니다 필터는 스스로 이미지를 볼 수 없습니다. 필터가 이미지를 분석하려면 사진 위를 조금씩 이동하며 모든 부분을 살펴봐야 합니다. 이처럼 필터를 한 칸씩 이동시키며 이미지를 검사하는 과정을 합성곱(Convolution) 이라고 합니다. 즉, 필터는 무엇을 찾는 도구 이고, 합성곱은 그 도구를 사용하는 방법 입니다. 창문을 하나씩 옮겨 보는 것과 같습니다 큰 벽화를 감상한다고 생각해 보겠습니다. 벽 전체를 한눈에 보기보다, 작은 창문 하나를 들고 조금씩 위치를 바꿔가며 보면 세부적인 모양을 더 쉽게 발견할 수 있습니다. 합성곱도 같은 원리입니다. 필터는 작은 창처럼 이미지 위를 한 칸씩 이동하며 모든 영역을 차례대로 확인합니다. 한 번만 보는 것이 아닙니다 필터는 한 곳만 검사하고 끝나지 않습니다. 왼쪽 위에서 시작해 오른쪽으로 이동하고, 한 줄이 끝나면 아래로 내려가 다시 같은 작업을 반복합니다. 덕분에 귀가 왼쪽에 있든, 오른쪽에 있든, AI는 모두 찾아낼 수 있습니다. 왜 조금씩 이동할까? 만약 필터가 사진 전체를 한 번에 본다면, 작은 특징은 놓칠 가능성이 큽니다. 하지만 조금씩 이동하면 작은 귀, 작은 눈, 작은 모서리처럼 세밀한 특징까지 확인할 수 있습니다. 사람도 책을 읽을 때 모든 글자를 한 번에 보는 것이 아니라, 한 줄씩 읽는 것과 비슷합니다. 같은 필터를 계속 사용합니다 합성곱에서 중요한 점은 필터를 계속 새로 만드는 것이 ...

필터(Filter)란?

이미지
필터(Filter)란? CNN은 이미지의 특징을 어떻게 찾아낼까? 지난 글에서는 CNN이 사진 전체를 한 번에 보는 것이 아니라, 작은 특징들을 하나씩 찾아 이미지를 이해한다는 것을 알아보았습니다. 그렇다면 새로운 궁금증이 생깁니다. "AI는 귀나 눈 같은 특징을 어떻게 찾아낼까요?" 사람은 눈으로 사진을 보며 특징을 구분합니다. 하지만 AI는 사람처럼 눈이 있는 것이 아닙니다. 대신 필터(Filter) 라는 특별한 도구를 이용해 이미지 속 특징을 찾아냅니다. 이번 글에서는 CNN의 핵심인 필터(Filter) 가 무엇인지 쉽게 알아보겠습니다. 필터는 돋보기와 비슷합니다 큰 그림 한 장을 자세히 살펴본다고 생각해 보겠습니다. 처음부터 그림 전체를 한눈에 보기보다는, 돋보기를 이용해 중요한 부분을 하나씩 확대해서 보면 훨씬 자세하게 관찰할 수 있습니다. CNN의 필터도 이와 비슷한 역할을 합니다. 사진 전체를 한 번에 이해하려는 것이 아니라, 작은 부분을 집중해서 살펴보며 중요한 특징을 찾아냅니다. 필터는 '특징 탐지기'입니다 필터를 한마디로 표현하면 이미지 속 특징을 찾아내는 작은 탐지기 입니다. 예를 들어 고양이 사진이 있다면 필터는 사진 속에서 귀의 모양 눈의 위치 코의 형태 수염의 방향 처럼 중요한 특징을 찾아냅니다. 즉, 사진 자체를 외우는 것이 아니라, 사진 속에서 중요한 정보를 발견하는 역할을 합니다. 하나의 필터는 하나의 특징을 잘 찾습니다 필터는 모든 특징을 한꺼번에 찾지 않습니다. 각 필터는 자신이 잘 찾는 특징이 하나씩 있습니다. 예를 들어 어떤 필터는 세로선 을 잘 찾고, 어떤 필터는 가로선 을 잘 찾고, 어떤 필터는 모서리 를 잘 찾고, 어떤 필터는 둥근 모양 을 잘 찾습니다. 사람으로 비유하면, 한 명은 귀 전문가, 한 명은 눈 전문가, 한 명은 코 전문가인 것과 같습니다. 각자가 자신이 잘하는 부분을 찾아낸 뒤, 모든 정보를 함께 활용합니다. 여러 개의 필터가 함께 일합니다 사람도 얼굴을 볼 때 눈만 보고...

CNN (합성곱 신경망) 이란?

이미지
  CNN(합성곱 신경망)이란? AI는 이미지를 어떻게 이해할까? 지금까지 우리는 AI가 어떻게 학습하는지 알아보았습니다. 가중치 편향 활성화 함수 손실 함수 역전파 경사하강법 덕분에 AI가 스스로 배우는 원리는 이해할 수 있었습니다. 하지만 새로운 궁금증이 생깁니다. "AI는 사진을 어떻게 이해할까요?" 사람은 사진을 보면 한눈에 고양이인지 강아지인지 알아봅니다. 하지만 AI는 사람처럼 사진을 '보는' 것이 아닙니다. AI는 사진 속의 작은 특징들을 하나씩 찾아가며 이미지를 이해합니다. 이 역할을 하는 대표적인 딥러닝 모델이 바로 CNN(Convolutional Neural Network, 합성곱 신경망) 입니다. 사람은 얼굴을 한 번에 보지 않습니다 친구를 만났다고 생각해 보겠습니다. 우리는 친구의 얼굴 전체를 한 번에 기억하는 것 같지만, 실제로는 여러 특징을 함께 확인합니다. 눈 코 입 머리카락 안경 이러한 특징들이 모여 "아, ○○구나." 라고 판단하게 됩니다. AI도 비슷합니다. 처음부터 사진 전체를 이해하는 것이 아니라 작은 특징부터 찾아갑니다. 기존 신경망으로는 이미지가 너무 복잡했습니다 예를 들어 100×100 크기의 사진 한 장이 있다고 생각해 보겠습니다. 이미지는 100 × 100 = 10,000개의 픽셀 로 이루어져 있습니다. 일반적인 신경망은 이 픽셀을 모두 한 번에 입력받아야 합니다. 그러면 엄청난 수의 계산이 필요하게 됩니다. 게다가 사진 속에서 어디가 중요한 부분인지도 스스로 찾기 어렵습니다. 그래서 등장한 것이 CNN입니다. CNN은 작은 부분부터 봅니다 CNN은 사진 전체를 한 번에 보지 않습니다. 대신 작은 창(Window)으로 사진을 조금씩 살펴봅니다. 예를 들어 고양이 사진이라면 먼저 귀를 보고, 다음에는 눈을 보고, 그다음에는 코를 봅니다. 그리고 이 작은 정보들을 모두 합쳐 "고양이" 라고 판단합니다. 돋보기로 그림을 살펴보는 것과 같습니다 큰 그림을 ...