<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>ryeong_j0511.log</title>
        <link>https://velog.io/</link>
        <description>데이터 사이언스</description>
        <lastBuildDate>Thu, 26 Mar 2026 03:37:32 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>ryeong_j0511.log</title>
            <url>https://velog.velcdn.com/images/ryeong_j0511/profile/41a802d7-6148-413a-aeaf-1f3d02d4aaaf/social_profile.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. ryeong_j0511.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/ryeong_j0511" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[Vibe Coding_조코딩_2, 4주차]]></title>
            <link>https://velog.io/@ryeong_j0511/Vibe-Coding%EC%A1%B0%EC%BD%94%EB%94%A92-4%EC%A3%BC%EC%B0%A8</link>
            <guid>https://velog.io/@ryeong_j0511/Vibe-Coding%EC%A1%B0%EC%BD%94%EB%94%A92-4%EC%A3%BC%EC%B0%A8</guid>
            <pubDate>Thu, 26 Mar 2026 03:37:32 GMT</pubDate>
            <description><![CDATA[<h1 id="2주차">2주차</h1>
<h3 id="mvp">MVP</h3>
<ul>
<li>MVP : Minimum Viable Product
가설을 검증할 수 있는 최소한의 기능을 가진 제품을 먼저 시장에 내놓은 후 발전시키기 위함</li>
</ul>
<h3 id="데이터">데이터</h3>
<ul>
<li>Clarity와 Google Analytics는 무료</li>
<li>실시간으로 수집되는 트래픽을 통계 내어 데이터를 보다 간편하게 확인할 수 있음</li>
<li>Google Analytics: 숫자, 지표로 유저 활동을 확인 가능</li>
<li>Clarity : 유저 행동을 녹화(?)하여 확인 가능</li>
</ul>
<p>이 두가지를 어떻게 적용?</p>
<ul>
<li>헤드 태그를 붙여 전송(?)</li>
</ul>
<h4 id="주요한-지표">주요한 지표</h4>
<ul>
<li><p>DAU : Daily Active User</p>
</li>
<li><p>WAU : Weekly Active User</p>
</li>
<li><p>MAU : Monthly Active User</p>
</li>
<li><p>이벤트 : 클릭, 마우스 스크롤, 웹사이트에 머묾/떠남</p>
<ul>
<li>전환 : 회원가입, 결제</li>
<li>이탈 : 사용자가 떠남</li>
</ul>
</li>
<li><p>AARRR : 알게 됨(방문X, 광고에 노출되어 인지하게 됨) -&gt; 다운로드(사용해봄) -&gt; 유저(회원가입) -&gt; 현질 -&gt; 추천</p>
<ul>
<li>역피라미드 형태로 사용자를 분류함
<img src="https://velog.velcdn.com/images/ryeong_j0511/post/cbb4b2ed-1d01-46e9-a98a-f2b833c7e943/image.png" alt=""></li>
</ul>
</li>
</ul>
<h3 id="product-market-fitpmf">Product Market Fit(PMF)</h3>
<ul>
<li>시장에서 먹힐지 판단하는 이론<img src="https://velog.velcdn.com/images/ryeong_j0511/post/1265132b-8635-42db-aa4c-cf761f31ff8f/image.png" alt=""><ul>
<li>그래프가 평탄화 되면 PMF를 달성했다고 봄 : 유저의 사용이 유지된다고 있다는 의미</li>
<li>평탄화 되는 정도에 따라 회사 가치가 다름<ul>
<li>20%에서 평탄화 : 괜찮은 회사</li>
<li>40%에서 평탄화 : 유니콘 회사</li>
<li>70%에서 평탄화 : 세상을 바꿈(chatgpt의 경우 유지율 68%)</li>
</ul>
</li>
<li>유의할 점 : &#39;0으로 수렴하지 않고&#39; 평탄화되는 부분이 생겨야 함</li>
</ul>
</li>
</ul>
<h1 id="4주차">4주차</h1>
<ul>
<li>DB : 여러 사람이나 프로그램이 데이터를 쉽게 공유하기 위해 체계적으로 관리되는 데이터의 집합</li>
<li>DBMS : DB를 체계적으로 관리하는 시스템<ul>
<li>SQL DB : SQLite, PostgreSQL, ORACLE, MySQL</li>
<li>NoSQL DB : neo4j, MongeDB, redis</li>
<li>redis : key와 value로만 이루어져 있어 자주 조회하는 db를 구현할 때 좋음(회원가입 등), 서버상에 Ram-cashing을 하기 때문에 빠르게 불러올 수 있음</li>
<li>MongoDB : json형태로 이루어져 있음(형태가 고정되지 않아 스키마를 자유롭게 짤 수 있음) -&gt; 서비스 초기에 유연하게 대응할 수 있음(구조가 유동적인 초기 서비스)</li>
</ul>
</li>
</ul>
<h4 id="사진이나-영상-저장">사진이나 영상 저장</h4>
<ul>
<li><p>Storage에 올리고 그 이미지의 주소만 DB에 저장해두고 불러오는 방식 사용</p>
<ul>
<li>Amazon의 S3</li>
<li>Cloudflare의 R2</li>
<li>Google Cloud Storage</li>
<li>Vercel Blob</li>
</ul>
</li>
<li><p>주소만 가지고 어떻게 Storage에서 불러오는가?</p>
<ul>
<li>브라우저에서 이미지 요청 </li>
</ul>
</li>
<li><blockquote>
<p>백엔드가 DB에 요청 </p>
</blockquote>
</li>
<li><blockquote>
<p>DB에 저장된 URL </p>
</blockquote>
</li>
<li><blockquote>
<p>DB가 브라우저로 바로 URL 보냄 </p>
</blockquote>
</li>
<li><blockquote>
<p>브라우저가 URL을 바탕으로 Storage에 이미지 요청 </p>
</blockquote>
</li>
<li><blockquote>
<p>브라우저의 메모리를 사용해서 URL에 위치한 이미지를 랜더링</p>
</blockquote>
</li>
<li><blockquote>
<p>곳곳에 위치한 CDN 중 가장 가까운 CDN이 해당 이미지를 가지고 있음</p>
</blockquote>
</li>
<li><blockquote>
<p>CDN에서 브라우저로 이미지를 보냄</p>
</blockquote>
</li>
</ul>
<p>*CDN은 storage에 있는 이미지를 모두 가지고 있는 것이 아니라 처음 요청한 사용자가 있으면 그때 이미지를 받아오고 일정기간 보관했다가 그 기간동안 아무 사용자에게서 요청이 없으면 다시 삭제함</p>
<p>*URL, API 등 정보 주고 받을 때 HTTP를 따라 소통</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Vibe Coding_조코딩_3주차]]></title>
            <link>https://velog.io/@ryeong_j0511/Vibe-Coding%EC%A1%B0%EC%BD%94%EB%94%A93%EC%A3%BC%EC%B0%A8</link>
            <guid>https://velog.io/@ryeong_j0511/Vibe-Coding%EC%A1%B0%EC%BD%94%EB%94%A93%EC%A3%BC%EC%B0%A8</guid>
            <pubDate>Fri, 20 Mar 2026 09:57:43 GMT</pubDate>
            <description><![CDATA[<h3 id="라이브러리">라이브러리</h3>
<ul>
<li>내가 필요할 때 가져다 쓰는 도구 모음</li>
</ul>
<h3 id="프레임워크">프레임워크</h3>
<ul>
<li>이미 짜여진 집 구조에 내가 들어가 사는 것</li>
<li>웹프레임워크 중 Node.js와 React의 점유율이 압도적, 프론트엔드 프레임워크 중에서도 React가 압도적인 점유율을 가짐</li>
</ul>
<h3 id="react">React</h3>
<ul>
<li><p>컴포넌트를 가지고 구현할 수 있기 때문에 JS가 가진 단점을 커버할 수 있음(JS의 단점: 너무 세분화됨, 매우 많은 기능)</p>
</li>
<li><p>Vite는 React의 문법을 HTML, CSS, JS의 형태로 변환하는 툴</p>
</li>
<li><p>Typescript : JS는 유형 구분 없이 다 들어가 있는데 typescript는 그 유형이 정리되어 있어 사용에 용이</p>
</li>
<li><p>Vite는 Typescript의 언어도 변환해서 브라우저가 읽을 수 있도록 해줌</p>
</li>
</ul>
<h3 id="cdn">CDN</h3>
<p>클라우드 플레어가 세계 곳곳에 서버를 둠 
그곳에 프론트엔드 상에서 받은 캐시(CDN)을 올려둠</p>
<h3 id="정적-웹">정적 웹</h3>
<ul>
<li>Cloudflare Pages, Vite+React, CSS/HTML/JS</li>
<li>캐시된거 전달만</li>
<li>코드 실행 브라우저에서 서버 연산 필요 없음</li>
</ul>
<h3 id="동적-웹">동적 웹</h3>
<ul>
<li>Cloudflare Workers, NEXT.JS, Remix</li>
<li>캐시+실행 필요한 서버</li>
<li>코드 실행 서버에서도 서버 연산 필요</li>
</ul>
<h2 id="서버리스">서버리스</h2>
<ul>
<li>Cloudflare Pages Functions: Cloudflare에 Cloudflare Workers를 붙여서 사용</li>
</ul>
<h3 id="jam-stack">JAM Stack</h3>
<ul>
<li>요청 CDN -&gt; 정적 HTML 즉시 응답 -&gt; 필요하면 JS가 API호출</li>
<li>트래픽 폭탄 감당 쉬움</li>
<li>보안이 비약적으로 좋아짐</li>
<li>개발자 경험(DX)이 좋음(프론트/백엔드 분리, 로컬에서 개발하고 바로 배포 등)</li>
</ul>
<h3 id="apiapplication-programming-interface">API(Application Programming Interface)</h3>
<p>앱과 프로그래밍이 요청하고 응답받는 규약</p>
<ol>
<li>요청</li>
</ol>
<ul>
<li>목적지(주소)</li>
<li>헤더(전송 방식) : GET, POST</li>
<li>바디(보낼 것) : query, sort, target</li>
</ul>
<ol start="2">
<li>응답</li>
</ol>
<ul>
<li>형식 : JSON(키:밸류 쌍)</li>
<li>응답 의미 설명 : title, contents, thumbnail</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Vibe Coding_조코딩_1주차]]></title>
            <link>https://velog.io/@ryeong_j0511/Vibe-Coding-Experience</link>
            <guid>https://velog.io/@ryeong_j0511/Vibe-Coding-Experience</guid>
            <pubDate>Thu, 12 Mar 2026 09:08:19 GMT</pubDate>
            <description><![CDATA[<p>2026-03-11 22:30~00:10
1주차 분량 수강</p>
<h2 id="프론트엔드">프론트엔드</h2>
<p>언어 3개만 알면 모두 가능</p>
<ul>
<li>HTML : 뼈대</li>
<li>CSS : 꾸며주기</li>
<li>JavaScript : 액션 부여/이벤트 설정</li>
</ul>
<h3 id="개발-환경-세팅">개발 환경 세팅</h3>
<p>메모장 index.html</p>
<h3 id="임시-백엔드프론트엔드-실습을-위한">임시 백엔드(프론트엔드 실습을 위한)</h3>
<ol>
<li>내 컴퓨터 서버로 공개하기</li>
<li>외부 서버 빌리기
방법 1) CloudFlare에 index.html 파일 업로드 하여 배포
방법 2) Firebase Studio<ul>
<li>오른쪽 사이드바에서 웹브라우저로 열어줘 프롬프트 입력</li>
<li>혹은 터미널에서 바로 AI 사용 가능
Gemini CLI 다운로드 코드를 터미널에 붙여넣기
: npm install -g @google/gemini-cli</li>
</ul>
</li>
</ol>
<h3 id="단계-정리">단계 정리</h3>
<p>Firebase Studio에서 작업한 것(LLM을 장착한)
Github로 버전 관리 후
CloudFlare에서 바로 배포</p>
<h2 id="백엔드">백엔드</h2>
<h3 id="외부-서비스-활용">외부 서비스 활용</h3>
<ol>
<li>Formspree</li>
</ol>
<ul>
<li>제휴 제안 - 데이터베이스 없이도 온라인 폼(문의하기, 설문조사 등)을 쉽게 만들고 관리할 수 있게 해주는 서비스</li>
<li>메일 보내는 기능을 백엔드 구현 없이 외부 서비스를 활용 </li>
</ul>
<ol start="2">
<li>DISQUSS</li>
</ol>
<ul>
<li>댓글 서비스 제공</li>
<li>새로운 웹사이트 만들기 후 나온 코드 복붙해서 Firebase 터미널 창에서 gemini에게 댓글 기능 달아달라고 부탁</li>
</ul>
<ol start="3">
<li>Teachable Machine</li>
</ol>
<ul>
<li>쉽고 빠르게 머신러닝 모델을 학습시킬 수 있는 웹 기반 도구</li>
<li>학습시킨 모델을 추출 가능하고 해당 모델은 자동으로 클라우드에 올라가 제공됨</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[확률론 맛보기]]></title>
            <link>https://velog.io/@ryeong_j0511/%ED%99%95%EB%A5%A0%EB%A1%A0-%EB%A7%9B%EB%B3%B4%EA%B8%B0</link>
            <guid>https://velog.io/@ryeong_j0511/%ED%99%95%EB%A5%A0%EB%A1%A0-%EB%A7%9B%EB%B3%B4%EA%B8%B0</guid>
            <pubDate>Tue, 15 Jul 2025 05:30:51 GMT</pubDate>
            <description><![CDATA[<ul>
<li><p><strong>회귀 분석</strong>에서 손실함수로 사용되는 L2-노름은 <strong>예측오차의 분산을 가장 최소화</strong>하는 방향으로 학습하도록 유도</p>
</li>
<li><p><strong>분류 문제</strong>에서 사용되는 교차엔트로피는 <strong>모델 예측의 불확실성을 최소화</strong>하는 방향으로 학습하도록 유도</p>
<ul>
<li>분산 및 불확실성을 최소화하기 위해서는 <strong>측정하는 방법</strong>을 알아야 함</li>
<li>두 대상을 측정하는 방법은 통계학에서 제공하기 때문에 기계학습을 이해하려면 확률론의 기본 개념을 알아야 함</li>
</ul>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/ryeong_j0511/post/7d070c4b-a3c3-4e63-a7a8-68629a725e90/image.png" alt=""></p>
<h3 id="이산확률변수-vs-연속확률변수">이산확률변수 vs 연속확률변수</h3>
<p>X가 A에 속할 확률을 구하는 방법은 이산, 연속에 따라 다르다. </p>
<ul>
<li><p>항상 이 두가지로만 구분되지는 않는다. 어떤 경우에는 이산형, 어떤 경우에는 연속형에 따르는 변수도 있다.
<img src="https://velog.velcdn.com/images/ryeong_j0511/post/e2a07377-cab2-4fd3-84c5-5baec3ac80d4/image.png" alt=""></p>
</li>
<li><p>결합 분포는 원래 확률분포 D가 이산이든 연속이든 상관없이 이산, 연속 중 아무거나 사용해도 상관없음(모델링 방법에 따라서 결정됨)
<img src="https://velog.velcdn.com/images/ryeong_j0511/post/a8fddab9-9049-44c3-a413-72ac2d74f088/image.png" alt=""></p>
</li>
</ul>
<blockquote>
<ul>
<li>이산/연속: 데이터의 종류</li>
<li>주변확률/조건부확률: 확률을 다룰 때 쓰는 도구 (둘 다에서 공통적으로 사용됨)</li>
</ul>
</blockquote>
<h4 id="주변확률분포-px">주변확률분포 P(x)</h4>
<ul>
<li>결합확률분포를 y에 대해서 더해주거나 적분을 한 것 </li>
<li>아래는 입력 x에 따라 분포를 구한 것, y에 대한 분포가 아님(y에 대한 주변확률분포를 구할 수도 있음)
<img src="https://velog.velcdn.com/images/ryeong_j0511/post/f8a7f669-bd4a-4c0f-8957-896c13bce675/image.png" alt=""></li>
</ul>
<h4 id="조건부확률분포-pxy">조건부확률분포 $P(x|y)$</h4>
<ul>
<li>$y$가 특정 값인 경우에만 해당하는 x의 분포를 구한 것</li>
<li>입력 $x$와 출력 $y$ 사이의 관계를 모델링함<ul>
<li>입력과 출력 사이의 통계적 관계를 모델링할 때 사용</li>
<li>예측 모형을 만들 때 사용</li>
</ul>
</li>
<li><strong>연속확률분포</strong>의 경우 $P(x|y)$는 확률이 아니고 밀도로 해석한다는 것을 주의
<img src="https://velog.velcdn.com/images/ryeong_j0511/post/75b8680a-b485-496b-8274-87d9c3d4848c/image.png" alt=""></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[딥러닝 학습]]></title>
            <link>https://velog.io/@ryeong_j0511/%EB%94%A5%EB%9F%AC%EB%8B%9D-%ED%95%99%EC%8A%B5</link>
            <guid>https://velog.io/@ryeong_j0511/%EB%94%A5%EB%9F%AC%EB%8B%9D-%ED%95%99%EC%8A%B5</guid>
            <pubDate>Mon, 14 Jul 2025 07:51:27 GMT</pubDate>
            <description><![CDATA[<p>지난 시간까진 선형모델을 다뤄보았고 이제부터는 비선형모델인 신경망을 다룸</p>
<h3 id="1-신경망">1. 신경망</h3>
<ul>
<li><p>신경망을 수식으로 분해하면 선형 모델의 수식과 비선형 함수들의 결합으로 이루어져 있음
  -&gt; 신경망을 다루려면 선형모델에 대해서도 잘 알아야 함</p>
</li>
<li><p>아래 그림은 X, W, b가 선형결합으로 이루어져 있음
<img src="https://velog.velcdn.com/images/ryeong_j0511/post/5cecf600-f0ff-46d7-aacc-c30fca81f81d/image.png" alt=""></p>
</li>
<li><p>아래 그림에서 화살표의 개수는 d * p개 이므로 가중치 벡터 W의 원소 개수와 같음
<img src="https://velog.velcdn.com/images/ryeong_j0511/post/75929d0f-2cba-4d5c-8b11-ed14a7a999f3/image.png" alt=""></p>
</li>
</ul>
<h3 id="2-softmax">2. Softmax</h3>
<ul>
<li><p>모델의 출력을 확률로 해석할 수 있게 변환해주는 연산</p>
<ul>
<li>softmax() 안에 넣으면 분류된 class에 속할 확률이 반환됨</li>
</ul>
</li>
<li><p>분류 문제를 풀 때 선형모델과 결합하여 예측함
<img src="https://velog.velcdn.com/images/ryeong_j0511/post/62b3d8c9-d127-4f4c-8acb-bfa0975d098c/image.png" alt="">
<img src="https://velog.velcdn.com/images/ryeong_j0511/post/d9aa97b3-7032-448c-90c0-3e84dc37b444/image.png" alt=""></p>
</li>
<li><p>학습이 아니라 추론을 할 때는 원-핫 벡터를 이용하므로 softmax를 쓰지 않아도 됨</p>
<ul>
<li>원-핫 벡터를 쓰면 최대값을 가진 주소만 1로 출력
<img src="https://velog.velcdn.com/images/ryeong_j0511/post/4f103c8b-6079-4b14-ad03-c7d2712aad88/image.png" alt=""></li>
</ul>
</li>
</ul>
<h3 id="3-활성함수">3. 활성함수</h3>
<ul>
<li><p>신경망은 선형모델과 활성함수(비선형함수임)를 합성한 함수임</p>
</li>
<li><p>선형모델로 나오게 되는 각각의 출력물에 적용함</p>
</li>
<li><p>Softmax와의 차이점: softmax는 출력물의 모든 값을 고려한다면 활성함수의 경우에는 특정 주소의 출력값만을 고려함
  -&gt; 그러므로 활성함수를 벡터를 input값으로 받지 않고 실수를 받음
<img src="https://velog.velcdn.com/images/ryeong_j0511/post/d92b9b15-b1e5-4c6f-a7a6-d90f40ac694b/image.png" alt=""></p>
</li>
<li><p>선형 모델에 활성함수를 씌워 비선형 모델로 변환시킬 수 있고 이렇게 변형된 벡터를 잠재/히든 벡터라고 부름(뉴런이라고도 함)
  -&gt; 뉴런으로 이루어진 네트워크를 신경망, neural network라고 함</p>
</li>
<li><p>실수값을 입력으로 받고 출력도 실수값으로 뱉음</p>
</li>
<li><p><strong>활성함수를 쓰지 않으면 딥러닝은 선형모형과 차이가 전혀 없음</strong></p>
</li>
</ul>
<p>[활성함수 종류]</p>
<ul>
<li><p>시그모이드</p>
</li>
<li><p>tanh 함수(하이퍼볼릭 탄젠트)</p>
</li>
<li><p>---------------------------------------전통적으로 쓰임</p>
</li>
<li><p>ReLU(현재 가장 많이 쓰임)</p>
<ul>
<li>선형처럼 보이지만 비선형임
<img src="https://velog.velcdn.com/images/ryeong_j0511/post/501df55d-745e-4681-97d0-8a7ffa1863bb/image.png" alt=""></li>
</ul>
</li>
<li><p>활성함수로 만든 잠재벡터 H에 가중치 W와 절편 b를 또 붙이면 2층 신경망이 됨</p>
<ul>
<li>이때 파라미터는 (W2, W1)</li>
<li>이걸 반복하면 현대 딥러닝의 기본적인 모형인 Multi Layer Perceptron(다층신경망, MLP)</li>
<li>MLP의 파라미터는 L개의 가중치 행렬 W(L),.....,W(1)로 이루어짐
<img src="https://velog.velcdn.com/images/ryeong_j0511/post/920d2436-eba5-49e0-bd1e-c32fff48f5d9/image.png" alt=""></li>
</ul>
</li>
<li><p>왜 층을 여러개 쌓는가?</p>
<ul>
<li>이론적으로는 2층 신경망으로도 임의의 연속함수를 근사할 수 있음</li>
<li>층이 깊을 수록 목적함수를 근사하는데 필요한 뉴런(노드)의 숫자가 훨씬 빨리 줄어들어 좀 더 효율적으로 학습 가능(층이 얇으면 폭이 넓고, 층이 깊으면 폭이 좁음)</li>
<li>좀 더 적은 파라미터와 노드를 가지고도 복잡한 패턴을 표현 가능</li>
</ul>
</li>
</ul>
<h3 id="4-역전파-알고리즘">4. 역전파 알고리즘</h3>
<ul>
<li>선형모델의 경우 그래디언트 벡터를 한 층에서 계산 가능하지만, 딥러닝의 경우에는 순차적으로 각 층별로 계산을 하기 때문에 gradient vector를 한번에 계산할 수는 없음</li>
<li>이 때문에 역순으로 계산해줌</li>
<li>역전파 알고리즘의 목적: 각각의 가중치 행렬에서 손실함수에 대한 미분을 계산(윗층부터 역순으로 계산하여 gradient 벡터를 전달)</li>
<li>순전파에서는 미분을 저장하지 않지만 역전파에서는 미분값을 저장해야 함
<img src="https://velog.velcdn.com/images/ryeong_j0511/post/4dd11a83-fb41-4263-ba81-96208952667b/image.png" alt=""></li>
</ul>
<ul>
<li>손실함수를 첫번째 가중치로 편미분한 값 찾기
<img src="https://velog.velcdn.com/images/ryeong_j0511/post/31a0c066-3149-4e6d-8821-0f693b5e4bba/image.png" alt=""></li>
</ul>
<ul>
<li>각각의 가중치 행렬에 대한 gradient벡터를 확률적 경사하강법을 이용해 각각의 파라미터를 batch로 번갈아가면서 학습하게 됨<ul>
<li>주어진 목적식을 최소화하는 파라미터를 찾을 수 있음</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[경사하강법]]></title>
            <link>https://velog.io/@ryeong_j0511/%EA%B2%BD%EC%82%AC%ED%95%98%EA%B0%95%EB%B2%95</link>
            <guid>https://velog.io/@ryeong_j0511/%EA%B2%BD%EC%82%AC%ED%95%98%EA%B0%95%EB%B2%95</guid>
            <pubDate>Mon, 14 Jul 2025 06:33:25 GMT</pubDate>
            <description><![CDATA[<h3 id="1-미분">1. 미분</h3>
<ul>
<li>변수의 움직입에 따른 함수값의 변화를 측정하기 위한 도구</li>
<li>최적화에서 제일 많이 사용하는 기법</li>
</ul>
<pre><code>import sympy as sym
from sympy.abc import x

sym.diff(sym.poly(x**2 + 2*x + 3), x)</code></pre><ul>
<li><p>고차원 공간에서는 어느 방향으로 움직여야 함수값이 증가/감소하는지 알기 어려우므로 미분을 이용하여 방향을 정함</p>
</li>
<li><p>경사상승법: 미분값을 더할 때이며, 함수의 극대값의 위치를 구할 때 사용함
<img src="https://velog.velcdn.com/images/ryeong_j0511/post/3f7fecf7-c716-4f98-98f7-6a143089ed4c/image.png" alt=""></p>
</li>
<li><p>경사하강법: 미분값을 뺄 때이며, 함수의 극소값의 위치를 구할 때 사용함
<img src="https://velog.velcdn.com/images/ryeong_j0511/post/fca98bb9-7ed2-427b-a820-29b5e99afd2c/image.png" alt=""></p>
</li>
<li><p>경사상승/경사하강 법은 극값에 도달하면 움직임을 멈춤 = 미분값이 0</p>
</li>
</ul>
<h3 id="2-경사하강법-알고리즘">2. 경사하강법: 알고리즘</h3>
<pre><code>- gradient: 미분을 계산하는 함수
- init: 시작점
- lr: 학습률(미분을 통해 업데이트하는 속도를 조절)
- eps: 알고리즘 종료조건</code></pre><ul>
<li>컴퓨터로 계산할 때 미분이 정확이 0이 되는 것은 불가능하므로 eps보다 작을 때 종료하는 조건이 필요</li>
</ul>
<p><img src="https://velog.velcdn.com/images/ryeong_j0511/post/f6bb17b8-1185-4e98-a562-48a1fdbb2ddc/image.png" alt=""></p>
<h3 id="3-변수가-벡터라면">3. 변수가 벡터라면?</h3>
<ul>
<li><p>벡터가 입력인 다변수 함수의 경우 편미분(partial differeniation)을 사용함</p>
</li>
<li><p>e_i는 i번째 값만 1이고 나머지는 0이므로 원하는 부분 i에서의 값만 계산할 수 있음
<img src="https://velog.velcdn.com/images/ryeong_j0511/post/e32b4e71-edb7-4b43-8e65-1e9a2e58d26d/image.png" alt=""></p>
</li>
<li><p>x와 y가 같이 있는 식의 경우 x에 대해서 미분하면 y는 상수 취급</p>
</li>
<li><p>당연히 x에 대한 편미분뿐만 아니라 y에 대한 편미분도 계산할 수 있음
<img src="https://velog.velcdn.com/images/ryeong_j0511/post/62f2e039-c9cf-40d1-b554-90c939fbe40f/image.png" alt=""></p>
</li>
<li><p>만약 n차원 벡터라고 한다면 편미분을 n번 계산할 수 있음</p>
<ul>
<li>n개만큼 편미분을 계산한 함수들을 하나의 벡터로 표현할 수 있는데 이것을 그레디언트(gradient) 벡터라고 함</li>
<li>아래와 같은 기호를 사용함
<img src="https://velog.velcdn.com/images/ryeong_j0511/post/e77a553c-9ffc-4790-9aaa-5eb81fe7ac96/image.png" alt=""></li>
</ul>
</li>
</ul>
<p>아래 예시
<img src="https://velog.velcdn.com/images/ryeong_j0511/post/c3a51093-3b32-4973-b990-84c00c83915a/image.png" alt="">
<img src="https://velog.velcdn.com/images/ryeong_j0511/post/6027467f-8751-44bf-a2b0-68ba9816bf12/image.png" alt=""></p>
<h3 id="4-경사하강법-알고리즘_변수가-벡터일-때">4. 경사하강법: 알고리즘_변수가 벡터일 때</h3>
<ul>
<li>다른 부분은 다 같지만 한가지 차이점이 있음
  -&gt; 앞에서는 미분값의 절대값으로 종료조건을 설정하였지만 벡터일때는 절대값을 쓸 수 없으므로 노름을 계산하여 종료조건을 세움</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[벡터 & 행렬]]></title>
            <link>https://velog.io/@ryeong_j0511/%EB%B2%A1%ED%84%B0-%ED%96%89%EB%A0%AC</link>
            <guid>https://velog.io/@ryeong_j0511/%EB%B2%A1%ED%84%B0-%ED%96%89%EB%A0%AC</guid>
            <pubDate>Fri, 11 Jul 2025 09:52:01 GMT</pubDate>
            <description><![CDATA[<h2 id="1-벡터">1. 벡터</h2>
<h3 id="1-벡터-1">1. 벡터</h3>
<ul>
<li>벡터는 숫자를 원소로 가지는 리스트 혹은 배열</li>
<li>벡터끼리 같은 모양을 가지면 성분곱을 계산할 수 있음<ul>
<li>성분곱: x + y, x - y, x * y</li>
</ul>
</li>
</ul>
<h3 id="2-벡터의-노름">2. 벡터의 노름</h3>
<ul>
<li>원점에서부터의 거리</li>
<li>L1, L2가 있음, 각각을 ||x||_1, ||x||_2로 나타냄</li>
<li>두 벡터 사이의 거리를 이용하여 각도 계산 가능(L2만 가능)
 ||x-y||_2 = ||y-x||_2</li>
<li>두 벡터 사이의 각도에서 분모, 분자 중 분자를 쉽게 구하는 방법이 <strong>내적</strong></li>
</ul>
<p><img src="https://velog.velcdn.com/images/ryeong_j0511/post/678abe23-ba2a-47ce-bd6e-c400715a8679/image.png" alt=""></p>
<h3 id="3-벡터의-내적">3. 벡터의 내적</h3>
<ul>
<li>내적은 정사영된 벡터의 길이와 관련 있음</li>
</ul>
<p>정사영이란?</p>
<ul>
<li><p>Proj()라고 나타내며 프로젝션이라고 읽음</p>
</li>
<li><p>Proj(x)는 벡터 y에 투영(정사영)된 벡터 x의 그림자를 의미함</p>
</li>
<li><p>Proj(x)의 길이는 코사인 법칙에 의해 ||x||cos(세타)가 됨
<img src="https://velog.velcdn.com/images/ryeong_j0511/post/197689e1-0496-461a-8664-3bb278c6d7a2/image.png" alt=""></p>
</li>
<li><p>내적은 정사영의 길이에 벡터y의 길이(||y||)만큼을 반영한 값임
<img src="https://velog.velcdn.com/images/ryeong_j0511/post/21ae0940-a92d-43e0-b9bb-c11bb4aea729/image.png" alt=""></p>
</li>
</ul>
<h2 id="2-행렬">2. 행렬</h2>
<h3 id="1-행렬">1. 행렬</h3>
<ul>
<li>행렬은 벡터를 원소로 가지는 2차원 배열<ul>
<li>이때 원소가 되는 벡터는 열벡터가 아닌 행벡터임</li>
</ul>
</li>
</ul>
<h3 id="2-전치-행렬">2. 전치 행렬</h3>
<p><img src="https://velog.velcdn.com/images/ryeong_j0511/post/976f80d6-f1bb-4eda-98f9-e445a11bdbe2/image.png" alt=""></p>
<ul>
<li>벡터를 전치하게 된다면?<ul>
<li>행벡터를 열벡터로, 열벡터는 행벡터로 바뀜</li>
</ul>
</li>
</ul>
<h3 id="3-행렬의-성분곱-스칼라곱">3. 행렬의 성분곱, 스칼라곱</h3>
<ul>
<li>성분곱은 벡터와 마찬가지로 각 인덱스 위치끼리 곱함</li>
<li>성분곱과 행렬곱은 다름(기호도 다름: 성분곱은 원안의 점, 행렬곱은 곱셈기호 혹은 생략)</li>
</ul>
<p><img src="https://velog.velcdn.com/images/ryeong_j0511/post/9edff771-d0bb-473d-8c73-74e8894646a1/image.png" alt=""></p>
<ul>
<li>스칼라곱도 마찬가지임
<img src="https://velog.velcdn.com/images/ryeong_j0511/post/1697bc61-d231-4dc4-b742-c29d4e749856/image.png" alt=""></li>
</ul>
<h3 id="4-행렬의-곱셈">4. 행렬의 곱셈</h3>
<ul>
<li>두 행렬의 i번째 행벡터와 j번째 열벡터 사이의 내적을 성분으로 가지는 행렬을 계산하는 것</li>
<li>X의 열 개수 = Y의 행 개수 -&gt; 이 조건을 만족해야 곱셈 가능
(X 행벡터 길이 = Y 열벡터 길이)</li>
<li>순서가 굉장히 중요함: X * Y와 Y * X의 값은 다름
<img src="https://velog.velcdn.com/images/ryeong_j0511/post/631dbedf-37c6-4cc2-bcfb-96d2f3d92fd8/image.png" alt=""></li>
</ul>
<h3 id="5-행렬의-내적">5. 행렬의 내적</h3>
<ul>
<li>i번째 행벡터와 j번째 행벡터 사이의 내적을 계산</li>
<li>주의해야할 점은 행렬곱은 i번째 행벡터와 j번째 열벡터를 계산하는 차이가 있으므로 행렬곱과 내적은 다른 연산임</li>
<li>X의 열 개수 = Y의 열 개수 -&gt; 이 조건을 만족해야 내적 계산 가능 (X 행벡터 길이 = Y 행벡터 길이)
<img src="https://velog.velcdn.com/images/ryeong_j0511/post/c747921e-21f3-4a87-871a-f03556bfadef/image.png" alt=""></li>
</ul>
<h3 id="6-행렬을-이해하는-방법">6. 행렬을 이해하는 방법</h3>
<ul>
<li>벡터 공간에서 사용되는 연산자(operator)로 이해하기</li>
<li>아래 그림을 보면 z와 x라는 다른 차원에 있는 서로 다른 벡터를 행렬 A가 이어주고 있음
<img src="https://velog.velcdn.com/images/ryeong_j0511/post/453d2099-799a-427f-a47a-fe33d730150c/image.png" alt=""></li>
</ul>
<h3 id="7-역행렬">7. 역행렬</h3>
<ul>
<li><p>행렬곱은 순서가 중요하지만 역행렬은 순서 상관없음</p>
</li>
<li><p>항등행렬: 어떤 행렬에 항등행렬을 곱했을 때 자기자신이 나옴
<img src="https://velog.velcdn.com/images/ryeong_j0511/post/b730d478-8e19-436f-8267-f9f7c4d84e86/image.png" alt=""></p>
</li>
<li><p>numpy에서는 inver함수를 이용하여 역행렬을 구할 수 있음</p>
<ul>
<li>linalg(linear algebra) 라이브러리의 inv(x) 함수</li>
<li>이때 주의해야할 점은 행렬의 행, 열 길이가 같아야 함</li>
</ul>
</li>
</ul>
<p>** 행렬의 행, 열 길이가 다르다면? 유사 역행렬을 사용할 수 있음</p>
<h3 id="8-유사-역행렬">8. 유사 역행렬</h3>
<ul>
<li><p>행이 열보다 길다면 원래 행렬보다 유사 역행렬을 먼저 곱해줘야 함
<img src="https://velog.velcdn.com/images/ryeong_j0511/post/6e11f719-34a9-45e5-b900-57f6184cbb95/image.png" alt="">
<img src="https://velog.velcdn.com/images/ryeong_j0511/post/de76e0d5-8513-4382-9314-d89d5a593159/image.png" alt=""></p>
</li>
<li><p>n&gt;=m이면 전치행렬을 뒤에, n&lt;=m이면 전치행렬을 앞에 곱해줘야 함
<img src="https://velog.velcdn.com/images/ryeong_j0511/post/602a4a05-4e62-4b8b-9aad-04251c27452a/image.png" alt=""></p>
</li>
</ul>
<h3 id="9-유사-역행렬-응용1-연립방정식-풀기">9. 유사 역행렬 응용1: 연립방정식 풀기</h3>
<ul>
<li>np.linalg.pinv를 이용하여 연립방정식의 해를 구할 수 있음</li>
<li>연립방정식의 경우 식의 개수가 변수의 개수보다 많거나 같을 때 해를 찾는 것이 가능하나, 그렇지 않을 때 유사 역행렬을 이용하여 해를 찾을 수 있음
<img src="https://velog.velcdn.com/images/ryeong_j0511/post/ff3b565f-a8b1-4186-a021-13cc5dc9e450/image.png" alt=""></li>
</ul>
<p>Ax = b라고 할 때 n &lt;= m이므로 A의 오른쪽에 곱해주어야 함 
즉, x = A의 유사행렬* b가 됨</p>
<blockquote>
<p>Ax = b
AA^+b = b
Ib = b
b = b</p>
</blockquote>
<h3 id="10-유사-역행렬-응용2-선형회귀분석">10. 유사 역행렬 응용2: 선형회귀분석</h3>
<ul>
<li>행렬 X에 계수 행렬인 베타를 곱하면 선형회귀선이 그어지는데 어떤 베타를 곱해야 행렬의 점(원소)들을 가장 잘 설명하는 회귀선이 구해지는지를 알아야 함</li>
<li>선형회귀분석은 연립방정식과 달리 행이 더 크므로 방정식을 푸는건 불가능</li>
<li>L2 노름을 최소화하는 계수 베타를 찾게 되면 가장 표현한 회귀선을 찾을 수 있음
<img src="https://velog.velcdn.com/images/ryeong_j0511/post/2fbfde32-9107-4458-a398-99942f0ec223/image.png" alt=""></li>
</ul>
]]></description>
        </item>
    </channel>
</rss>