[AI 공부하기-03] 선형 레이어 구현하기
지난 글에서 AI는 행렬의 연산이 주로 이루어지기 때문에 먼저 Matrix 객체를 만들었습니다. 이 글에서는 이를 활용하여 선형 레이어를 만들고 테스트해 보겠습니다. 👍 📈 선형 레이어 💡 레이어(Layer) 신경망에서 입력받아 어떤 연산을 하고, 그 결과를 다음 단계로 넘기는 구성 요소가 되고 이러한 레이어들이 여러 개로 구성되어 하나의 모델이 된다. (ex: MLP, LeNet-5, ResNet-50, GPT…) 선형 레이어는 입력된 숫자들을 가중치와 편향으로 계산해 새로운 숫자들로 바꾸는 레이어 입니다. $$\underset{\substack{\uparrow\\\text{출력}}}{y}=\underset{\substack{\uparrow\\\text{입력}}}{X}\underset{\substack{\uparrow\\\text{가중치}}}{W}^T+\underset{\substack{\uparrow\\\text{편향}}}{b}$$ ⚠️ 가중치는 입력과 출력 특성의 수를 어떤 순서로 받느냐에 따라 전치 연산이 필요할 수도 있고 아닐 수 있습니다!...
[AI 공부하기-02] 행렬의 연산 및 객체 생성
지난 글에서 선형 모델을 먼저 구현해 보겠다는 목표를 세웠었는데, 그 전에 해야할 일이 바로 행렬 연산에 관한 객체를 먼저 만드는 것입니다. 🖩 행렬의 연산 덧셈 행렬의 덧셈은 기본적으로 두 행렬의 행과 열이 같아야 가능합니다. $$\begin{align*}\begin{pmatrix}1&2\\3&4\end{pmatrix}+\begin{pmatrix}5&6\\7&8\end{pmatrix}&=\begin{pmatrix}1+5&2+6\\3+7&4+8\end{pmatrix}\\&=\begin{pmatrix}6&8\\10&12\end{pmatrix}\end{align*}$$ 하지만 선형 모델에서는 두 행렬의 덧셈 연산이 아닌, 행렬과 벡터1의 덧셈(Broadcasting) 연산이 필요합니다. 💡 벡터는 행렬의 특별한 경우로 볼 수 있다. \(b=[b_1,b_2,b_3]\) 세로로 쓰면 \(3 \times 1\) 열벡터, 가로로 쓰면 \(1 \times 3\) 행벡터 선형 모델에서의 덧셈은 가중치에 편향을 더하는 것인데, 행렬을 행벡터라고 생각하고 모든 행에 더해주면 됩니다....
[AI 공부하기-01] 종류 및 용어 정리
지금까지 AI를 사용해 오면서 정말 대단하다는 생각과 함께 어떻게 이런 결과를 낼 수 있을까? 궁금증이 들어서 AI에 대해 조금 공부를 해보려고 합니다. 👍 🤖 AI 종류 발전 단계, 핵심 기능, 사용 목적에 따라 다양하게 구분할 수 있음 발전 단계에 따른 분류 구분 설명 예시 약인공지능 (ANI, Artificial Narrow Intelligence) 특정 목적이나 제한된 작업만 수행하도록 설계된 AI (현재 상용화된 모든 AI) ChatGPT, 알파고, 자율주행, 음성인식 비서 강인공지능 (AGI, Artificial General Intelligence) 인간 수준의 범용적인 지능을 갖추어 다양한 분야를 스스로 학습하고 문제 해결하는 AI 영화 속 AI (현재 연구·개발 진행 중) 초인공지능 (ASI, Artificial Superintelligence) 모든 영역에서 인간의 지능을 뛰어넘는 가상의 AI 미래 형태 (상상 단계) 생성 및 작동 형태에 따른 분류 구분 설명 예시 생성형 AI (Generative AI) 데이터 패턴을 학습해 텍스트, 이미지, 음성, 코드 등 새로운 콘텐츠를 직접 만들어내는 AI ChatGPT, Gemini, Midjourney, Claude 분석형/분류형 AI (Discriminative AI) 입력된 데이터를 비교·분석하여 패턴을 분류하거나 미래 값을 예측하는 AI 스팸 메일 필터링, 추천 시스템(유튜브·넷플릭스), 불량품 감지 자율형 AI (Autonomous AI) 사람의 개입 없이 환경을 인식하고 스스로 판단해 행동하는 AI 자율주행차, 서빙/산업용 로봇 데이터 유형에 따른 분류 구분 설명 예시 텍스트 AI 문서 요약, 번역, 대화, 코드 작성 LLM 기반 모델 시각 AI (Computer Vision) 이미지 인식, 객체 탐지, 이미지/영상 생성 Stable Diffusion, Vision 모델 음성 AI 음성합성(TTS), 음성인식(STT) Siri, Whisper 멀티모달 AI (Multimodal AI) 텍스트, 이미지, 음성, 영상 등 여러 형태의 데이터를 동시에 이해하고 처리하는 통합형 AI Gemini, GPT-4o 📑 AI 관련 용어 정리 기본 개념 및 학습 방식 용어 설명 인공지능 (AI, Artificial Intelligence) 인간의 학습, 추론, 지각 능력 등을 컴퓨터 시스템으로 구현한 포괄적인 기술 개념입니다....
Race condition (경쟁 조건) 관련 글
예전에 스레드를 공부하다가 Lockfree라는 것을 알게 되었었고 일단 뭐든 만들어보자는 마인드로 MPMC부터 무턱대고 만들었었는데, 지금 와서 생각해 보니 남는 것도 없고 너무 얄팍하게 안 것 같아서 차근차근 개념을 이해하기 위해 작성한 글입니다.. 😎 🔎 Race condition “경쟁은 왜 발생하는 것일까?” “경쟁 상태에 데이터를 읽고 쓰면 무슨 일이 벌어질까?“에 대한 명확한 이해가 먼저 필요했습니다. 상황별로 살펴보도록 하겠습니다. Case 1: Read - Read 어떤 한 데이터를 2개 또는 그 이상 되는 스레드가 모두 읽기만 한다면 아무 일도 일어나지 않습니다....
SPSC Queue 만들기
💡 SPSC란? Single-Producer / Single-Consumer 의 약자로 생산자와 소비자가 1:1인 관계를 뜻합니다. 리눅스에서 소켓을 다루다가 스레드간 데이터 전달이 필요해서 알아보니 SPSC Queue가 있다는것을 알게 되었습니다. 제 경우는 클라이언트의 연결을 담당하는는스레드에서 데이터 수신을 담당하는 스레드로 소켓(fd)을 전달해야 했는데 공용 컨테이너와 뮤텍스를 사용하면 스레드가 늘어나면 늘어날수록 오버헤드가 늘 것 같았습니다. 그래서 연결을 담당하는 스레드와 데이터를 수신하는 스레드의 생산-소비가 1:1인 관계에서 뮤텍스 없이 Lock-free 하게 구현해 보려고 합니다. 👍 🚀 구현 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 // spsc_queue....