C++ 크로스 플랫폼(Cross-Platform) 구성 해보기

소켓 프로그래밍이 궁금해서 계속해 보던 중 윈도우와 리눅스 두 진영에서 같은 코드로 컴파일할 수 없을지 문득 생각이 들어서 알아보다가 포스팅하게 됐습니다. 😎 🔥 크로스 플랫폼 💡 크로스 플랫폼(Cross-Platform)은 하나의 소프트웨어, 코드, 프로그램이 윈도우, macOS, 리눅스, 안드로이드, iOS 등 서로 다른 여러 운영체제나 기기 환경에서 동시에 작동하는 것을 뜻합니다. 크로스 플랫폼 프레임워크·라이브러리 대표적인 것은 아래와 같습니다. 용도 도구 주 언어 특징 모바일·웹·데스크톱 앱 Flutter Dart 하나의 코드베이스로 여러 플랫폼 앱을 만들고, 자체 UI 렌더링 방식으로 화면 모양을 비교적 일관되게 유지해요....

2026년 10월 23일 · 3 min · 633 words · JongBin

[AI 공부하기-05] 손실 함수 구현하기

이전 글에서 선형 레이어와 활성화 함수의 forward와 backward를 구현해 봤습니다. forward는 input 값을 넣어 여러 행렬 계산을 통해 예측값을 만들어 냈습니다. 반대로 backward는 예측값과 실제 결괏값에 대한 오차를 입력으로 예측값을 만들어 냈던 모든 레이어의 손실(오차)에 대한 기울기를 구합니다. 이번 글에서는 예측값과 실제 결과의 손실을 구하는 방법 중 하나인 “평균제곱오차” 함수를 알아보고 구현해 보겠습니다. 👍 📒 평균제곱오차 💡 평균제곱오차(MSE, Mean Squared Error)는 모델의 예측값과 실제값의 차이를 제곱해 평균한 손실함수이다. $$MSE=\frac{1}{n}\sum^{n}_{i=1}(\hat{y_i}-y_i)^2$$ \(y_i\): 실제값 \(\hat{y_i}\): 예측값 \(n\): 데이터 개수 MSE는 모든 원소의 값을 더하고 나누어서 스칼라값이 나오게 됩니다....

2026년 10월 19일 · 3 min · 433 words · JongBin

[AI 공부하기 04] 활성화 함수 구현하기

지난 글에서 선형 레이어를 구현했습니다. 이번 글에서는 신경망에서 자주 쓰는 활성화 함수를 알아보고 구현해 보겠습니다. 👍 🔎 활성화 함수 ReLU(Rectified Linear Unit)라고도 불리는 활성화 함수는 입력이 0보다 크면 그대로 통과시키고, 0 이하이면 0으로 바꿉니다. $$ReLU(x)=max(0,x)$$ 신경망에 비선형성을 넣어 복잡한 관계를 학습하는 역할을 합니다. 계산이 간단하고 학습이 잘 되는 편이라 널리 쓰입니다. 활성화 함수 없이 선형층만 여러 개 쌓으면, 층이 아무리 많아도 결국 하나의 선형 변환과 같아요. 반면 ReLU를 중간중간 넣으면 입력과 출력의 관계를 더 복잡하게 표현할 수 있습니다....

2026년 10월 19일 · 2 min · 376 words · JongBin

[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}$$ ⚠️ 가중치는 입력과 출력 특성의 수를 어떤 순서로 받느냐에 따라 전치 연산이 필요할 수도 있고 아닐 수 있습니다!...

2026년 10월 19일 · 4 min · 699 words · JongBin

[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\) 행벡터 선형 모델에서의 덧셈은 가중치에 편향을 더하는 것인데, 행렬을 행벡터라고 생각하고 모든 행에 더해주면 됩니다....

2026년 10월 19일 · 2 min · 337 words · JongBin