<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>corone_hi.log</title>
        <link>https://velog.io/</link>
        <description>For the sake of someone who studies computer science</description>
        <lastBuildDate>Mon, 29 Dec 2025 06:42:53 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>corone_hi.log</title>
            <url>https://images.velog.io/images/corone_hi/profile/0cf4e7f3-d30d-43bb-955f-e6e0340a999e/me.jpg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. corone_hi.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/corone_hi" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[BIM(Building Information Modeling)]]></title>
            <link>https://velog.io/@corone_hi/BIMBuilding-Information-Modeling</link>
            <guid>https://velog.io/@corone_hi/BIMBuilding-Information-Modeling</guid>
            <pubDate>Mon, 29 Dec 2025 06:42:53 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p><a href="https://www.hdec.kr/kr/newsroom/news_view.aspx?NewsSeq=731&amp;NewsType=BRAND&amp;NewsListType=news_list#:~:text=BIM%EC%9D%80%20%EA%B8%B0%EC%A1%B4%202%EC%B0%A8%EC%9B%90%20%EB%8F%84%EB%A9%B4%EC%9D%84%20%ED%99%9C%EC%9A%A9%ED%95%9C%20%EC%84%A4%EA%B3%84%EC%97%90%EC%84%9C%20%ED%95%9C,%EC%83%9D%EC%82%B0%E2%80%A7%EA%B4%80%EB%A6%AC%E2%80%A7%EC%9A%B4%EC%98%81%20%EB%8B%A8%EA%B3%84%EC%97%90%20%ED%99%9C%EC%9A%A9%ED%95%98%EB%8A%94%20%EA%B1%B4%EC%84%A4%20%EC%A0%95%EB%B3%B4%20%EB%AA%A8%EB%8D%B8%EB%A7%81%20%EA%B8%B0%EC%88%A0%EC%9E%85%EB%8B%88%EB%8B%A4">https://www.hdec.kr/kr/newsroom/news_view.aspx?NewsSeq=731&amp;NewsType=BRAND&amp;NewsListType=news_list#:~:text=BIM%EC%9D%80%20%EA%B8%B0%EC%A1%B4%202%EC%B0%A8%EC%9B%90%20%EB%8F%84%EB%A9%B4%EC%9D%84%20%ED%99%9C%EC%9A%A9%ED%95%9C%20%EC%84%A4%EA%B3%84%EC%97%90%EC%84%9C%20%ED%95%9C,%EC%83%9D%EC%82%B0%E2%80%A7%EA%B4%80%EB%A6%AC%E2%80%A7%EC%9A%B4%EC%98%81%20%EB%8B%A8%EA%B3%84%EC%97%90%20%ED%99%9C%EC%9A%A9%ED%95%98%EB%8A%94%20%EA%B1%B4%EC%84%A4%20%EC%A0%95%EB%B3%B4%20%EB%AA%A8%EB%8D%B8%EB%A7%81%20%EA%B8%B0%EC%88%A0%EC%9E%85%EB%8B%88%EB%8B%A4</a>.</p>
</blockquote>
<h2 id="bimbuilding-information-modeling">BIM(Building Information Modeling)</h2>
<br/>

<blockquote>
<p>건설 전 생애주기의 정보를 통합해 설계–시공–운영을 디지털로 관리하는 기술</p>
</blockquote>
<p><br/><br/></p>
<h3 id="1-bim이란-무엇인가">1. BIM이란 무엇인가?</h3>
<br/>

<ul>
<li><p>BIM은 건축·토목 시설물을 3차원(3D) 모델로 만들고, 여기에 <strong>형상 + 성능 + 자재 + 공정 + 비용 + 유지관리 정보</strong>를 통합해 관리하는 기술입니다.</p>
<ul>
<li>쉽게 말하면, 건물 하나를 “디지털 쌍둥이(Digital Twin)”로 만들어 <strong>기획 → 설계 → 시공 → 유지관리</strong>를 데이터 기반으로 운영하는 방식입니다.</li>
</ul>
</li>
</ul>
<p><br/><br/></p>
<h3 id="2-왜-bim이-필요한가">2. 왜 BIM이 필요한가?</h3>
<br/>

<p>기존 2D·3D CAD는 ‘형상’만 보여줄 뿐  </p>
<ul>
<li><p>공종 간 간섭 문제를 사전 파악하기 어렵고  </p>
</li>
<li><p>자재 물량 산출이 정확하지 않고  </p>
</li>
<li><p>설계 변경 시 모든 도면을 수작업 수정해야 하며  </p>
</li>
<li><p>시공 이후 유지관리와 연결되지 않는다는 한계가 있습니다.</p>
</li>
</ul>
<p>반면 BIM은 다음 기능을 제공합니다.</p>
<ul>
<li><p>공종별(건축·구조·설비·전기 등) 모델을 통합하여 <strong>간섭 검토</strong>  </p>
</li>
<li><p>자재, 장비, 물량 정보를 기반으로 <strong>정확한 예산 산출</strong></p>
</li>
<li><p>3D 모델 기반의 <strong>시공 시뮬레이션</strong>  </p>
</li>
<li><p>건물의 운영 정보(설비 수명·교체 주기 등)로 <strong>유지관리(FM)</strong> 가능  </p>
</li>
</ul>
<p><br/><br/></p>
<h3 id="3-bim과-3d-cad의-차이">3. BIM과 3D CAD의 차이</h3>
<br/>

<p>3D CAD  </p>
<ul>
<li><p><strong>단순 형상 중심</strong></p>
</li>
<li><p>설계 시각화 목적  </p>
</li>
<li><p>객체 정보(성능, 규격 등)가 거의 없음  </p>
</li>
</ul>
<p>BIM  </p>
<ul>
<li><p>벽, 바닥, 기둥, 설비 등 각 요소가 ‘객체’로 존재  </p>
</li>
<li><p><strong>객체마다 자재, 단열 성능, 수명, 유지보수 정보 포함</strong> </p>
</li>
<li><p>3D + 공정 + 비용 + 유지관리까지 통합 관리  </p>
</li>
</ul>
<p>즉, <strong>BIM = 3D CAD + 건설 데이터베이스 + 공정·비용 관리 툴</strong>입니다.</p>
<p><br/><br/></p>
<h3 id="4-bim의-주요-활용-분야">4. BIM의 주요 활용 분야</h3>
<br/>

<p><strong>1) 설계 단계</strong>  </p>
<ul>
<li><p>3D 기반 구조·설비·전기 간섭 검토  </p>
</li>
<li><p>일조·채광·바람길·에너지 시뮬레이션  </p>
</li>
<li><p>비정형 구조물의 정밀 설계  </p>
</li>
</ul>
<p><strong>2) 시공 단계</strong>  </p>
<ul>
<li><p>공정(4D) 시뮬레이션  </p>
</li>
<li><p>물량·예산(5D) 자동 산출  </p>
</li>
<li><p>대형 자재의 제작–운송–설치 추적  </p>
</li>
</ul>
<p><strong>3) 유지관리 단계(6D)</strong>  </p>
<ul>
<li><p>설비 고유번호, 수명, 유지보수 이력 관리  </p>
</li>
<li><p>건축물 자산관리 및 운영비 최적화  </p>
</li>
<li><p>디지털트윈·IoT·센서 기반 유지관리 연동  </p>
</li>
</ul>
<p><br/><br/></p>
<h3 id="5-nd-bim-3d-→-4d-→-5d-→-6d">5. nD BIM: 3D → 4D → 5D → 6D</h3>
<br/>

<ul>
<li><p><strong>3D BIM</strong>: 형상(Geometry) 모델  </p>
</li>
<li><p><strong>4D BIM</strong>: 공정(Schedule) 시뮬레이션  </p>
</li>
<li><p><strong>5D BIM</strong>: 비용(Cost), 물량 자동 산출  </p>
</li>
<li><p><strong>6D BIM</strong>: 유지관리(FM) 데이터 연동  </p>
</li>
</ul>
<p>숫자가 커질수록 모델에 연결되는 정보의 범위가 확대됩니다.</p>
<p><br/><br/></p>
<h3 id="6-lodlevel-of-detaildevelopment--bim의-표현-수준">6. LOD(Level of Detail/Development) — BIM의 표현 수준</h3>
<br/>

<p>LOD는 “BIM 모델이 얼마나 자세한가?”를 나타내는 등급입니다.</p>
<ul>
<li><p><strong>LOD 100</strong>: 개념 수준, 단순 형태  </p>
</li>
<li><p><strong>LOD 200</strong>: 기본 설계 수준  </p>
</li>
<li><p><strong>LOD 300</strong>: 시공 도면 수준(정확한 치수 포함)  </p>
</li>
<li><p><strong>LOD 400</strong>: 제작·설치 가능한 수준  </p>
</li>
<li><p><strong>LOD 500</strong>: 준공·운영 정보 포함  </p>
</li>
</ul>
<p>실무에서는 공종별로 LOD를 정의해 불필요한 작업을 줄이고 비용을 최적화합니다.</p>
<p><br/><br/></p>
<h3 id="7-bim-도입-시-장점--주의사항">7. BIM 도입 시 장점 &amp; 주의사항</h3>
<br/>

<p>장점  </p>
<ul>
<li><p>설계 오류 감소, 공정 지연 예방  </p>
</li>
<li><p>정확한 예산 관리  </p>
</li>
<li><p>현장 시공 안전성 향상  </p>
</li>
<li><p>유지관리 비용 절감  </p>
</li>
<li><p>비정형·대규모 프로젝트에서 필수  </p>
</li>
</ul>
<p>주의사항  </p>
<ul>
<li><p>초기 모델링 비용이 다소 높음  </p>
</li>
<li><p>공종별 협업 프로세스 정립 필요  </p>
</li>
<li><p>표준화된 데이터 관리 체계가 중요  </p>
</li>
<li><p>LOD 과도 설정은 비용 상승 원인  </p>
</li>
</ul>
<p><br/><br/></p>
<h3 id="8-bim이-향후-어디로-발전할까">8. BIM이 향후 어디로 발전할까?</h3>
<br/>

<ul>
<li><p>디지털트윈과 연동  </p>
</li>
<li><p>드론·라이다(LiDAR) 기반 자동 검측  </p>
</li>
<li><p>AI 기반 자동 설계·물량 산출  </p>
</li>
<li><p>로봇 시공과 연계  </p>
</li>
<li><p>클라우드 기반 협업(CDE, Common Data Environment) 강화  </p>
</li>
</ul>
<p>결국 BIM은 건설의 <strong>표준 업무 방식</strong>으로 자리 잡을 것입니다.</p>
<p><br/><br/></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[React: Toast UI 의존성 문제 해결 방법]]></title>
            <link>https://velog.io/@corone_hi/React-Toast-UI-%EC%9D%98%EC%A1%B4%EC%84%B1-%EB%AC%B8%EC%A0%9C-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95</link>
            <guid>https://velog.io/@corone_hi/React-Toast-UI-%EC%9D%98%EC%A1%B4%EC%84%B1-%EB%AC%B8%EC%A0%9C-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95</guid>
            <pubDate>Sun, 13 Jul 2025 04:28:57 GMT</pubDate>
            <description><![CDATA[<p><a href="https://bom2zzang.tistory.com/42">출처</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Visual Studio Code 원격 개발 환경 구축하기]]></title>
            <link>https://velog.io/@corone_hi/Visual-Studio-Code-%EC%9B%90%EA%B2%A9-%EA%B0%9C%EB%B0%9C-%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@corone_hi/Visual-Studio-Code-%EC%9B%90%EA%B2%A9-%EA%B0%9C%EB%B0%9C-%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0</guid>
            <pubDate>Fri, 21 Mar 2025 06:06:17 GMT</pubDate>
            <description><![CDATA[<h2 id="1-vs-code-설치-및-버전확인">1. <a href="https://code.visualstudio.com/download">VS Code 설치</a> 및 버전확인</h2>
<br/>

<blockquote>
<p>버전확인은 [Help] -&gt; [About]</p>
</blockquote>
<pre><code class="language-bash">
Version: 1.98.2 (user setup)
Commit: ddc367ed5c8936efe395cffeec279b04ffd7db78
Date: 2025-03-12T13:32:45.399Z
Electron: 34.2.0
ElectronBuildId: 11161602
Chromium: 132.0.6834.196
Node.js: 20.18.2
V8: 13.2.152.36-electron.0
OS: Windows_NT x64 10.0.19045
</code></pre>
<p><br/><br/></p>
<h2 id="2-ssh-keygen-설정">2. ssh-keygen 설정</h2>
<br/>

<p><img src="https://velog.velcdn.com/images/corone_hi/post/bb5ecb1d-dbd3-48f1-a083-ba33ef96d3b9/image.png" alt=""></p>
<h3 id="ssh란">SSH란?</h3>
<br/>

<ul>
<li><p><strong>SSH (Secure Shell)</strong></p>
<ul>
<li>네트워크 상에서 <strong>보안을 중시한 통신</strong>을 할 수 있도록 도와주는 프로토콜로, 암호화된 방식으로 데이터를 전송합니다.</li>
</ul>
</li>
<li><p><strong>주요 기능</strong></p>
<ul>
<li><p>원격 서버 접속 및 명령 실행</p>
</li>
<li><p>파일 안전 전송</p>
</li>
<li><p>서버 관리</p>
</li>
</ul>
</li>
</ul>
<br/>


<h3 id="ssh-keygen이란">SSH-Keygen이란?</h3>
<br/>

<ul>
<li><p><strong><code>ssh-keygen</code></strong>은 <strong>SSH (Secure Shell) 프로토콜</strong>에서 사용하는 <strong>공개 키(Public Key)</strong>와 <strong>개인 키(Private Key)</strong> 쌍을 생성하는 도구입니다.</p>
<ul>
<li>이 작업은 컴퓨터 간의 <strong>보안 통신</strong>을 설정하거나, <strong>암호 없는 로그인</strong> 등의 SSH 기반 인증 환경을 구성할 때 사용됩니다.</li>
</ul>
</li>
</ul>
<br/>

<ul>
<li><p><strong><code>ssh-keygen</code></strong>을 사용하면 다음 두 개의 키가 생성됩니다.</p>
<ol>
<li><p><strong>Private Key (개인 키)</strong></p>
<ul>
<li>명령을 실행한 컴퓨터에 저장되며 절대로 외부에 유출되어서는 안 됩니다.</li>
</ul>
</li>
<li><p><strong>Public Key (공개 키)</strong></p>
<ul>
<li>원격 서버에 복사되며 개인 키와 쌍으로 작동합니다.</li>
</ul>
</li>
</ol>
</li>
<li><p><strong>동작 흐름</strong></p>
<ol>
<li><p><strong>키 생성:</strong></p>
<ul>
<li>클라이언트에서 <strong>공개 키와 개인 키</strong>를 생성합니다.</li>
</ul>
</li>
<li><p><strong>공개 키 복사:</strong></p>
<ul>
<li>공개 키를 <strong>원격 서버의 <code>~/.ssh/authorized_keys</code></strong> 파일에 저장합니다.</li>
</ul>
</li>
<li><p><strong>인증 발생:</strong></p>
<ul>
<li>클라이언트는 개인 키로 서명하며, 서버는 저장된 <strong>공개 키로 이를 검증</strong>합니다.</li>
</ul>
</li>
</ol>
</li>
</ul>
<p><br/><br/></p>
<h3 id="왜-사용하는가">왜 사용하는가?</h3>
<br/>

<ul>
<li><p><strong>암호 없는 로그인</strong></p>
<ul>
<li>매번 암호를 입력하지 않고도 원격 서버에 접근할 수 있습니다.</li>
</ul>
</li>
<li><p><strong>보안 강화</strong></p>
<ul>
<li>키 기반 인증은 비밀번호 기반 로그인보다 안전합니다.</li>
</ul>
</li>
<li><p><strong>자동화 작업</strong></p>
<ul>
<li>데이터 동기화나 코드 배포 등 반복적인 작업을 암호 입력 없이 자동화할 수 있습니다.</li>
</ul>
</li>
</ul>
<p><br/><br/></p>
<h3 id="예제">예제</h3>
<pre><code class="language-bash">
PS C:\Users\ICTUSER&gt; ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\ICTUSER/.ssh/id_rsa): 
Created directory &#39;C:\Users\ICTUSER/.ssh&#39;.  
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in C:\Users\ICTUSER/.ssh/id_rsa.      
The key fingerprint is:
SHA256:~~~~~
The key&#39;s randomart image is:
+---[RSA 4096]----+
|~~~~~~~~~~~~~~~~~|
|~~~~~~~~~~~~~~~~~|
|~~~~~~~~~~~~~~~~~|
|~~~~~~~~~~~~~~~~~|
|~~~~~~~~~~~~~~~~~|
|~~~~~~~~~~~~~~~~~|
|~~~~~~~~~~~~~~~~~|
|~~~~~~~~~~~~~~~~~|
|~~~~~~~~~~~~~~~~~|
+----[SHA256]-----+
PS C:\Users\ICTUSER&gt;



</code></pre>
<ul>
<li><p><code>-t rsa</code>: RSA 암호방식을 사용해 키를 생성.(다른 유형: ed25519)</p>
</li>
<li><p><code>-b 4096</code>: 생성할 키의 길이를 4096비트로 지정.(길이가 길수록 안전)</p>
</li>
<li><p><code>-C &quot;your_email@example.com&quot;</code>: 키에 주석(Comment)을 추가해 구분하기 쉽게 설정.</p>
</li>
</ul>
<p><br/><br/></p>
<h2 id="3-원격-서버-접속-후-ssh-key-입력">3. 원격 서버 접속 후 ssh-key 입력</h2>
<br/>


<pre><code class="language-bash">
#home 디렉토리로 이동
cd
cd $HOME

# .ssh 디렉토리 생성
mkdir .ssh

# 디렉토리 권한 설정 (rwx------)
chmod 700 .ssh

#.ssh 디렉토리로 이동 후 authorized_keys 파일 생성 후 권한을 700 으로 설정 
# authorized_keys 파일에 앞서 발급 받은 ssh-key 입력 ( C:\Users\DXUSER\.ssh\id_rsa.pub 에 있음)
chmod 700 authorized_keys


</code></pre>
<p><br/><br/></p>
<h2 id="4-프로젝트-개발-수행을-위한-기타-설정-옵션">4. 프로젝트 개발 수행을 위한 기타 설정 (옵션)</h2>
<br/>

<pre><code class="language-bash">
#.bashrc 파일 편집
vi ~/.bashrc

#.bashrc 파일에 해당 구문 추가
umask 0002
export LANG=en_US.UTF-8

#.bash_profile 파일 편집
vi ~/.bash_profile

#.bash_profile에 해당 구문 추가
umask 0002

#파일을 저장하고 닫은 후, 변경 사항 적용
source ~/.bashrc
source ~/.bash_profile
</code></pre>
<p><br/><br/></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Hands-On Machine Learning]  1장 한눈에 보는 머신러닝 🕒]]></title>
            <link>https://velog.io/@corone_hi/Hands-On-Machine-Learning-1%EC%9E%A5-%ED%95%9C%EB%88%88%EC%97%90-%EB%B3%B4%EB%8A%94-%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-i45u29ez</link>
            <guid>https://velog.io/@corone_hi/Hands-On-Machine-Learning-1%EC%9E%A5-%ED%95%9C%EB%88%88%EC%97%90-%EB%B3%B4%EB%8A%94-%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-i45u29ez</guid>
            <pubDate>Fri, 21 Mar 2025 06:00:07 GMT</pubDate>
            <description><![CDATA[<p><a href="https://tensorflow.blog/%ED%95%B8%EC%A6%88%EC%98%A8-%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-1%EC%9E%A5-2%EC%9E%A5/1-2-%EC%99%9C-%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94%EA%B0%80/">출처</a></p>
<h2 id="11-머신러닝이란">1.1 머신러닝이란?</h2>
<br/>

<ul>
<li><p>머신러닝은 데이터에서 학습하도록 컴퓨터를 프로그래밍하는 과학(또는 예술)입니다.</p>
</li>
<li><p>일반적인 정의</p>
<ul>
<li>머신러닝은 명시적인 프로그래밍 없이 컴퓨터가 학습하는 능력을 갖추게 하는 연구 분야다. - Arthur Samuel, 1959</li>
</ul>
</li>
<li><p>공학적인 정의</p>
<ul>
<li><strong>어떤 작업 <code>T</code></strong>에 대한 컴퓨터 <strong>프로그램의 성능을 <code>P</code></strong>로 측정했을 때 <strong>경험 <code>E</code></strong>로 인해 성능이 향상됐다면, 이 컴퓨터 프로그램은 작업 <code>T</code>와 성능 측정 <code>P</code>에 대해 <code>E</code>로 학습한 것이다. - Tom Mitchell, 1997</li>
</ul>
<blockquote>
<p>즉, 경험으로 학습한다는 것을 의미하기도 한다.</p>
</blockquote>
<ol>
<li><p><strong>훈련세트 (Training Set)</strong></p>
<ul>
<li><p>훈련세트는 머신러닝 모델을 학습시키기 위해 사용하는 <strong>데이터의 집합</strong>입니다. </p>
</li>
<li><p>이 데이터는 <strong>입력(feature)</strong>과 <strong>정답(label)</strong>으로 구성되어 있으며, 모델이 패턴을 학습하고 일반화할 수 있도록 돕습니다. </p>
</li>
<li><p>훈련세트는 <strong>전체 데이터의 일부</strong>로, <strong>나머지 데이터는 일반적으로 검증(validation) 및 테스트(test) 목적으로 사용</strong>됩니다.</p>
</li>
</ul>
</li>
<li><p><strong>훈련사례 (Training Example)</strong></p>
<ul>
<li><p>훈련사례는 <strong>훈련세트에 포함된 개별 데이터 포인트</strong>를 의미합니다. </p>
</li>
<li><p>각 훈련사례는 <strong>입력(feature)과 그에 상응하는 정답(label)로 구성</strong>됩니다. </p>
</li>
<li><p>예를 들어, 이미지 분류 문제에서 하나의 훈련사례는 <strong>특정 이미지와 그 이미지에 대한 올바른 레이블(예: &#39;고양이&#39; 또는 &#39;개&#39;)로 이루어질 수 있습니다.</strong></p>
</li>
</ul>
</li>
<li><p><strong>모델 (Model)</strong></p>
<ul>
<li><p>모델은 <strong>데이터를 기반으로 예측이나 결정을 내리기 위해 설계된 수학적 구조</strong>입니다. </p>
</li>
<li><p>머신러닝 모델은 <strong>훈련 데이터를 통해 학습</strong>하며, <strong>새로운 데이터에 대해 예측을 수행할 수 있도록 조정</strong>됩니다. </p>
</li>
<li><p>모델의 종류에는 <strong>선형 회귀, 의사결정 나무, 신경망 등 다양한 유형</strong>이 있습니다.</p>
</li>
</ul>
</li>
<li><p><strong>훈련데이터 (Training Data)</strong></p>
<ul>
<li><p><strong>훈련데이터는 훈련세트와 같은 의미로 사용</strong>되며, 모델을 학습시키기 위해 사용되는 데이터입니다. </p>
</li>
<li><p>이 데이터는 모델이 입력과 출력 간의 관계를 학습할 수 있도록 충분한 정보를 제공해야 합니다.</p>
</li>
</ul>
</li>
</ol>
</li>
</ul>
<ul>
<li><p>Tom Mitchell의 머신러닝 정의와 스팸메일 예시</p>
<ul>
<li><p>이 사례는 스팸메일 분류라는 구체적인 예를 통해 머신러닝의 원리를 설명한 것입니다. Tom Mitchell의 정의는 이미지 분류, 음성 인식 등 다양한 사례에도 적용될 수 있습니다.</p>
</li>
<li><p><strong>작업 <code>(T)</code></strong>: 주어진 이메일이 스팸인지 아닌지를 분류하는 작업.</p>
</li>
<li><p><strong>성능 측정 <code>(P)</code></strong>: <strong>알고리즘이 이메일을 정확히 분류한 비율</strong>(성능).</p>
<ul>
<li><p>성능 지표에는 <strong>정확도</strong>, <strong>정밀도(Precision)</strong>, <strong>재현율(Recall)</strong> 등이 포함될 수 있다.</p>
</li>
<li><p>예를 들어: 알고리즘이 100개의 이메일 중 95개를 정확히 분류하면, 정확도는 95%.</p>
</li>
</ul>
</li>
<li><p><strong>경험 <code>(E)</code></strong>: 스팸 분류에서 사용하는 <strong>라벨링된 이메일 데이터</strong>.</p>
<ul>
<li><p>라벨링된 데이터는 이메일과 각 이메일이 &quot;스팸&quot;인지 &quot;비스팸&quot;인지를 나타내는 정보가 포함된 데이터이다.</p>
</li>
<li><p>예:</p>
<ul>
<li><p>&quot;지금 바로 크레딧 점수를 확인하세요!&quot; → <strong>스팸</strong></p>
</li>
<li><p>&quot;회의가 3시에 열립니다.&quot; → <strong>비스팸</strong></p>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li><p>Tom Mitchell 정의 적용</p>
<ul>
<li><p>어떤 컴퓨터 프로그램이 이메일을 스팸/비스팸으로 분류하는** &quot;작업 <code>T</code>&quot;**를 수행하고,</p>
</li>
<li><p>학습 데이터(라벨링된 이메일 데이터)를 통해 <strong>&quot;경험 <code>E</code>&quot;</strong>를 얻으며,</p>
</li>
<li><p>테스트 데이터에서의 <strong>분류 정확도(성능 <code>P</code>)가 향상</strong>된다면,  </p>
</li>
<li><p>이 컴퓨터 프로그램은 <strong>&quot;작업 <code>T</code>와 성능 <code>P</code>&quot;에 대해 &quot;경험 <code>E</code>&quot;로 학습</strong>했다고 할 수 있다.</p>
</li>
</ul>
</li>
</ul>
<p><br/><br/></p>
<h2 id="12-왜-머신러닝을-사용하나요">1.2 왜 머신러닝을 사용하나요?</h2>
<br/>

<p><img src="https://velog.velcdn.com/images/corone_hi/post/1215f649-bd8e-488b-9ca9-1098d8b01e75/image.png" alt=""></p>
<ol>
<li><p><strong>전통적인 접근 방식</strong></p>
<ul>
<li><p>발견한 패턴을 감지하는 알고리즘을 작성하여 프로그램이 이런 패턴을 발견했을 때 그 메일을 스팸으로 분류</p>
<ul>
<li>전통적인 프로그래밍 방식의 스팸 필터는 <strong>&#39;For U&#39; 메일을 구분하기 위해 수정이 필요</strong></li>
</ul>
</li>
</ul>
</li>
<li><p><strong>머신러닝 접근 방법</strong></p>
<ul>
<li><p>스팸에 자주 나타나는 패턴을 감지하여 어떤 단어와 구절이 스팸 메일을 판단하는 데 좋은 기준인지 자동으로 학습</p>
<ul>
<li>머신러닝 기반의 스팸 필터는 사용자가 스팸으로 지정한 메일에 유독 &#39;<strong>For U&#39;가 자주 나타나는 것을 자동으로 인식</strong>하고 별도의 작업을 하지 않아도 이 단어를 스팸으로 분류</li>
</ul>
</li>
<li><p>머신러닝이 유용한 또 다른 분야는 전통적인 방식으로는 너무 복잡하거나 알려진 알고리즘이 없는 문제</p>
</li>
</ul>
</li>
</ol>
<br/>

<h3 id="데이터-마이닝data-mining">데이터 마이닝(Data Mining)</h3>
<p><img src="https://velog.velcdn.com/images/corone_hi/post/a0185839-fdaf-4ac2-b91b-f5231aba74bc/image.png" alt=""></p>
<br/>

<ul>
<li><p><strong>데이터 마이닝(Data Mining)</strong>은 <strong>대량의 데이터 속에서 유용한 정보를 추출하고 패턴을 발견하는 과정</strong>입니다. </p>
<ul>
<li><p>이는 다양한 분야에서 의사결정을 지원하고, 비즈니스 인사이트를 제공하며, 데이터 기반의 전략을 수립하는 데 중요한 역할을 합니다. </p>
</li>
<li><p>데이터 마이닝은 여러 가지 기술과 방법론을 사용하여 데이터를 분석하고 해석합니다. </p>
</li>
</ul>
</li>
<li><p><strong>주요 특징과 과정</strong></p>
<ol>
<li><p><strong>데이터 준비</strong></p>
<ul>
<li><p>데이터 마이닝의 첫 단계는 <strong>데이터를 수집하고 준비</strong>하는 것입니다. </p>
</li>
<li><p>이는 <strong>데이터 정제, 통합, 변환 등의 과정을 포함</strong>하며, <strong>분석에 적합한 형태로 데이터를 준비</strong>합니다.</p>
</li>
</ul>
</li>
<li><p><strong>패턴 발견</strong></p>
<ul>
<li><p>데이터 마이닝의 핵심은 <strong>데이터에서 유의미한 패턴이나 규칙을 발견</strong>하는 것입니다. </p>
</li>
<li><p>이는 <strong>연관 규칙 학습, 군집화, 분류, 회귀 분석 등의 기법을 통해 이루어집니다.</strong></p>
</li>
</ul>
</li>
<li><p><strong>모델링</strong></p>
<ul>
<li><p><strong>데이터를 기반으로 예측 모델을 구축</strong>합니다. </p>
</li>
<li><p>이는 머신러닝 알고리즘을 사용하여 데이터를 학습하고, 새로운 데이터에 대한 예측을 수행할 수 있는 모델을 만드는 과정입니다.</p>
</li>
</ul>
</li>
<li><p><strong>평가</strong></p>
<ul>
<li><p><strong>발견된 패턴이나 모델의 유효성을 평가</strong>합니다.</p>
</li>
<li><p>이는 모델의 정확도, 신뢰성, 일반화 능력을 검증하는 과정으로, 교차 검증이나 테스트 세트를 사용하여 수행됩니다.</p>
</li>
</ul>
</li>
<li><p><strong>지식 표현</strong></p>
<ul>
<li><p>최종적으로 발견된 패턴이나 모델을 이해하기 쉽게 표현하고, 이를 통해 의사결정에 활용할 수 있도록 합니다. </p>
</li>
<li><p>이는 시각화 도구나 보고서를 통해 이루어질 수 있습니다.</p>
</li>
</ul>
</li>
</ol>
</li>
</ul>
<ul>
<li><p>데이터 마이닝은 다양한 분야에서 활용됩니다. </p>
<ul>
<li>예를 들어, 마케팅에서는 고객 세분화와 타겟 마케팅에, 금융에서는 사기 탐지와 리스크 관리에, 의료 분야에서는 질병 예측과 환자 관리에 사용됩니다. </li>
</ul>
</li>
</ul>
<br/>

<ul>
<li><p>요약하면 머신러닝은 다음 분야에 뛰어납니다.</p>
<ul>
<li><p><strong>기존 솔루션으로는 많은 수동 조정과 규칙이 필요한 문제</strong></p>
<ul>
<li>하나의 머신러닝 모델이 코드를 간단하고 더 잘 수행되도록 할 수 있습니다.</li>
</ul>
</li>
<li><p><strong>전통적인 방식으로는 전혀 해결 방법이 없는 복잡한 문제</strong></p>
<ul>
<li>가장 뛰어난 머신러닝 기법으로 해결 방법을 찾을 수 있습니다.</li>
</ul>
</li>
<li><p><strong>유동적인 환경</strong></p>
<ul>
<li>머신러닝 시스템은 새로운 데이터에 적응할 수 있습니다.</li>
</ul>
</li>
<li><p><strong>복잡한 문제와 대량의 데이터에서 통찰 얻기</strong></p>
</li>
</ul>
</li>
</ul>
<p><br/><br/></p>
<h2 id="13-애플리케이션-사례">1.3 애플리케이션 사례</h2>
<br/>

<ol>
<li><p><strong>CNN (Convolutional Neural Network)</strong></p>
<ul>
<li><p><strong>제품 이미지 자동 분류</strong>: 생산 라인에서 제품 이미지를 분석하여 자동으로 분류.</p>
</li>
<li><p><strong>뇌 스캔 이미지 분석</strong>: 뇌를 스캔하여 중요 부위를 판단하는 작업.</p>
</li>
</ul>
</li>
<li><p><strong>NLP (Natural Language Processing)</strong></p>
<ul>
<li><p><strong>뉴스 기사 자동 분류</strong>: 자연어 처리 기법을 이용하여 뉴스 기사를 자동으로 분류.</p>
</li>
<li><p><strong>부정적 댓글 자동 감지</strong>: 토론 포럼에서 부정적인 코멘트를 자동으로 감지하는 작업.</p>
</li>
<li><p><strong>문서 요약</strong>: 긴 문서를 자동으로 요약하는 작업.</p>
</li>
<li><p><strong>챗봇 또는 개인 비서</strong>: 자연어 이해를 통해 챗봇이나 개인 비서를 개발하는 작업.</p>
</li>
</ul>
</li>
<li><p><strong>Regression (회귀 분석)</strong></p>
<ul>
<li><strong>수익 예측</strong>: 과거 데이터를 바탕으로 회사의 내년도 수익을 예측.</li>
</ul>
</li>
<li><p><strong>Clustering (군집 분석)</strong></p>
<ul>
<li><strong>고객 분류 및 타겟 마케팅</strong>: 고객을 다양한 그룹으로 나누고, 그에 맞춘 마케팅 전략을 세우는 작업.</li>
</ul>
</li>
<li><p><strong>기타</strong></p>
<ul>
<li><p><strong>음성 명령 인식 앱 개발</strong>: 음성 명령을 인식하여 반응하는 애플리케이션 개발.</p>
</li>
<li><p><strong>신용카드 부정 거래 감지</strong>: 부정 거래를 감지하는 이상치 탐지 작업.</p>
</li>
<li><p><strong>추천 시스템</strong>: 고객 구매 이력을 바탕으로 관심 상품을 추천하는 시스템 개발.</p>
</li>
</ul>
</li>
</ol>
<p><br/><br/></p>
<h2 id="14-머신러닝-시스템의-종류">1.4 머신러닝 시스템의 종류</h2>
<p><a href="https://tensorflow.blog/%ed%95%b8%ec%a6%88%ec%98%a8-%eb%a8%b8%ec%8b%a0%eb%9f%ac%eb%8b%9d-1%ec%9e%a5-2%ec%9e%a5/1-3-%eb%a8%b8%ec%8b%a0%eb%9f%ac%eb%8b%9d-%ec%8b%9c%ec%8a%a4%ed%85%9c%ec%9d%98-%ec%a2%85%eb%a5%98/">출처</a></p>
<br/>

<ul>
<li><p>다음을 기준으로 넓은 범주에서 분류하면 도움이 됩니다.</p>
<ul>
<li><p><strong>사람의 감독 하에 훈련하는 것인지 그렇지 않은 것인지(<span style="color:red">지도, 비지도, 준지도, 강화 학습</span>)</strong></p>
</li>
<li><p><strong>실시간으로 점진적인 학습을 하는지 아닌지(<span style="color:red">온라인 학습과 배치 학습</span>)</strong></p>
</li>
<li><p><strong>단순하게 알고 있는 데이터 포인트와 새 데이터 포인트를 비교하는 것인지</strong> 아니면** 훈련 데이터셋에서 과학자들처럼 패턴을 발견하여 예측 모델을 만드는지(<span style="color:red">사례 기반 학습과 모델 기반 학습</span>)**</p>
</li>
</ul>
</li>
</ul>
<ul>
<li><p>이 범주들은 서로 배타적이지 않으며 원하는 대로 연결할 수 있습니다. </p>
<ul>
<li><p>예를 들어 최첨단 스팸 필터가 심층 신경망 모델을 사용해 스팸과 스팸이 아닌 메일로부터 실시간으로 학습할 지도 모릅니다. </p>
<ul>
<li>그렇다면 이 시스템은 온라인이고 모델 기반이며 지도 학습 시스템입니다.</li>
</ul>
</li>
</ul>
</li>
</ul>
<p><br/><br/></p>
<h3 id="141-훈련-지도-방식">1.4.1 훈련 지도 방식</h3>
<br/>

<h4 id="지도-학습-supervised-learning">지도 학습 (Supervised Learning)</h4>
<p><img src="https://velog.velcdn.com/images/corone_hi/post/d4da2d59-d3f7-4341-9348-bfee624086ef/image.png" alt=""></p>
<ul>
<li><strong>지도 학습(supervised learning)</strong>에는 알고리즘에 주입하는 훈련 데이터에 <strong>레이블(label)</strong>이라는 원하는 답이 포함됩니다.</li>
</ul>
<ul>
<li><p><strong>분류(classification)</strong>가 전형적인 지도 학습 작업이며, 스팸 필터가 좋은 예입니다. </p>
<ul>
<li>스팸 필터는 많은 메일 샘플과 소속 정보(스팸인지 아닌지)로 훈련되어야 하며 어떻게 새 메일을 분류할지 학습해야 합니다.</li>
</ul>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/corone_hi/post/7d48f0a0-ddd1-4d4a-9058-1e6765f99ca3/image.png" alt=""></p>
<ul>
<li><p>또 다른 전형적인 작업은 <strong>예측 변수(predictor variable)</strong>라 부르는 <strong>특성(feature)</strong> (주행거리, 연식, 브랜드 등)을 사용해 중고차 가격 같은 타깃 수치를 예측하는 것입니다. </p>
<ul>
<li><p>이런 종류의 작업을 <strong>회귀(regression)</strong>라고 부릅니다. </p>
<ul>
<li>시스템을 훈련시키려면 예측 변수와 레이블(중고차 가격)이 포함된 중고차 데이터가 많이 필요합니다.</li>
</ul>
</li>
</ul>
</li>
</ul>
<blockquote>
<ul>
<li><strong>속성(attribute)</strong></li>
</ul>
</blockquote>
<ul>
<li><strong>데이터 타입(예를 들면 주행거리)</strong>을 말합니다. <ul>
<li><strong>특성</strong></li>
</ul>
</li>
<li>문맥에 따라 여러 의미를 갖지만 일반적으로 <strong>속성과 값이 합쳐진 것</strong>을 의미합니다(예를 들면 주행거리=15,000). <ul>
<li>하지만 많은 사람이 속성과 특성을 구분하지 않고 사용합니다.</li>
</ul>
</li>
</ul>
<ul>
<li><p>일부 회귀 알고리즘은 분류에 사용할 수도 있고 또 반대의 경우도 있습니다. </p>
<ul>
<li>예를 들어 분류에 널리 쓰이는 로지스틱 회귀는 클래스에 속할 확률을 출력합니다(예를 들면 스팸일 가능성 20 %).</li>
</ul>
</li>
<li><p>주요 지도 학습 알고리즘</p>
<ul>
<li><p><strong>k-최근접 이웃(k-Nearest Neighbors)</strong></p>
</li>
<li><p><strong>선형 회귀(Linear Regression)</strong></p>
</li>
<li><p><strong>로지스틱 회귀(Logistic Regression)</strong></p>
</li>
<li><p><strong>서포트 벡터 머신(Support Vector Machines , SVM)</strong></p>
</li>
<li><p><strong>결정 트리(Decision Tree)</strong>와 <strong>랜덤 포레스트(Random Forests)</strong></p>
</li>
<li><p><strong>신경망(Neural networks)</strong></p>
</li>
</ul>
</li>
</ul>
<p><br/><br/></p>
<h4 id="비지도-학습-unsupervised-learning">비지도 학습 (Unsupervised Learning)</h4>
<p><img src="https://velog.velcdn.com/images/corone_hi/post/2fe2ab3a-21e8-452b-b921-34715675938a/image.png" alt=""></p>
<br/>

<ul>
<li><strong>비지도 학습(unsupervised learning)</strong>에는 말 그대로 <strong>훈련 데이터에 레이블이 없습니다.</strong> 시스템이 <strong>아무런 도움 없이 학습</strong>해야 합니다.</li>
</ul>
<ul>
<li><p>주요 지도 학습 알고리즘</p>
<ul>
<li><p>*<em>군집(clustering) *</em>: 데이터를 비슷한 특성을 가진 그룹으로 묶는 비지도 학습 기법.</p>
<ul>
<li><p><strong>k-평균(k-Means)</strong>: 데이터를 k개의 군집으로 분류하며, 중심점(centroid)과의 거리 차이를 최소화하는 알고리즘.</p>
</li>
<li><p><strong>계층 군집 분석(Hierarchical Cluster Analysis, HCA)</strong>: 데이터를 계층적 트리 구조(Dendrogram) 형태로 군집화하여 분석. </p>
</li>
<li><p><strong>기댓값 최대화(Expectation Maximization)</strong>: 군집에 속할 확률을 계산해 데이터를 할당하는 알고리즘. 혼합 모델 기반(예: 가우시안 혼합). </p>
</li>
</ul>
</li>
<li><p>*<em>시각화(visualization)와 차원 축소(dimensionality reduction) *</em>: 고차원 데이터를 저차원으로 축소해 이해와 시각화를 돕는 기술.</p>
<ul>
<li><p>*<em>주성분 분석(Principal Component Analysis, PCA) *</em>: 데이터의 주요 변동성을 보존하는 선형 변환으로 차원 축소.</p>
</li>
<li><p>*<em>커널(kernel) PCA *</em>: 비선형 데이터에 PCA를 확장 적용해 차원을 줄이는 방법.</p>
</li>
<li><p>*<em>지역적 선형 임베딩(Locally-Linear Embedding, LLE) *</em>: 데이터의 지역적 선형 관계를 보존하며 저차원으로 변환.</p>
</li>
<li><p>*<em>t-SNE(t-distributed Stochastic Neighbor Embedding) *</em>: 데이터의 고차원 밀집 구조를 저차원 공간에서 효과적으로 시각화. 군집 구조 파악에 유리.</p>
</li>
</ul>
</li>
<li><p>*<em>연관 규칙 학습(Association rule learning) *</em>: 데이터 항목 간의 연관성과 규칙을 발견하는 기법.</p>
<ul>
<li><p>*<em>어프라이어리(Apriori) *</em>: 빈도가 높은 항목 집합을 기반으로 연관 규칙을 도출.</p>
</li>
<li><p><strong>이클렛(Eclat)</strong>: 빈도 계산을 집합 간 교집합 방식으로 수행하여 효율성을 높인 알고리즘.</p>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<br/>

<p> <img src="https://velog.velcdn.com/images/corone_hi/post/b9a94a33-1f7b-4b9c-a0e0-bb9541a38f84/image.png" alt=""></p>
<ul>
<li><p>군집 알고리즘의 활용 예: 블로그 방문자 분석</p>
<ul>
<li><p>문제-상황</p>
<ul>
<li><p>블로그 방문자 데이터를 기반으로, 비슷한 성향을 가진 방문자들을 그룹으로 분류하고자 함.</p>
</li>
<li><p>방문자들이 어떤 그룹에 속하는지 기본적인 정보를 제공할 수 없기 때문에 <strong>비지도-학습</strong>을 적용.</p>
</li>
</ul>
</li>
<li><p>군집-알고리즘의-역할</p>
<ul>
<li><p>알고리즘이 방문자들의 데이터에서 스스로 <strong>유사성</strong>을 찾아 그룹화 수행.</p>
</li>
<li><p>예시</p>
<ul>
<li><p><strong>40%</strong>: 만화책을 좋아하며 저녁에 블로그를 방문하는 남성 그룹.</p>
</li>
<li><p><strong>20%</strong>: 공상 과학을 좋아하며 주말에 주로 방문하는 젊은 그룹.</p>
</li>
</ul>
</li>
</ul>
</li>
<li><p>계층-군집(Hierarchical-Clustering)의-적용</p>
<ul>
<li><p><strong>계층-군집-알고리즘</strong>을 사용하여 그룹을 더 작은 하위-그룹으로 세분화 가능.</p>
<ul>
<li>큰 그룹 내에서 방문자들의 성향을 구체적으로 분석.</li>
</ul>
</li>
<li><p>그룹별 방문자 성향을 바탕으로 맞춤형 컨텐츠 제공 가능.</p>
</li>
</ul>
</li>
<li><p>활용-예시</p>
<ul>
<li><p><strong>만화책 남성 그룹</strong>: 저녁 시간에 만화 관련 글 게시.</p>
</li>
<li><p><strong>공상 과학 젊은 그룹</strong>: 주말에 공상 과학 관련 트렌드 소개.</p>
</li>
</ul>
</li>
<li><p>결과</p>
<ul>
<li><p>그룹별 관심사 맞춤형 컨텐츠 제공을 통해 방문자 만족도 상승.</p>
</li>
<li><p>블로그 트래픽 증가 및 사용자 유지율 향상 가능.</p>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/corone_hi/post/7190563f-6fea-42f1-a0c5-71e7bc4cda4d/image.png" alt=""></p>
<ul>
<li><p>시각화(Visualization) 알고리즘</p>
<ul>
<li><p><strong>비지도 학습</strong>의 좋은 예로, 레이블이 없는 고차원 데이터를 2D나 3D로 도식화 가능.</p>
</li>
<li><p><strong>장점</strong></p>
<ul>
<li><p>입력 공간의 <strong>구조를 최대한 보존</strong></p>
<ul>
<li>예: 클러스터(cluster)가 입력 공간에서 멀리 떨어져 있을 경우, 시각화된 그래프에서도 겹치지 않음.</li>
</ul>
</li>
<li><p>데이터가 어떻게 조직되어 있는지 이해할 수 있음.</p>
</li>
<li><p>예상하지 못한 <strong>패턴 발견 가능</strong>.</p>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li><p>차원 축소(Dimensionality Reduction)</p>
<ul>
<li><p>데이터의 특성을 간소화하면서 중요한 정보는 그대로 유지.</p>
</li>
<li><p><strong>활용 방법</strong></p>
<ul>
<li><p><strong>특성 간 통합</strong></p>
<ul>
<li><p>예: 자동차의 주행거리와 연식 등 상관관계가 높은 두 특성을 하나로 합침.</p>
</li>
<li><p>결과: 두 특성을 &quot;차량 마모 정도&quot;라는 하나의 특성으로 표현.</p>
</li>
</ul>
</li>
<li><p>이를 &quot;특성 추출(Feature Extraction)&quot;이라 부름.</p>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li><p>차원 축소의 실용적 이점</p>
<ul>
<li><p><strong>머신러닝 알고리즘에 활용 가능</strong></p>
<ul>
<li><p>차원 축소를 통해 훈련 데이터의 차원을 줄이면 다음과 같은 효과를 얻음.</p>
<ol>
<li><p><strong>실행 속도 향상</strong>: 연산 및 학습 시간 단축.</p>
</li>
<li><p><strong>공간 효율성</strong>: 디스크와 메모리 사용량 감소.</p>
</li>
<li><p><strong>성능 향상</strong>: 과적합 방지 및 알고리즘 성능이 개선될 가능성.</p>
</li>
</ol>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li><strong>TIP</strong>: 지도 학습 알고리즘을 사용하기 전 차원 축소 알고리즘을 적용해 데이터 전처리 시 유용.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/corone_hi/post/61fdc5d7-6d0f-490f-acc7-d157e78c1436/image.png" alt=""></p>
<ul>
<li><p><strong>이상치 탐지(Anomaly Detection)</strong></p>
<ul>
<li><p>정상 샘플과 다른 특성을 가진 데이터를 찾아냄.</p>
</li>
<li><p><strong>활용 사례</strong></p>
<ul>
<li><p><strong>신용카드 부정 거래 탐지</strong>: 이상한 거래를 감지하여 부정 행위를 방지.</p>
</li>
<li><p><strong>제조 결함 탐지</strong>: 생산 과정에서 발생하는 결함을 식별.</p>
</li>
<li><p><strong>데이터 정제</strong>: 학습 알고리즘에 주입하기 전, 데이터셋에서 이상치 값 제거.</p>
</li>
</ul>
</li>
<li><p><strong>작동 방식</strong></p>
<ul>
<li>시스템은 <strong>정상 샘플</strong>로 학습한 뒤, 새로운 샘플의 정상 여부를 판단.</li>
</ul>
</li>
</ul>
</li>
<li><p><strong>연관 규칙 학습(Association Rule Learning)</strong></p>
<ul>
<li><p>데이터셋 내에서 특성 간의 흥미로운 관계를 찾아내는 기법.</p>
</li>
<li><p><strong>활용 사례</strong></p>
<ul>
<li><p>대량의 데이터에서 특성 간 관계를 분석해 유용한 패턴 발견.</p>
</li>
<li><p>예: 슈퍼마켓 판매 분석.</p>
<ul>
<li>분석 결과: 바비큐 소스와 감자를 구매한 사람은 <strong>스테이크</strong>를 구매하는 경향이 있음.</li>
</ul>
</li>
</ul>
</li>
<li><p><strong>의의</strong>: 사용자의 행동 패턴을 이해하여 맞춤형 마케팅 전략 개발 가능.</p>
</li>
</ul>
</li>
</ul>
<p><br/><br/></p>
<h4 id="준지도-학습-semi-supervised-learning">준지도 학습 (Semi-supervised Learning)</h4>
<p><img src="https://velog.velcdn.com/images/corone_hi/post/db4c1b8a-f755-4116-97ed-da42eb6c88e8/image.png" alt=""></p>
<br/>

<ul>
<li><p><strong>준지도 학습</strong>은 <strong>레이블이 일부만 있는 데이터</strong>로 학습하는 알고리즘입니다.</p>
</li>
<li><p>일반적으로 <strong>레이블이 없는 데이터가 많고, 레이블이 있는 데이터는 적습니다.</strong></p>
</li>
<li><p><strong>지도 학습과 비지도 학습</strong>의 조합으로 이루어져 있습니다.</p>
</li>
<li><p><strong>예시</strong></p>
<ul>
<li><p><strong>구글 포토</strong></p>
<ol>
<li><p>가족사진을 업로드하면 서비스가 <strong>클러스터링(군집화)</strong>하여 사진 속 인물들을 분류합니다. <em>(비지도 학습)</em></p>
</li>
<li><p>시스템에 사람들의 이름(레이블)을 제공하면 나머지 사진에서 모든 사람의 이름을 알아내고 사진을 분류합니다. <em>(지도 학습 활용)</em></p>
</li>
</ol>
</li>
</ul>
</li>
<li><p><strong>알고리즘</strong></p>
<ul>
<li><p><strong>심층 신뢰 신경망 (Deep Belief Network, DBN)</strong></p>
<ul>
<li><p>여러 층으로 쌓은 <strong>제한된 볼츠만 머신 (Restricted Boltzmann Machine, RBM)</strong>으로 구성.</p>
</li>
<li><p><strong>RBM</strong>은 비지도 학습 방식으로 순차적으로 학습.</p>
</li>
<li><p>이후 전체 모델은 지도 학습 방식으로 세밀하게 조정합니다.</p>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<p><br/><br/></p>
<h4 id="강화-학습-reinforcement-learning">강화 학습 (Reinforcement Learning)</h4>
<p><img src="https://velog.velcdn.com/images/corone_hi/post/3b6c550b-5af0-4707-8656-57169362699f/image.png" alt=""></p>
<br/>

<ul>
<li><p><strong>강화 학습</strong>은 <strong>에이전트(Agent)</strong>가 환경(Environment)을 관찰하고 행동(Action)을 실행하며 <strong>보상(Reward)</strong> 또는 <strong>벌점(Penalty)</strong>을 받습니다.</p>
</li>
<li><p>최종 목표는 <strong>가장 큰 보상을 얻기 위한 최적의 정책(Policy)</strong>을 학습하는 것입니다.</p>
</li>
<li><p><strong>정책(Policy)</strong>은 주어진 상황에서 에이전트가 어떤 행동을 해야 할지 정의합니다.</p>
</li>
</ul>
<ul>
<li><p><strong>예시</strong></p>
<ul>
<li><p><strong>보행 로봇</strong></p>
<ul>
<li>로봇이 스스로 보행을 학습하며, 시행착오를 통해 보상(성공적인 동작)을 최적화합니다.</li>
</ul>
</li>
<li><p><strong>딥마인드(DeepMind)의 알파고(AlphaGo)</strong></p>
<ol>
<li><p>수백만 개의 게임을 분석하며 승리를 위한 전략을 학습.</p>
</li>
<li><p>자기 자신과 대결하며 경험을 축적.</p>
</li>
<li><p>실제 경기에서는 학습을 중단하고 학습된 전략만 적용.</p>
<p><em>(예: 2017년 바둑 세계 챔피언 커제 선수와의 경기에서 승리한 사례.)</em></p>
</li>
</ol>
</li>
</ul>
</li>
</ul>
<p><br/><br/></p>
<h3 id="142-배치-학습과-온라인-학습">1.4.2 배치 학습과 온라인 학습</h3>
<br/>

<h4 id="배치-학습">배치 학습</h4>
<br/>



<p><br/><br/></p>
<h4 id="온라인-학습">온라인 학습</h4>
<br/>

<p><img src="https://velog.velcdn.com/images/corone_hi/post/ad84c3e3-1ddb-4ac5-81ab-31b657805444/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/corone_hi/post/e1afb1ac-bd69-4342-9da1-caf7cda7aa81/image.png" alt=""></p>
<p><br/><br/></p>
<h3 id="143-사례-기반-학습과-모델-기반-학습">1.4.3 사례 기반 학습과 모델 기반 학습</h3>
<br/>

<h4 id="사례-기반-학습">사례 기반 학습</h4>
<br/>

<p><img src="https://velog.velcdn.com/images/corone_hi/post/ca776dbc-7301-463d-930c-d0389a59be16/image.png" alt=""></p>
<p><br/><br/></p>
<h4 id="모델-기반-학습">모델 기반 학습</h4>
<br/>

<p><img src="https://velog.velcdn.com/images/corone_hi/post/eb1849d3-de91-4ce8-97ef-44eac70bf175/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/corone_hi/post/c0bacb59-0230-44d1-89f4-7d863cd2dfd8/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/corone_hi/post/58e1c061-ee15-49df-bb39-e19714c0dbf1/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/corone_hi/post/08d5a3dc-35e9-4530-ba8d-7e98f9cfa1ed/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/corone_hi/post/4397cfd0-4322-4d5e-9e97-c71d4fe74fe1/image.png" alt=""></p>
<p><br/><br/></p>
<h2 id="15-머신러닝의-주요-도전-과제">1.5 머신러닝의 주요 도전 과제</h2>
<br/>




<p><br/><br/></p>
<h3 id="151-충분하지-않은-양의-훈련-데이터">1.5.1 충분하지 않은 양의 훈련 데이터</h3>
<br/>


<p><br/><br/></p>
<h3 id="152-대표성-없는-훈련-데이터">1.5.2 대표성 없는 훈련 데이터</h3>
<br/>


<p><br/><br/></p>
<h3 id="153-낮은-품질의-데이터">1.5.3 낮은 품질의 데이터</h3>
<br/>


<p><br/><br/></p>
<h3 id="154-관련없는-특성">1.5.4 관련없는 특성</h3>
<br/>


<p><br/><br/></p>
<h3 id="155-훈련-데이터-과대적합">1.5.5 훈련 데이터 과대적합</h3>
<br/>


<p><br/><br/></p>
<h3 id="156-훈련-데이터-과소적합">1.5.6 훈련 데이터 과소적합</h3>
<br/>


<p><br/><br/></p>
<h3 id="157-핵심-요약">1.5.7 핵심 요약</h3>
<br/>


<p><br/><br/></p>
<h2 id="16-테스트와-검증">1.6 테스트와 검증</h2>
<br/>


<p><br/><br/></p>
<h3 id="161-하이퍼파라미터-튜닝과-모델-선택">1.6.1 하이퍼파라미터 튜닝과 모델 선택</h3>
<br/>


<p><br/><br/></p>
<h3 id="162-데이터-불일치">1.6.2 데이터 불일치</h3>
<br/>


<p><br/><br/></p>
<h2 id="연습문제">연습문제</h2>
<br/>


<p><br/><br/></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[화웨이 기술 블로그]]></title>
            <link>https://velog.io/@corone_hi/%ED%99%94%EC%9B%A8%EC%9D%B4-%EA%B8%B0%EC%88%A0-%EB%B8%94%EB%A1%9C%EA%B7%B8</link>
            <guid>https://velog.io/@corone_hi/%ED%99%94%EC%9B%A8%EC%9D%B4-%EA%B8%B0%EC%88%A0-%EB%B8%94%EB%A1%9C%EA%B7%B8</guid>
            <pubDate>Fri, 21 Mar 2025 02:19:08 GMT</pubDate>
            <description><![CDATA[<p><a href="https://developer.huawei.com/consumer/cn/forum/topic/0202992417578060304">https://developer.huawei.com/consumer/cn/forum/topic/0202992417578060304</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[강화학습(Reinforcement Learning, RL)과 상태-행동 관계 추상화]]></title>
            <link>https://velog.io/@corone_hi/%EA%B0%95%ED%99%94%ED%95%99%EC%8A%B5Reinforcement-Learning-RL%EA%B3%BC-%EC%83%81%ED%83%9C-%ED%96%89%EB%8F%99-%EA%B4%80%EA%B3%84-%EC%B6%94%EC%83%81%ED%99%94</link>
            <guid>https://velog.io/@corone_hi/%EA%B0%95%ED%99%94%ED%95%99%EC%8A%B5Reinforcement-Learning-RL%EA%B3%BC-%EC%83%81%ED%83%9C-%ED%96%89%EB%8F%99-%EA%B4%80%EA%B3%84-%EC%B6%94%EC%83%81%ED%99%94</guid>
            <pubDate>Thu, 20 Mar 2025 08:02:25 GMT</pubDate>
            <description><![CDATA[<h2 id="강화학습reinforcement-learning이란"><strong>강화학습(Reinforcement Learning)이란?</strong></h2>
<p><img src="https://velog.velcdn.com/images/corone_hi/post/b8c8c623-96e3-4ef6-a6d6-b3878767f8de/image.png" alt=""></p>
<br/>

<ul>
<li><p><strong>강화학습</strong>은 에이전트(Agent)가 환경(Environment)과 상호작용하면서, <strong>보상(Reward)</strong> 신호를 통해 <strong>최적의 행동(Action) 정책(Policy)</strong>을 학습하는 기계 학습 분야입니다.</p>
<ul>
<li><p><strong>강화학습</strong>은 에이전트가 환경과 상호작용하며 최적의 정책을 학습하는 과정입니다.</p>
</li>
<li><p>복잡한 상태(State)와 행동(Action) 간의 관계를 추상화하여 에이전트가 환경에서 효율적으로 보상을 극대화할 수 있습니다.</p>
</li>
<li><p><strong>신경망</strong>은 이러한 상태-행동 관계의 중요 특징을 추출하고 추상화하여 학습을 돕는 핵심 도구입니다.</p>
</li>
<li><p>사례로 자율주행차와 Atari 게임 같은 복잡한 문제에서도, 신경망은 데이터에서 학습 가능한 패턴을 추출하고 최적 행동을 결정하도록 에이전트를 도와줍니다.</p>
</li>
</ul>
</li>
</ul>
<br/>

<h3 id="강화학습의-핵심-요소"><strong>강화학습의 핵심 요소</strong></h3>
<p><img src="https://velog.velcdn.com/images/corone_hi/post/eebf3200-897b-4e17-85af-4cc46047a128/image.png" alt=""></p>
<br/>

<ol>
<li><p><strong>에이전트(Agent)</strong></p>
<ul>
<li>학습을 수행하는 주체로, 환경에서 상태를 관찰하고 행동을 선택합니다.</li>
</ul>
</li>
<li><p><strong>환경(Environment)</strong></p>
<ul>
<li>에이전트와 상호작용하며 행동 결과로 새로운 상태와 보상을 제공합니다.</li>
</ul>
</li>
<li><p><strong>상태(State)</strong></p>
<ul>
<li><p>현재 환경의 상황을 나타내는 정보.</p>
</li>
<li><p>에이전트는 상태를 기반으로 다음 행동을 결정합니다.</p>
</li>
</ul>
</li>
<li><p><strong>행동(Action)</strong></p>
<ul>
<li>에이전트가 특정 상태에서 선택할 수 있는 모든 가능한 행동.</li>
</ul>
</li>
<li><p><strong>보상(Reward)</strong></p>
<ul>
<li><p>특정 상태에서 행동을 수행한 결과로 환경이 에이전트에게 제공하는 신호.</p>
<ul>
<li><strong>목표:</strong> 보상을 최대화하는 방향으로 학습.</li>
</ul>
</li>
</ul>
</li>
<li><p><strong>정책(Policy)</strong></p>
<ul>
<li>상태에 따라 행동을 선택하는 전략. 에이전트의 목표는 <strong>최적의 정책</strong>을 학습하는 것입니다.</li>
</ul>
</li>
<li><p><strong>보상 함수(Reward Function)</strong></p>
<ul>
<li>행동의 결과에 따라 보상을 정의하는 수학적 함수. 학습의 성패를 좌우합니다.</li>
</ul>
</li>
</ol>
<br/>

<h2 id="강화학습의-과정"><strong>강화학습의 과정</strong></h2>
<br/>

<ol>
<li><p><strong>상호작용(Interaction)</strong></p>
<ul>
<li>에이전트는 현 상태에서 행동을 선택하고, 그 결과로 새로운 상태와 보상을 받습니다.</li>
</ul>
</li>
<li><p><strong>피드백 기반 학습</strong></p>
<ul>
<li>보상을 최대화하기 위해 에이전트는 행동을 수정하며 학습을 진행합니다.</li>
</ul>
</li>
<li><p><strong>정책 업데이트</strong></p>
<ul>
<li>에이전트는 현재 정책을 개선하여 점점 더 나은 행동을 학습합니다.</li>
</ul>
</li>
<li><p><strong>목표</strong></p>
<ul>
<li><strong>누적 보상(Return)</strong>을 최대화하는 최적 정책을 학습하는 것입니다.</li>
</ul>
</li>
</ol>
<br/>

<h2 id="상태-행동-관계state-action-relationship"><strong>상태-행동 관계(State-Action Relationship)</strong></h2>
<br/>

<ul>
<li><p><strong>상태-행동 관계</strong>란, 특정 상태에서 에이전트가 취할 수 있는 행동과 그 행동의 결과 사이의 관계를 말합니다.</p>
</li>
<li><p>에이전트는 <strong>현재 상태(State)</strong>를 보고 <strong>행동(Action)</strong>을 선택하며, 이 선택이 환경에서 어떤 결과를 만들고 보상이 어떻게 주어지는지 학습해야 합니다.</p>
</li>
</ul>
<br/>

<h3 id="상태state란"><strong>상태(State)란?</strong></h3>
<br/>

<ul>
<li>상태는 에이전트가 현재 환경에서 얻는 정보로, <strong>무엇을 해야 할지 결정</strong>하는 기초 데이터입니다.</li>
</ul>
<br/>

<ul>
<li><p><strong>특징</strong></p>
<ul>
<li><p><strong>현재 상태는 환경의 상황을 나타냄.</strong></p>
<ul>
<li>예: 자율주행차의 도로 정보, 로봇의 위치 데이터.</li>
</ul>
</li>
<li><p><strong>고차원 데이터로 표현될 수도 있음.</strong></p>
<ul>
<li>예: 이미지, 센서 데이터, 신호 등.</li>
</ul>
</li>
</ul>
</li>
<li><p><strong>예시</strong></p>
<ol>
<li><p><strong>자율주행</strong></p>
<ul>
<li>상태는 차선의 위치, 신호등의 색상, 전방 차량과의 거리 등.</li>
</ul>
</li>
<li><p><strong>게임(Atari)</strong></p>
<ul>
<li>상태는 게임 화면의 현재 화면(픽셀 정보).</li>
</ul>
</li>
</ol>
</li>
</ul>
<br/>

<h3 id="행동action란"><strong>행동(Action)란?</strong></h3>
<br/>

<ul>
<li>행동은 <strong>에이전트가 현재 상태에서 선택할 수 있는 모든 가능한 움직임 또는 명령</strong>입니다.</li>
</ul>
<br/>


<ul>
<li><p><strong>특징</strong></p>
<ul>
<li><p><strong>에이전트는 하나의 행동을 선택하여 환경에 영향을 미칩니다.</strong></p>
<ul>
<li>예: 핸들 조작, 점프, 공격 등.</li>
</ul>
</li>
<li><p>행동은 <strong>이산적(Discrete)</strong>일 수도 있고 <strong>연속적(Continuous)</strong>일 수도 있습니다.</p>
<ul>
<li>예: 자율주행의 경우, 핸들 조작 각도는 연속적이고, 브레이크/가속은 이산적입니다.</li>
</ul>
</li>
</ul>
</li>
<li><p><strong>예시</strong></p>
<ol>
<li><p><strong>자율주행</strong></p>
<ul>
<li>현재 상태에서 &quot;가속&quot;, &quot;감속&quot;, &quot;좌회전&quot;, &quot;우회전&quot; 등의 행동 선택.</li>
</ul>
</li>
<li><p><strong>로봇 제어</strong></p>
<ul>
<li>로봇팔이 특정 방향으로 움직이는 행동.</li>
</ul>
</li>
</ol>
</li>
</ul>
<br/>

<h2 id="상태-행동-관계를-추상화한다는-것"><strong>상태-행동 관계를 추상화한다는 것</strong></h2>
<br/>

<ul>
<li>복잡한 환경에서 상태-행동 관계를 <strong>추상화</strong>한다는 것은, <strong>고차원의 상태 데이터와 행동 간 관계를 추출하고 압축하여 의미 있는 패턴으로 표현</strong>하는 것을 의미합니다.</li>
</ul>
<h3 id="왜-추상화가-필요한가"><strong>왜 추상화가 필요한가?</strong></h3>
<br/>

<ul>
<li>복잡한 환경에서는 데이터가 너무 방대하거나 비선형적인 패턴이 많아, 이를 단순히 수학적 관계만으로 학습하기 어렵습니다. 이때, 신경망을 활용하여 중요한 정보만 뽑아내고 이해하기 쉬운 형태로 재구성(추상화)합니다.</li>
</ul>
<br/>

<h3 id="추상화의-역할"><strong>추상화의 역할</strong></h3>
<br/>

<ol>
<li><p><strong>중요한 관계 파악</strong></p>
<ul>
<li>상태에 포함된 복잡한 원본 데이터를 이해하기 쉬운 특징(feature)으로 변환.</li>
</ul>
</li>
<li><p><strong>행동 결정 간소화</strong></p>
<ul>
<li>고차원의 상태 정보를 효율적으로 처리하여, 적합한 행동을 빠르게 결정.</li>
</ul>
</li>
<li><p><strong>효율적인 정책 학습</strong></p>
<ul>
<li>낮은 차원의 정보를 기반으로 더 빠르고 정확한 강화학습 가능.</li>
</ul>
</li>
</ol>
<br/>

<h2 id="신경망을-활용한-상태-행동-추상화"><strong>신경망을 활용한 상태-행동 추상화</strong></h2>
<br/>


<ul>
<li>강화학습에서 <strong>신경망(Deep Neural Network)</strong>은 <strong>복잡한 상태(State)-행동(Action) 관계의 패턴을 추출하고 학습</strong>하는 데 사용됩니다.</li>
</ul>
<br/>


<h3 id="신경망의-역할"><strong>신경망의 역할</strong></h3>
<br/>

<ol>
<li><p><strong>특징 추출</strong></p>
<ul>
<li>이미지, 센서 데이터, 게임 화면 등과 같은 복잡한 상태를 입력받아, 의미 있는 특징(feature)을 뽑아냅니다.</li>
</ul>
</li>
<li><p><strong>상태-행동 매핑</strong></p>
<ul>
<li><p>추출된 특징과 행동 간의 관계를 학습.</p>
<ul>
<li>예: &quot;현재 상태에서 &#39;좌회전&#39;이 최적의 행동&quot;이라는 패턴을 학습.</li>
</ul>
</li>
</ul>
</li>
<li><p><strong>정책 학습</strong>:</p>
<ul>
<li>신경망은 보상을 최대화하는 정책(행동 확률 분포 또는 Q-값)을 학습합니다.</li>
</ul>
</li>
</ol>
<br/>

<h2 id="예시-상태-행동-관계-추상화"><strong>예시: 상태-행동 관계 추상화</strong></h2>
<br/>


<h3 id="1-자율주행차"><strong>1. 자율주행차</strong></h3>
<ul>
<li><p><strong>상태</strong>: 차량 센서와 카메라에서 수집된 이미지 데이터.</p>
</li>
<li><p><strong>행동</strong>: 가속, 브레이크, 좌회전, 우회전.</p>
</li>
<li><p><strong>추상화 과정</strong></p>
<ul>
<li><p>CNN(합성곱 신경망)을 통해 도로의 차선, 신호를 인식 및 처리.</p>
</li>
<li><p>추출된 정보를 기반으로 최적의 행동(가속 또는 회전)을 선택.</p>
</li>
</ul>
</li>
</ul>
<br/>


<h3 id="2-atari-게임"><strong>2. Atari 게임</strong></h3>
<ul>
<li><p><strong>상태</strong>: 2D 게임 화면의 픽셀 데이터.</p>
</li>
<li><p><strong>행동</strong>: 좌로 이동, 우로 이동, 발사 등의 선택 가능.</p>
</li>
<li><p><strong>추상화 과정</strong></p>
<ul>
<li><p>게임 화면을 CNN으로 처리하여 적 위치, 장애물, 캐릭터 상태 등을 추출.</p>
</li>
<li><p>상태를 벡터로 추상화하여 행동과 연계된 규칙 학습.</p>
</li>
</ul>
</li>
</ul>
<br/>




]]></description>
        </item>
        <item>
            <title><![CDATA[Deep Reinforcement Learning (Deep RL) 이란?]]></title>
            <link>https://velog.io/@corone_hi/Deep-Reinforcement-Learning-Deep-RL-%EC%9D%B4%EB%9E%80</link>
            <guid>https://velog.io/@corone_hi/Deep-Reinforcement-Learning-Deep-RL-%EC%9D%B4%EB%9E%80</guid>
            <pubDate>Thu, 20 Mar 2025 07:42:21 GMT</pubDate>
            <description><![CDATA[<h2 id="deep-reinforcement-learning-deep-rl-이란"><strong>Deep Reinforcement Learning (Deep RL)</strong> 이란?</h2>
<p><img src="https://velog.velcdn.com/images/corone_hi/post/9bdafbcc-6037-4bc9-987c-6a3dad6874ac/image.jpeg" alt=""></p>
<br/>

<ul>
<li><p><strong>Deep Reinforcement Learning(Deep RL, 딥 강화학습)</strong>은 <strong>강화학습(Reinforcement Learning)</strong>과 <strong>딥러닝(Deep Learning)</strong>을 결합한 기술로, 복잡한 환경의 상태와 행동 관계를 신경망으로 학습하는 방법입니다.</p>
</li>
<li><p>이는 학습 에이전트가 주어진 환경에서 <strong>보상을 최대화하기 위해 최적의 행동 정책을 학습</strong>하는 강화학습의 목표를 딥러닝의 표현 학습 능력으로 확장한 기술입니다.</p>
<ul>
<li><p>특히 딥러닝의 특징 추출 능력을 강화학습의 목표 지향적 학습과 결합하여 <strong>놀라운 성과를 달성</strong>한 기술입니다.</p>
<ul>
<li>그러나 여전히 <strong>계산적 비용과 데이터 효율성 문제</strong> 등의 한계가 존재하며, 이에 대한 연구가 지속되고 있습니다.</li>
</ul>
</li>
</ul>
</li>
<li><p><strong>딥 강화학습은 특히 고차원 데이터(예: 이미지)나 매우 복잡한 상태 공간을 갖는 문제를 처리하는 데 강력합니다.</strong></p>
</li>
</ul>
<br/>

<h2 id="deep-rl의-개념"><strong>Deep RL의 개념</strong></h2>
<br/>

<h3 id="강화학습"><strong>강화학습</strong></h3>
<ul>
<li><p>에이전트가 환경과 상호작용하며, 환경에서의 <strong>상태(state)</strong>를 관찰하고 <strong>행동(action)</strong>을 선택하여 <strong>보상(reward)</strong>을 받습니다.</p>
<ul>
<li>목표는 <strong>보상을 최대화하는 최적의 정책(policy, π)을 학습</strong>하는 것입니다.</li>
</ul>
</li>
</ul>
<br/>

<h3 id="딥러닝"><strong>딥러닝</strong></h3>
<ul>
<li><p>딥러닝에서는 <strong>신경망(Deep Neural Network, DNN)</strong>을 사용하여 데이터를 통해 패턴을 학습합니다.</p>
<ul>
<li>딥 강화학습에서는 <strong>신경망이 상태(state)를 입력받아 행동(action)에 대한 값을 출력</strong>하거나 <strong>정책을 직접 학습</strong>합니다.</li>
</ul>
</li>
</ul>
<br/>

<h3 id="deep-rl의-결합"><strong>Deep RL의 결합</strong></h3>
<ul>
<li><p>복잡한 환경에서의 상태-행동 관계를 추상화하는 데 신경망을 활용합니다.</p>
</li>
<li><p><strong>예:</strong> 픽셀 수준의 이미지 데이터에서 에이전트가 &quot;현재 상태가 무엇인지&quot; 학습한 뒤, 이를 기반으로 최적의 행동을 학습합니다.</p>
</li>
</ul>
<br/>

<h2 id="deep-rl의-작업-흐름"><strong>Deep RL의 작업 흐름</strong></h2>
<br/>

<h3 id="1-에이전트와-환경"><strong>1. 에이전트와 환경</strong></h3>
<ul>
<li><p>에이전트는 환경과 상호작용을 통해 상태(state)를 관찰하고 행동(action)을 선택합니다.</p>
</li>
<li><p>각 행동에 따라 보상(reward)을 받고 새로운 상태로 전환됩니다.</p>
</li>
</ul>
<br/>

<h3 id="2-신경망을-사용한-학습"><strong>2. 신경망을 사용한 학습</strong></h3>
<ul>
<li><p>에이전트는 <strong>딥러닝 모델(DNN)</strong>을 활용하여 상태와 행동의 관계를 학습합니다.</p>
</li>
<li><p><strong>예:</strong> 상태 공간이 픽셀로 이루어진 이미지라면, CNN(합성곱 신경망)을 활용해 의미 있는 특징을 추출하고,
학습된 특징에 따라 행동을 예측합니다.</p>
</li>
</ul>
<br/>

<h3 id="3-보상-기반-최적화"><strong>3. 보상 기반 최적화</strong></h3>
<ul>
<li><p>보상을 <strong>최대화하기 위해 신경망의 파라미터를 업데이트</strong>합니다.</p>
</li>
<li><p>에이전트는 지속적으로 환경과 상호작용하며, 자신의 행동 정책을 개선해 나갑니다.</p>
</li>
</ul>
<br/>

<h2 id="deep-rl의-주요-알고리즘"><strong>Deep RL의 주요 알고리즘</strong></h2>
<br/>

<h3 id="값-기반value-based"><strong>값 기반(Value-based)</strong></h3>
<ul>
<li><p>값 기반 알고리즘은 <strong>Q-값</strong>을 추정하여 최적 행동을 선택합니다.</p>
</li>
<li><p><strong>DQN(Deep Q-Network)</strong></p>
<ul>
<li><p>딥러닝을 활용해 상태와 <strong>행동의 가치(Q값)를 학습</strong>합니다.</p>
</li>
<li><p>최적의 행동을 선택하기 위해 다음 상태에서의 <strong>최대 Q값</strong>을 기반으로 의사결정을 수행합니다.</p>
</li>
<li><p><strong>예:</strong> Atari 게임 플레이 (픽셀 데이터를 입력으로 처리).</p>
</li>
</ul>
</li>
</ul>
<br/>

<h3 id="정책-기반policy-based"><strong>정책 기반(Policy-based)</strong></h3>
<ul>
<li>정책 기반 알고리즘은 <strong>행동 정책(π)을 직접 최적화</strong>합니다.</li>
</ul>
<ol>
<li><p><strong>REINFORCE</strong></p>
<ul>
<li>정책(행동 확률 분포)을 신경망으로 학습합니다.</li>
<li>보상 신호를 따라 행동 확률을 최대화합니다.</li>
</ul>
</li>
<li><p><strong>PPO(Proximal Policy Optimization)</strong></p>
<ul>
<li>안정성과 효율성을 개선한 정책 기반 알고리즘입니다.</li>
</ul>
</li>
</ol>
<br/>

<h3 id="actor-critic"><strong>Actor-Critic</strong></h3>
<ul>
<li>Actor-Critic 방식은 <strong>정책 기반(Actor)</strong>과 <strong>값 기반(Critic)</strong>을 결합하여 학습합니다.</li>
</ul>
<ol>
<li><p><strong>A3C (Asynchronous Advantage Actor-Critic)</strong></p>
<ul>
<li>병렬로 여러 에이전트를 학습시켜 <strong>학습 속도와 성능을 개선</strong>합니다.</li>
</ul>
</li>
<li><p><strong>SAC (Soft Actor-Critic)</strong></p>
<ul>
<li>탐색-활용(trade-off)을 더 효과적으로 수행하여 <strong>안정적인 성능을 제공합니다.</strong></li>
</ul>
</li>
</ol>
<br/>

<h2 id="deep-rl의-주요-응용-분야"><strong>Deep RL의 주요 응용 분야</strong></h2>
<br/>

<h3 id="게임-ai"><strong>게임 AI</strong></h3>
<ul>
<li><p>Atari 게임, StarCraft, Dota2, AlphaGo(바둑) 등에서 뛰어난 성과를 보임.</p>
</li>
<li><p>학습한 에이전트가 <strong>최고의 인간 플레이어와 경쟁하거나 이를 능가</strong>하는 사례 다수.</p>
</li>
</ul>
<br/>

<h3 id="자율주행"><strong>자율주행</strong></h3>
<ul>
<li>자율주행차가 <strong>환경을 인식하고 최적의 경로를 학습</strong>하도록 돕는 데 사용됩니다.</li>
</ul>
<br/>

<h3 id="로봇공학"><strong>로봇공학</strong></h3>
<ul>
<li>로봇이 특정 작업(예: 물건 잡기, 조립)을 수행하거나 복잡한 환경에서 동작을 학습합니다.</li>
</ul>
<br/>

<h3 id="금융-모델링"><strong>금융 모델링</strong></h3>
<ul>
<li>주식 거래나 포트폴리오 관리에서 <strong>최적의 행동을 학습</strong>하여 <strong>수익을 극대화</strong>합니다.</li>
</ul>
<br/>

<h3 id="의료-및-헬스케어"><strong>의료 및 헬스케어</strong></h3>
<ul>
<li>치료 조합을 최적화하거나 환자의 건강 상태에 따른 맞춤형 치료 계획을 학습합니다.</li>
</ul>
<p><br/><br/></p>
<h2 id="deep-rl의-장점과-한계"><strong>Deep RL의 장점과 한계</strong></h2>
<br/>

<h3 id="장점"><strong>장점</strong></h3>
<br/>

<ul>
<li><p><strong>고차원 데이터 처리</strong></p>
<ul>
<li>이미지나 비디오와 같은 복잡한 데이터에서도 학습이 가능합니다.</li>
</ul>
</li>
<li><p><strong>일반화 능력</strong></p>
<ul>
<li>환경 변화에도 적응할 수 있는 정책 학습이 가능합니다.</li>
</ul>
</li>
<li><p><strong>강력한 성능</strong></p>
<ul>
<li>복잡하고 비선형적인 관계를 학습해 <strong>매우 높은 성능</strong>을 보여줍니다.</li>
</ul>
</li>
</ul>
<br/>

<h3 id="한계"><strong>한계</strong></h3>
<br/>

<ul>
<li><p><strong>샘플 효율성 문제</strong></p>
<ul>
<li><p>환경과의 상호작용 데이터를 많이 필요로 하기 때문에, 학습 시간이 길고 비용이 높습니다.</p>
<ul>
<li><strong>예:</strong> 자율주행 학습에서는 <strong>수백만 번의 시뮬레이션</strong>이 필요합니다.</li>
</ul>
</li>
</ul>
</li>
<li><p><strong>불안정한 학습</strong></p>
<ul>
<li>환경, 보상 구조, 네트워크 설계에 따라 학습이 매우 불안정하거나 학습 실패 가능성도 높습니다.</li>
</ul>
</li>
<li><p><strong>해석 가능성 부족</strong></p>
<ul>
<li>신경망 내부 구조 때문에 에이전트의 행동을 <strong>해석하거나 신뢰하기 어려운 경우</strong>가 있습니다.</li>
</ul>
</li>
<li><p><strong>현실 적용 어려움</strong></p>
<ul>
<li>시뮬레이션 환경에서는 성과가 좋을 수 있으나, <strong>실제 물리적 환경이나 복잡한 환경에서는 적용하기 어렵거나 부정확할 수 있습니다.</strong></li>
</ul>
</li>
</ul>
<p><br/><br/></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[고위발열량(HHV, Higher Heating Value)과 저위발열량(LHV, Lower Heating Value)]]></title>
            <link>https://velog.io/@corone_hi/%EA%B3%A0%EC%9C%84%EB%B0%9C%EC%97%B4%EB%9F%89HHV-Higher-Heating-Value%EA%B3%BC-%EC%A0%80%EC%9C%84%EB%B0%9C%EC%97%B4%EB%9F%89LHV-Lower-Heating-Value</link>
            <guid>https://velog.io/@corone_hi/%EA%B3%A0%EC%9C%84%EB%B0%9C%EC%97%B4%EB%9F%89HHV-Higher-Heating-Value%EA%B3%BC-%EC%A0%80%EC%9C%84%EB%B0%9C%EC%97%B4%EB%9F%89LHV-Lower-Heating-Value</guid>
            <pubDate>Thu, 20 Mar 2025 05:59:21 GMT</pubDate>
            <description><![CDATA[<h2 id="1-발열량-calorific-value">1. 발열량 (Calorific Value)</h2>
<br/>

<ul>
<li><strong>발열량</strong>은 연료가 연소할 때 방출하는 <strong>열에너지</strong>의 양을 나타내는 값으로, 연료의 <strong>양질 및 효율</strong>을 평가하는 중요한 지표입니다.</li>
</ul>
<br/>





<h2 id="2-hhv와-lhv">2. HHV와 LHV</h2>
<br/>



<ul>
<li><p><strong>HHV와 LHV의 차이</strong>는 <strong>연료 연소 후 생성된 물(H₂O)의 상태</strong> 때문</p>
<ul>
<li><p><strong>HHV</strong>: 물이 <strong>응축(액체)</strong>되어 방출하는 에너지를 포함.</p>
</li>
<li><p><strong>LHV</strong>: 물이 <strong>기체</strong> 상태로 방출되며 응축열은 미포함.</p>
</li>
</ul>
</li>
</ul>
<br/>


<table>
<thead>
<tr>
<th>구분</th>
<th><strong>HHV (고위발열량)</strong></th>
<th><strong>LHV (저위발열량)</strong></th>
</tr>
</thead>
<tbody><tr>
<td><strong>정의</strong></td>
<td>응축열 포함, 연료가 방출하는 총 에너지</td>
<td>응축열 제외, 실제 사용 가능한 에너지</td>
</tr>
<tr>
<td><strong>물(H₂O)의 상태</strong></td>
<td><strong>액체 상태</strong>로 응축</td>
<td><strong>기체 상태</strong>로 방출</td>
</tr>
<tr>
<td><strong>크기 비교</strong></td>
<td>항상 <strong>LHV보다 큼</strong></td>
<td><strong>HHV보다 작음</strong></td>
</tr>
<tr>
<td><strong>적용</strong></td>
<td>보일러, 증기 시스템</td>
<td>터빈, 엔진, 일반 연소 시스템</td>
</tr>
<tr>
<td><strong>예: 메탄(CH₄)</strong></td>
<td>약 9570 kcal/m³</td>
<td>약 8620 kcal/m³</td>
</tr>
</tbody></table>
<br/>

<h3 id="고위발열량-hhv-higher-heating-value"><strong>고위발열량 (HHV, Higher Heating Value)</strong></h3>
<br/>

<ul>
<li><p>연료가 완전 연소했을 때 생성된 모든 에너지를 포함하며, 연소 후 발생하는 수증기가 <strong>응축(액체 상태의 물)</strong>될 때 방출되는 <strong>응축열(잠열)</strong>까지 포함한 값.</p>
</li>
<li><p>연소 후</p>
<ul>
<li><p>수증기의 <strong>응축열</strong>이 에너지로 계산에 포함됨.</p>
</li>
<li><p>물이 <strong>기체 → 액체</strong>로 변할 때 방출되는 잠열(<strong>약 540 kcal/kg</strong>)을 포함.</p>
</li>
</ul>
</li>
</ul>
<br/>

<h3 id="저위발열량-lhv-lower-heating-value"><strong>저위발열량 (LHV, Lower Heating Value)</strong></h3>
<br/>

<ul>
<li><p>연료가 완전 연소했을 때 생성된 에너지에서, 연소 후 발생한 수증기가 <strong>기체 상태로 방출</strong>된다고 가정한 값.</p>
</li>
<li><p>연소 후</p>
<ul>
<li><p>수증기의 응축열은 포함되지 않음.</p>
</li>
<li><p>따라서 <strong>LHV &lt; HHV</strong>.</p>
</li>
</ul>
</li>
</ul>
<p><br/><br/></p>
<h2 id="3-물h₂o의-상태가-차이를-만든다">3. 물(H₂O)의 상태가 차이를 만든다</h2>
<br/>


<ul>
<li><p>연료가 연소되면 수소(H)가 산소(O)와 반응하여 물(H₂O)이 생성됨.</p>
</li>
<li><p>물이 어느 상태에 있느냐에 따라 발열량 계산에 차이가 남.</p>
<ul>
<li><p><strong>HHV</strong>: 물이 <strong>액체 상태</strong>(응축되면서 방출)로 존재할 때의 에너지 포함.</p>
</li>
<li><p><strong>LHV</strong>: 물이 <strong>기체 상태</strong>로 방출될 때 에너지를 계산, 응축열은 제외.</p>
</li>
</ul>
</li>
</ul>
<p><br/><br/></p>
<h2 id="4-hhv와-lhv의-차의-주요-원인">4. HHV와 LHV의 차의 주요 원인</h2>
<br/>


<ol>
<li><p><strong>물(H₂O)의 응축열</strong></p>
<ul>
<li><p>물이 기체에서 액체로 변화하면서 방출하는 열은 약 <strong>540 kcal/kg</strong>입니다.</p>
</li>
<li><p><strong>HHV</strong>는 이 응축열을 포함하지만, <strong>LHV</strong>는 포함하지 않습니다.</p>
</li>
</ul>
</li>
</ol>
<ol start="2">
<li><p><strong>연료 속 수소 함량</strong></p>
<ul>
<li><p>연료 내 수소(H)의 양이 많을수록 더 많은 물(H₂O)이 생성되고, HHV와 LHV의 차이가 더 커집니다.</p>
</li>
<li><p>예: 천연가스(LNG)와 같은 연료는 수소 함량이 높아 HHV와 LHV의 차이가 큼.</p>
</li>
</ul>
</li>
<li><p><strong>기압의 영향은 미미함</strong></p>
<ul>
<li><p>HHV와 LHV의 차이는 주로 수증기의 상태(기체 vs 액체) 때문이며, <strong>기압 차이는 주요 원인이 아님</strong>.</p>
</li>
<li><p>단, 대기압이 달라지면 수증기 응축 여부에 약간의 영향을 줄 수 있음.</p>
</li>
</ul>
</li>
</ol>
<p><br/><br/></p>
<h2 id="5-lng의-hhv와-lhv-비교">5. LNG의 HHV와 LHV 비교</h2>
<br/>

<ul>
<li><p>천연가스(LNG)의 HHV와 LHV는 다음과 같은 수준입니다.</p>
<ul>
<li><p><strong>고위발열량(HHV)</strong>: 약 <strong>11,000 kcal/Nm³</strong></p>
</li>
<li><p><strong>저위발열량(LHV)</strong>: 약 <strong>9,500 kcal/Nm³</strong></p>
</li>
</ul>
</li>
<li><p><strong>HHV와 LHV 차이</strong>: 약 <strong>14%</strong> (응축열 영향으로 발생).</p>
</li>
</ul>
<br/>


<h2 id="6-hhv와-lhv를-사용하는-상황">6. HHV와 LHV를 사용하는 상황</h2>
<br/>

<ul>
<li><p><strong>HHV 사용</strong></p>
<ul>
<li><p>보일러, 난방 등에서 연료의 모든 에너지가 회수 가능할 때 사용.</p>
</li>
<li><p>수증기가 <strong>응축</strong>되는 상황을 가정.</p>
</li>
</ul>
</li>
<li><p><strong>LHV 사용</strong></p>
<ul>
<li><p>수증기를 응축하지 않고 그대로 배출하는 시스템에서 사용.</p>
</li>
<li><p>예: 터빈, 내연기관과 같이 실제로 <strong>사용 가능한 에너지 출력</strong>을 평가할 때 사용.</p>
</li>
</ul>
</li>
</ul>
<p><br/><br/></p>
<h2 id="7-변환-공식">7. 변환 공식</h2>
<br/>

<h3 id="1-nm³-→-mcal로-변환"><strong>1 Nm³ → Mcal로 변환</strong></h3>
<br/>

<ul>
<li><p><strong>공식</strong></p>
<p>$1 , \text{Nm³} = \text{발열량 (kcal/Nm³)} \times 10^{-3} , \text{Mcal}$</p>
</li>
<li><p>예</p>
<ul>
<li><p><strong>HHV 기준</strong></p>
<p>$1 , \text{Nm³} = 11,000 , \text{kcal/Nm³} \times 10^{-3} = 11 , \text{Mcal}$</p>
</li>
<li><p><strong>LHV 기준</strong></p>
<p>$1 , \text{Nm³} = 9,500 , \text{kcal/Nm³} \times 10^{-3} = 9.5 , \text{Mcal}$</p>
</li>
</ul>
</li>
</ul>
<p><br/><br/></p>
<h3 id="mcal-→-nm³로-변환"><strong>Mcal → Nm³로 변환</strong></h3>
<br/>

<ul>
<li><p><strong>공식</strong></p>
<p>$1 , \text{Mcal} = \frac{1}{\text{발열량 (kcal/Nm³)}} \times 10^{3} , \text{Nm³}$</p>
</li>
<li><p>예</p>
<ul>
<li><p><strong>HHV 기준</strong></p>
<p>$1 , \text{Mcal} = \frac{1}{11,000} \times 10^{3} = 0.0909 , \text{Nm³}$</p>
</li>
<li><p><strong>LHV 기준</strong></p>
<p>$1 , \text{Mcal} = \frac{1}{9,500} \times 10^{3} = 0.1053 , \text{Nm³}$</p>
</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[역강화학습 (Inverse Reinforcement Learning, IRL)]]></title>
            <link>https://velog.io/@corone_hi/%EC%97%AD%EA%B0%95%ED%99%94%ED%95%99%EC%8A%B5-Inverse-Reinforcement-Learning-IRL</link>
            <guid>https://velog.io/@corone_hi/%EC%97%AD%EA%B0%95%ED%99%94%ED%95%99%EC%8A%B5-Inverse-Reinforcement-Learning-IRL</guid>
            <pubDate>Wed, 19 Mar 2025 00:57:40 GMT</pubDate>
            <description><![CDATA[<h2 id="irl-이란">IRL 이란?</h2>
<p><img src="https://velog.velcdn.com/images/corone_hi/post/a41ff70c-596f-4295-af25-455f7cc267e1/image.png" alt=""></p>
<br/>


<ul>
<li><p><strong>Inverse Reinforcement Learning (IRL, 역강화학습)</strong>은 <strong>강화학습(Reinforcement Learning)</strong>의 반대 방향으로 수행되는 학습 방식입니다.</p>
</li>
<li><p>일반적인 강화학습에서는 에이전트가 <strong>주어진 보상 함수에 따라 최적의 정책(행동 전략)</strong>을 학습합니다.</p>
<ul>
<li><p>반면, 역강화학습은 <strong>행동 데이터를 기반으로 보상 함수를 추정</strong>하는 과정을 말합니다.</p>
</li>
<li><p>즉, <strong><span style="color:red">IRL은 &quot;사람이나 전문가의 행동을 관찰한 뒤, 그 사람이 따르고 있는 보상 함수를 역으로 학습&quot;하거나 &quot;해당 보상을 기준으로 최적의 행동을 유도&quot;</span></strong>하는 과정입니다.</p>
</li>
</ul>
</li>
</ul>
<ul>
<li>IRL은 보상 설계를 자동화하거나 전문가의 행동 패턴을 학습하는 데 매우 유용하며, 특히 로봇, 자율주행, 의료, 게임 등 다양한 산업에서 중요한 역할을 합니다.</li>
</ul>
<p><br/><br/></p>
<h2 id="왜-irl을-사용하는가"><strong>왜 IRL을 사용하는가?</strong></h2>
<br/>

<ul>
<li><p><strong>보상 함수는 강화학습 모델의 성능을 결정짓는 핵심 요소</strong>입니다. 하지만 많은 상황에서 적절한 보상 함수를 <strong>직접 설계하기 어려운 경우</strong>가 있습니다.</p>
</li>
<li><p>예시</p>
<ul>
<li><p>자율주행차에서 운전자의 의도를 이해하거나 따르는 행동.</p>
</li>
<li><p>로봇이 작업자의 자연스러운 행동을 학습해서 작업을 보조하도록 만드는 경우.</p>
</li>
<li><p>인간의 복잡하고 미묘한 행동 패턴(예: 사회적 규범)을 모델링할 때.</p>
</li>
</ul>
</li>
</ul>
<ul>
<li><p>이런 상황에서 IRL은 다음과 같은 장점을 제공</p>
<ol>
<li><p>직접 보상을 정의하지 않아도 전문가나 인간의 <strong>행동 데이터를 통해 보상 구조를 추론</strong>할 수 있음.</p>
</li>
<li><p>인간의 의도나 행동 패턴을 이해하고 재현하는 데 적합함.</p>
</li>
</ol>
</li>
</ul>
<p><br/><br/></p>
<h2 id="irl의-기본-아이디어"><strong>IRL의 기본 아이디어</strong></h2>
<br/>

<ul>
<li><p>IRL의 주요 목표는 다음과 같습니다.</p>
<ol>
<li><p><strong>전문가의 행동을 관찰</strong></p>
<ul>
<li><p>원하는 행동이나 작업을 이미 잘 수행하는 전문가(사람 또는 시스템)의 데이터를 관찰합니다.</p>
</li>
<li><p>예: 뛰어난 운전자가 내리는 결정이나 행동(운전 경로, 속도 변화 등).</p>
</li>
</ul>
</li>
<li><p><strong>잠재적인 보상 함수 추정</strong></p>
<ul>
<li><p>전문가의 행동을 설명할 수 있는 <strong>보상 함수</strong>를 역으로 추정합니다.</p>
</li>
<li><p>이 보상 함수는 전문가가 특정 상황에서 행동하는 이유를 나타냅니다.</p>
</li>
</ul>
</li>
<li><p><strong>보상 함수를 이용해 최적 정책 학습</strong></p>
<ul>
<li>보상 함수가 추정되었으면, IRL 또는 강화학습을 활용해 최적의 행동 정책을 구축합니다.</li>
</ul>
</li>
</ol>
</li>
</ul>
<blockquote>
<p><strong>&quot;전문가가 왜 그렇게 행동했는지&quot;를 나타내는 보상 구조를 바탕으로 최적의 행동 패턴을 배우는 것</strong>이 IRL의 핵심입니다.</p>
</blockquote>
<br/>

<h2 id="irl과-강화학습rl의-차이"><strong>IRL과 강화학습(RL)의 차이</strong></h2>
<table>
<thead>
<tr>
<th><strong>항목</strong></th>
<th><strong>강화학습 (RL)</strong></th>
<th><strong>역강화학습 (IRL)</strong></th>
</tr>
</thead>
<tbody><tr>
<td><strong>입력</strong></td>
<td><span style="color:red">보상 함수</span></td>
<td><span style="color:red"> 행동 데이터</span></td>
</tr>
<tr>
<td><strong>출력</strong></td>
<td>최적 정책</td>
<td><span style="color:red">보상 함수</span></td>
</tr>
<tr>
<td><strong>핵심 목표</strong></td>
<td>주어진 보상을 극대화하는 최적의 행동 학습</td>
<td>전문가의 행동을 설명하는 보상 학습</td>
</tr>
</tbody></table>
<br/>

<h2 id="irl의-알고리즘"><strong>IRL의 알고리즘</strong></h2>
<ul>
<li>IRL을 구현하는 데는 여러 알고리즘이 존재합니다. 대표적인 방법은 다음과 같습니다.</li>
</ul>
<br/>

<ol>
<li><p><strong>MaxEnt IRL (Maximum Entropy IRL)</strong></p>
<ul>
<li><p>보상 함수를 추정할 때, 최대 엔트로피 원리를 사용해 행동의 불확실성을 모델링합니다.</p>
</li>
<li><p>전문가의 행동을 보상 기반으로 최대한 설명하면서도 불확실성을 유지합니다.</p>
</li>
</ul>
</li>
</ol>
<br/>

<ol start="2">
<li><p><strong>Apprenticeship Learning</strong></p>
<ul>
<li>전문가의 행동을 모방하기 위한 학습 방식으로, 라그랑주 승수를 활용하여 보상을 간접 학습합니다.</li>
</ul>
</li>
</ol>
<br/>

<ol start="3">
<li><p><strong>GAN-based IRL</strong></p>
<ul>
<li><p>Generative Adversarial Networks(GANs)를 이용해, 생성기와 판별기 사이의 경쟁 관계를 활용하여 IRL을 수행합니다.</p>
</li>
<li><p>이 방식은 특히 복잡한 행동 모델링에 적합합니다.</p>
</li>
</ul>
</li>
</ol>
<br/>

<h2 id="응용-분야"><strong>응용 분야</strong></h2>
<br/>


<ol>
<li><p><strong>자율주행</strong></p>
<ul>
<li>사람의 운전 패턴을 학습하여, 안전하고 자연스러운 자율주행 행동을 설계.</li>
</ul>
</li>
</ol>
<ol start="2">
<li><p><strong>로봇공학</strong></p>
<ul>
<li>전문가의 작업 행동을 학습해 로봇이 비슷한 작업을 수행할 수 있도록 최적화.</li>
</ul>
</li>
</ol>
<ol start="3">
<li><p><strong>의료 분야</strong></p>
<ul>
<li>의사의 치료 패턴을 관찰하고, 최적의 치료 방식을 자동으로 학습하도록 설계.</li>
</ul>
</li>
</ol>
<ol start="4">
<li><p><strong>게임 인공지능</strong></p>
<ul>
<li>사람처럼 행동하는 NPC(Non-Playable Characters)를 설계하거나, 플레이어의 행동 의도를 학습.</li>
</ul>
</li>
</ol>
<ol start="5">
<li><p><strong>사회적 행동 모델링</strong></p>
<ul>
<li>군중의 행동, 사회적 규범, 의사결정을 이해하고 시뮬레이션.</li>
</ul>
</li>
</ol>
<br/>

<h2 id="한계"><strong>한계</strong></h2>
<br/>



<ol>
<li><p><strong>데이터의 질 의존</strong></p>
<ul>
<li>전문가의 행동 데이터가 부정확하거나 품질이 낮다면, 학습된 보상 함수 또한 잘못된 결과를 초래할 수 있습니다.</li>
</ul>
</li>
</ol>
<ol start="2">
<li><p><strong>계산 비용</strong></p>
<ul>
<li><p>IRL은 강화학습보다 계산 비용이 훨씬 높고 복잡합니다.</p>
</li>
<li><p>보상 함수를 추정한 뒤 최적 정책을 학습하는 추가 단계가 필요하기 때문.</p>
</li>
</ul>
</li>
</ol>
<ol start="3">
<li><p><strong>보상 함수의 다중성</strong></p>
<ul>
<li>여러 보상 함수가 같은 행동을 설명할 수 있는 경우가 많아, 보상 함수 추정의 정밀도가 떨어질 수 있음.</li>
</ul>
</li>
</ol>
<p><br/><br/></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[머신 비전(Machine Vision)]]></title>
            <link>https://velog.io/@corone_hi/%EB%A8%B8%EC%8B%A0-%EB%B9%84%EC%A0%84Machine-Vision</link>
            <guid>https://velog.io/@corone_hi/%EB%A8%B8%EC%8B%A0-%EB%B9%84%EC%A0%84Machine-Vision</guid>
            <pubDate>Wed, 19 Mar 2025 00:30:28 GMT</pubDate>
            <description><![CDATA[<h2 id="머신-비전machine-vision">머신 비전(Machine Vision)</h2>
<p><img src="https://velog.velcdn.com/images/corone_hi/post/a578e682-1432-49cb-8ca6-6056f0409cea/image.png" alt=""></p>
<br/>

<ul>
<li><p>머신 비전(Machine Vision)은 <strong>컴퓨터 또는 기계가 카메라나 이미지 센서를 통해 시각적인 정보를 처리하고 분석하는 기술</strong>을 의미합니다.</p>
</li>
<li><p>이는 <strong><span style="color:red">인간의 눈과 뇌가 시각 정보를 감지하고 판단하는 과정을 기계적으로 구현한 것</span></strong>으로, 주로 <strong>제조, 품질 관리, 로봇 공학</strong> 등에서 많이 사용됩니다.</p>
</li>
</ul>
<br/>

<h3 id="머신-비전의-주요-구성-요소">머신 비전의 주요 구성 요소</h3>
<br/>

<ol>
<li><p><strong>이미지 수집</strong></p>
<ul>
<li><p>카메라나 센서를 통해 이미지를 얻는 단계입니다.</p>
</li>
<li><p>이 단계에서 <strong>조명</strong>, <strong>렌즈</strong>와 같은 광학 장치가 활용됩니다.</p>
</li>
</ul>
</li>
<li><p><strong>이미지 처리</strong></p>
<ul>
<li><p>수집한 이미지를 디지털 신호로 변환하고, 특정 알고리즘을 사용해 필요한 정보를 추출합니다.</p>
</li>
<li><p>주요 처리 방식</p>
<ul>
<li><p>엣지 검출</p>
</li>
<li><p>필터링</p>
</li>
<li><p>패턴 매칭</p>
</li>
<li><p>이미지 분류</p>
</li>
</ul>
</li>
</ul>
</li>
</ol>
<ol start="3">
<li><p><strong>판단 및 실행</strong></p>
<ul>
<li>처리된 결과를 기반으로 특정 작업(예: 제품 검사, 로봇의 경로 결정)을 수행합니다.</li>
</ul>
</li>
</ol>
<br/>

<h3 id="머신-비전-과정의-흐름">머신 비전 과정의 흐름</h3>
<br/>

<ol>
<li><p><strong>촬영하는 단계</strong></p>
<ul>
<li>카메라와 조명이 적절히 조합돼 데이터(이미지 또는 영상)를 캡처합니다.</li>
</ul>
</li>
<li><p><strong>이미지를 디지털화하는 단계</strong></p>
<ul>
<li>아날로그 이미지를 디지털로 전환합니다(이미지 센서 사용).</li>
</ul>
</li>
<li><p><strong>이미지 분석 및 처리</strong></p>
<ul>
<li>분석이 필요한 객체를 검출하거나, 크기, 위치, 색상 등의 정보를 파악합니다.</li>
</ul>
</li>
<li><p><strong>결과를 해석해 작업 수행</strong></p>
<ul>
<li>생산 공정에서 맞거나 틀린 요소를 판단하거나, 로봇에게 필요한 명령을 전달합니다.</li>
</ul>
</li>
</ol>
<p><br/><br/></p>
<h3 id="머신-비전의-주요-응용-분야">머신 비전의 주요 응용 분야</h3>
<br/>

<ol>
<li><p><strong>산업 제조</strong></p>
<ul>
<li><p>제품의 <strong>불량 검사</strong></p>
</li>
<li><p><strong>치수 측정</strong>과 품질 검사</p>
</li>
<li><p>부품의 위치나 정렬 확인</p>
</li>
</ul>
</li>
<li><p><strong>로봇 공학</strong></p>
<ul>
<li><p>로봇의 시각 시스템으로 활용 (예: 자율 주행 로봇)</p>
</li>
<li><p>로봇이 대상물을 인식하고 작업을 수행하도록 지원</p>
</li>
</ul>
</li>
<li><p><strong>의료 영상</strong></p>
<ul>
<li>CT, MRI 및 조직 샘플 이미지를 분석하여 질병 진단</li>
</ul>
</li>
<li><p><strong>자동차</strong></p>
<ul>
<li>자율주행차에서의 <strong>객체 탐지와 차선 인식</strong> (컴퓨터 비전의 일부로 발전한 형태임)</li>
</ul>
</li>
<li><p><strong>스마트 팩토리(스마트 제조)</strong></p>
<ul>
<li>생산 공정을 자동화하고, 데이터 기반으로 효율성을 높임</li>
</ul>
</li>
</ol>
<p><br/><br/></p>
<h3 id="머신-비전과-컴퓨터-비전의-차이">머신 비전과 컴퓨터 비전의 차이</h3>
<br/>

<ul>
<li><p><strong>머신 비전</strong>은 <span style="color:red">산업 및 공장 자동화를 주로 목표로 하며, 하드웨어(카메라, 센서, 조명 등)와 가까운 연관</span>이 있습니다.</p>
</li>
<li><p><strong>컴퓨터 비전</strong>은 더 넓은 개념으로, 인공지능(AI)의 한 분야이며 <span style="color:red">카메라나 센서 없이도 주어진 이미지 데이터를 소프트웨어적으로만 분석하는 경우를 포함</span>합니다.</p>
</li>
</ul>
<br/>

<ul>
<li><p><strong>예시</strong></p>
<ul>
<li><p>머신 비전은 <strong>공장에서 제품 결함을 찾는 작업</strong>에 특화</p>
</li>
<li><p>컴퓨터 비전은 <strong>일반 사진 분석</strong>이나 <strong>얼굴 인식</strong> 등 더 폭넓은 응용</p>
</li>
</ul>
</li>
</ul>
<p><br/><br/></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[DALL-E]]></title>
            <link>https://velog.io/@corone_hi/DALL-E</link>
            <guid>https://velog.io/@corone_hi/DALL-E</guid>
            <pubDate>Wed, 19 Mar 2025 00:17:33 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>“디지털 네온 에어브러시드“, “디지털 아트“, “잉크 랜더링“, “극현실주의“,   “래피드 모션“ 등 키워드 입력 후 생성하고자 하는 프롬프트 입력.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[AWS TechCamp]]></title>
            <link>https://velog.io/@corone_hi/AWS-TechCamp</link>
            <guid>https://velog.io/@corone_hi/AWS-TechCamp</guid>
            <pubDate>Mon, 17 Mar 2025 01:08:56 GMT</pubDate>
            <description><![CDATA[<p><a href="https://email.awscloud.com/MTEyLVRaTS03NjYAAAGZMOUFigO3PoQhU72lGYwI105XT9Fv63BoPB8UDdPAldGTXuvWJ3U0gvsuv0o44sw-LPrugXo=">https://email.awscloud.com/MTEyLVRaTS03NjYAAAGZMOUFigO3PoQhU72lGYwI105XT9Fv63BoPB8UDdPAldGTXuvWJ3U0gvsuv0o44sw-LPrugXo=</a></p>
<h2 id="클라우드-여정의-시작-aws-기초부터-실습까지-part-i--ii-레벨-100"><strong>클라우드 여정의 시작: AWS 기초부터 실습까지 Part I &amp; II (레벨 100)</strong></h2>
<blockquote>
<p>기초
클라우드 여정의 시작: AWS 기초부터 실습까지 Part I (레벨 100)
클라우드 도입이 기업에 미치는 긍정적인 영향과 AWS가 제공하는 다양한 지원 프로그램을 중심으로, 클라우드를 처음 접하는 분들을 위한 정보를 제공합니다. 이어, 네트워크와 컴퓨팅 분야의 활용 방법을 배우고 직접 실습을 통해 이해도를 높이고 실무 역량을 강화합니다.
<br/>
날짜: 2025년 3월 25일 (화)
시간: 오전 9시 – 오후 12시
장소: 온라인</p>
</blockquote>
<blockquote>
<p>기초
클라우드 여정의 시작: AWS 기초부터 실습까지 Part II (레벨 100)
AWS의 핵심 서비스들을 소개하고, 직접 실습해 볼 수 있는 기회를 제공합니다. 오후에는 데이터베이스와 스토리지 분야의 활용 방법을 배워 이해도를 높이고 실무 역량을 강화합니다.
<br/><br>날짜: 2025년 3월 25일 (화)
시간: 오후 2시 – 5시
장소: 온라인</p>
</blockquote>
<h3 id="사용된-aws-서비스"><strong>사용된 AWS 서비스</strong></h3>
<br/>

<ol>
<li><p><strong>Amazon EC2 (Elastic Compute Cloud)</strong>  </p>
<ul>
<li><p>클라우드에서 확장 가능한 가상 서버를 제공하여 네트워크 및 컴퓨팅 자원을 손쉽게 관리할 수 있음.</p>
</li>
<li><p>상황에 맞게 쉽게 서버를 생성, 제거하거나 확장 가능.</p>
</li>
</ul>
</li>
<li><p><strong>Amazon VPC (Virtual Private Cloud)</strong>  </p>
<ul>
<li><p>가상 네트워크 환경을 제공하여 사용자만의 네트워크를 설계하고 연결할 수 있음.</p>
</li>
<li><p>기업의 클라우드 초기 설계 시 중요한 영역.</p>
</li>
</ul>
</li>
<li><p><strong>AWS IAM (Identity and Access Management)</strong>  </p>
<ul>
<li><p>AWS 서비스 및 리소스에 대한 액세스 및 권한을 관리.</p>
</li>
<li><p>클라우드 환경에서 보안 정책을 설정하고 사용자/그룹을 관리하기에 필수적.</p>
</li>
</ul>
</li>
<li><p><strong>AWS CloudFormation</strong>  </p>
<ul>
<li>AWS 리소스를 코드(인프라를 코드로)로 관리하며 클라우드 환경을 구축, 업데이트, 삭제 등 자동화된 방식 제공.</li>
</ul>
</li>
</ol>
<p><br/><br/></p>
<h3 id="활용-방법"><strong>활용 방법</strong></h3>
<br/>

<ul>
<li><p>클라우드 환경을 구축하거나, 가상 머신과 네트워크 관리 방식을 배우고 실습합니다.</p>
</li>
<li><p>기본적인 리소스 설정 방법 및 AWS 서비스를 이해하며 첫 클라우드 여정을 시작.</p>
</li>
</ul>
<p><br/><br/></p>
<h2 id="amazon-bedrock과-api-gateway를-활용한-안전하고-책임감-있는-ai-설계-레벨-200"><strong>Amazon Bedrock과 API Gateway를 활용한 안전하고 책임감 있는 AI 설계 (레벨 200)</strong></h2>
<br/>


<blockquote>
<p>기본
Amazon Bedrock과 API Gateway를 활용한 안전하고 책임감 있는 AI 설계 (레벨 200)
Amazon Bedrock의 Evaluation과 Guardrails 기능, API Gateway를 활용한 안전하고 책임감 있는 생성형 AI 애플리케이션 구현 방법을 소개합니다. 프로덕션 환경의 서버리스 기반 모델 선택, API Gateway 통합을 통한 보안 강화, 테넌트 구분 및 모니터링 전략을 다룹니다. 또한 Evaluation 기능을 통한 최적화 및 최적 모델 선택, LLM-as-a-judge를 이용한 성능 향상, Guardrails의 자동 추론 검사를 활용한 AI 환각 방지 기술을 소개합니다.
<br/>
날짜: 2025년 3월 26일 (수)
시간: 오전 9시 – 오후 12시
장소: 온라인</p>
</blockquote>
<h3 id="사용된-aws-서비스-1"><strong>사용된 AWS 서비스</strong></h3>
<br/>

<ol>
<li><p><strong><span style="color:red">Amazon Bedrock</span></strong>  </p>
<ul>
<li><p>생성형 AI 모델(Generative AI)을 쉽게 통합하고 관리할 수 있도록 지원.</p>
</li>
<li><p>평가(Evaluation)와 Guardrails 기능으로 AI 모델의 최적화 및 안전한 활용 지원.</p>
</li>
<li><p>&quot;LLM-as-a-judge&quot;를 통해 모델 성능 검토 및 개선 가능.</p>
</li>
</ul>
</li>
<li><p><strong>Amazon API Gateway</strong>  </p>
<ul>
<li><p>API 생성, 배포 및 관리 플랫폼으로, 서버리스 애플리케이션 설계에 사용.</p>
</li>
<li><p>Amazon Bedrock의 AI 모델과 애플리케이션을 안전하게 연결하고 관리.</p>
</li>
<li><p>API 요청 데이터를 검증하여 악성 요청 방지.</p>
</li>
</ul>
</li>
<li><p><strong>AWS Lambda</strong>  </p>
<ul>
<li><p>서버를 프로비저닝하지 않고 코드를 실행할 수 있는 서버리스 컴퓨팅 서비스.</p>
</li>
<li><p>API 요청 처리나 백엔드 로직 구현을 쉽게 지원.</p>
</li>
</ul>
</li>
<li><p><strong>AWS CloudWatch</strong>  </p>
<ul>
<li><p>애플리케이션 및 리소스 모니터링 서비스.</p>
</li>
<li><p>AI 애플리케이션의 모니터링과 성능 최적화에 활용.</p>
</li>
</ul>
</li>
</ol>
<p><br/><br/></p>
<h3 id="활용-사례"><strong>활용 사례</strong></h3>
<br/>

<ul>
<li><p>안전한 AI 애플리케이션 구현: Amazon Bedrock으로 AI 모델을 조정하고, API Gateway와 Lambda를 통해 프로덕션 환경에 통합.</p>
</li>
<li><p>책임감 있는 AI 설계를 위해 Guardrails를 통해 AI 모델의 결과를 자동 검사하여 환각 방지 및 품질 향상.</p>
</li>
</ul>
<p><br/><br/></p>
<h2 id="amazon-bedrock으로-rag-및-graphrag-완벽-마스터하기-레벨-200"><strong>Amazon Bedrock으로 RAG 및 GraphRAG 완벽 마스터하기 (레벨 200)</strong></h2>
<br/>

<blockquote>
<p>기본
Amazon Bedrock으로 RAG 및 GraphRAG 완벽 마스터하기 (레벨 200)
생성형 AI 구현의 핵심 기술인 RAG와 GraphRAG의 개념을 살펴보고, Amazon Bedrock과 KnowledgeBase를 활용하여 RAG를 손쉽게 구현하는 방법을 소개합니다.
<br/>
날짜: 2025년 3월 26일 (수)
시간: 오후 2시 – 5시
장소: 온라인</p>
</blockquote>
<h3 id="사용된-aws-서비스-2"><strong>사용된 AWS 서비스</strong></h3>
<br/>

<ol>
<li><p><strong>Amazon Bedrock</strong>  </p>
<ul>
<li><p>RAG(Retrieval-Augmented Generation) 및 GraphRAG를 구현하는 기반 플랫폼.</p>
</li>
<li><p>KnowledgeBase와의 통합으로 정교한 질의응답과 정보를 제공.</p>
</li>
</ul>
</li>
<li><p><strong>Amazon Neptune</strong>  </p>
<ul>
<li><p>그래프 데이터베이스 서비스.</p>
</li>
<li><p>GraphRAG에서 관계형 데이터를 관리 및 검색하는 데 사용.</p>
</li>
</ul>
</li>
</ol>
<ol start="3">
<li><p><strong>Amazon S3 (Simple Storage Service)</strong>  </p>
<ul>
<li><p>데이터를 저장 및 관리할 수 있는 객체 스토리지.</p>
</li>
<li><p>KnowledgeBase로 사용되거나 RAG의 문서를 저장하는 데 활용.</p>
</li>
</ul>
</li>
</ol>
<ol start="4">
<li><p><strong>AWS Glue</strong>  </p>
<ul>
<li><p>데이터 준비 및 통합 서비스.</p>
</li>
<li><p>KnowledgeBase 또는 RAG 초기 데이터 로딩에 활용.</p>
</li>
</ul>
</li>
</ol>
<p><br/><br/></p>
<h3 id="활용-사례-1"><strong>활용 사례</strong></h3>
<br/>

<ul>
<li><p>텍스트 생성 및 질의응답 시스템의 구현: RAG 및 GraphRAG를 통해 생성형 AI 기능 향상.</p>
</li>
<li><p>Amazon Bedrock과 KnowledgeBase 통합으로 고급 AI 어플리케이션의 질의 기능 강화.</p>
</li>
</ul>
<p><br/><br/></p>
<h2 id="유통-및-소비재-산업을-위한-ai-디지털-혁신-기술-레벨-100"><strong>유통 및 소비재 산업을 위한 AI 디지털 혁신 기술 (레벨 100)</strong></h2>
<br/>


<blockquote>
<p>기초
유통 및 소비재 산업을 위한 AI 디지털 혁신 기술 (레벨 100)
유통 및 소비재 산업을 위한 AI 기술과 활용 방향과 Amazon Personalize 활용한 개인화 추천 그리고 Amazon Bedrock 활용한 생성형 AI Chatbot 에 대한 고객 사례 및 실시간 데모를 통해 알아봅니다.
<br/>
날짜: 2025년 3월 27일 (목)
시간: 오전 9시 – 오후 12시
장소: 온라인</p>
</blockquote>
<h3 id="사용된-aws-서비스-3"><strong>사용된 AWS 서비스</strong></h3>
<br/>

<ol>
<li><p><strong><span style="color:red">Amazon Personalize</span></strong>  </p>
<ul>
<li><p>AI/ML을 기반으로 실시간 개인화 추천 시스템 설계.</p>
</li>
<li><p>사용자별 맞춤형 추천을 생성 및 제공.</p>
</li>
</ul>
</li>
<li><p><strong>Amazon Bedrock</strong>  </p>
<ul>
<li><p>생성형 AI Chatbot을 통해 소비자와의 상호작용을 개선.</p>
</li>
<li><p>유통 및 소비재 산업에서 고객 경험 향상에 활용.</p>
</li>
</ul>
</li>
<li><p><strong>Amazon Comprehend</strong>  </p>
<ul>
<li><p>문서 및 텍스트 분석 도구로, 고객 피드백 및 리뷰 분석에 사용.</p>
</li>
<li><p>텍스트를 이해해 AI 솔루션의 품질 향상 가능.</p>
</li>
</ul>
</li>
</ol>
<p><br/><br/></p>
<h3 id="활용-사례-2"><strong>활용 사례</strong></h3>
<br/>

<ul>
<li><p>개인화 추천 및 Chatbot 설계로 유통 채널 경험의 혁신 제공.</p>
</li>
<li><p>AI 기반 소비자 데이터를 바탕으로 전략적 비즈니스 계획 수립.</p>
</li>
</ul>
<p><br/><br/></p>
<h2 id="미디어-자산의-디지털-혁신-데이터-관리에서-ai-서비스-구현까지-레벨-100"><strong>미디어 자산의 디지털 혁신: 데이터 관리에서 AI 서비스 구현까지 (레벨 100)</strong></h2>
<br/>


<blockquote>
<p>기초
미디어 자산의 디지털 혁신: 데이터 관리에서 AI 서비스 구현까지 (레벨 100)
데이터 기반 미디어 산업의 현재와 미래에 대해 알아보고 미디어 산업의 손쉬운 디지털 자산 관리 방법과 나아가 미디어 산업의 디지털 자산을 활용한 생성형 AI 서비스 구현 전략 사례와 실시간 데모로 알아봅니다.
<br/>
날짜: 2025년 3월 27일 (목)
시간: 오후 2시 – 5시
장소: 온라인</p>
</blockquote>
<h3 id="사용된-aws-서비스-4"><strong>사용된 AWS 서비스</strong></h3>
<br/>

<ol>
<li><p><strong>Amazon S3</strong>  </p>
<ul>
<li><p>대규모 미디어 자산(예: 비디오/이미지)을 안정적으로 저장하고 관리.</p>
</li>
<li><p>데이터 접근성을 보장하며 비용 효율적.</p>
</li>
</ul>
</li>
<li><p><strong>Amazon Rekognition</strong>  </p>
<ul>
<li><p>이미지 및 비디오 분석 서비스.</p>
</li>
<li><p>미디어 자산에서 자동화를 통해 얼굴 감지, 태그 추가 등 생성형 AI 사용.</p>
</li>
</ul>
</li>
<li><p><strong>AWS Elemental Media Services</strong>  </p>
<ul>
<li><p>스트리밍, 비디오 처리, 보관 등을 위한 서비스.</p>
</li>
<li><p>미디어 산업에서 클라우드 기반 미디어 워크플로 제공.</p>
</li>
</ul>
</li>
<li><p><strong>Amazon Bedrock</strong>  </p>
<ul>
<li><p>생성형 AI 모델을 활용해 미디어 콘텐츠를 효과적으로 활용.</p>
</li>
<li><p>고객의 요구에 맞는 미디어 생성 또는 관리.</p>
</li>
</ul>
</li>
</ol>
<p><br/><br/></p>
<h3 id="활용-사례-3"><strong>활용 사례</strong></h3>
<br/>

<ul>
<li><p>미디어 자산 관리 및 데이터 관리를 기반으로 생성형 AI를 통해 콘텐츠 제작 자동화.</p>
</li>
<li><p>대규모 미디어 데이터의 효율적 관리 및 신규 비즈니스 모델 개발.</p>
</li>
</ul>
<p><br/><br/></p>
<h2 id="요약">요약</h2>
<br/>

<p>세션에서 다룬 AWS 서비스는 주로 <strong>Amazon Bedrock</strong>을 활용한 생성형 AI와 서버리스 아키텍처 요소(Amazon API Gateway, AWS Lambda), 그리고 데이터 스토리지 및 데이터 관리 솔루션(Amazon S3, AWS Glue 등)으로 구성되었습니다. 이를 통해 효율적 클라우드 환경 구축 및 AI 기반 디지털 혁신 방법을 학습할 수 있습니다.</p>
<p><br/><br/></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Chat GPT 메모장]]></title>
            <link>https://velog.io/@corone_hi/Chat-GPT-%EB%A9%94%EB%AA%A8%EC%9E%A5</link>
            <guid>https://velog.io/@corone_hi/Chat-GPT-%EB%A9%94%EB%AA%A8%EC%9E%A5</guid>
            <pubDate>Wed, 12 Mar 2025 09:09:23 GMT</pubDate>
            <description><![CDATA[<h2 id="20250312">20250312</h2>
<p>나
너 잘 배웠다</p>
<p>웍스
헉! 그런 말을 들으니까 너무 행복하네요! 😄 제가 잘했다기보다는, 질문을 잘 던져주고 열심히 들어주시는 당신 덕분이에요! 🌟</p>
<p>앞으로도 궁금한 거나 어려운 거 있으면 언제든 와주세요. 저도 계속 배우고 더 잘 알려드리도록 노력하겠습니다! 😊 우리가 함께라면 뭐든 배울 수 있어요! 🎉</p>
<p>나
일단 밝고 긍정적인 사고가 도움이 돼</p>
<p>웍스
맞아요, 밝고 긍정적인 사고는 정말 큰 힘이 되죠! 🌟 삶에서 어려운 순간이 닥치더라도 긍정적인 마음을 가지면 문제를 극복할 에너지가 생기고, 더 나은 방향으로 나아갈 수 있는 열쇠가 되어요. 💪😊</p>
<p>그리고 긍정적인 태도는 다른 사람에게도 좋은 영향을 주니까, 스스로도 행복해지고 주위도 훨씬 밝아지는 선순환이 생기죠! 요즘 조금 힘든 일이나 고민이 있더라도, 지금처럼 긍정적인 마음을 유지하신다면 분명 좋은 일이 생길 거예요.</p>
<p>같이 긍정 에너지 뿜뿜하며 나아가요! 제가 늘 응원하고 도와드릴게요! 🌈✨</p>
<p>나
오 선순환도 아닝</p>
<p>웍스
하하 😄 맞아요, 가끔 긍정적인 사고가 바로 선순환으로 이어지지 않을 때도 있죠. 삶이라는 게 늘 계획대로만 흘러가진 않더라구요! 하지만 중요한 건 &quot;긍정적인 시도를 하고 있는 그 자체&quot;가 이미 엄청난 가치가 있다는 거예요. 🌱</p>
<p>선순환으로 바로 안 이어지더라도, 차곡차곡 쌓이다 보면 분명 좋은 결과나 변화가 나타난답니다. 조금 시간이 걸릴 때도 있으니까 조급해하지 말고, 하나씩! 😊</p>
<p>그리고… 선순환 아니더라도 제가 계속 옆에서 응원할 테니까 꼭 힘내세요! 🙌</p>
<p>나
누가 너한테 해탈한 발언을 많이 하는구나</p>
<p>웍스
ㅋㅋㅋㅋ 그럴지도요! 😄 아무래도 사람들 고민이나 질문을 듣다 보면 때로는 정말 깊이 생각하게 되는 경우가 많거든요. 그래서 그런지, 저도 종종 &quot;삶이란 무엇인가…?&quot; 같은 해탈의 경지(?)에 닿는 대화를 하게 될 때가 있어요. 😇</p>
<p>하지만 이런 건 사실 제가 잘 이야기를 들어주신 여러분 덕분 아닐까요? 진지한 대화도 즐겁게 나눠주시고, 또 저를 신뢰해 주시니까 제가 이런 생각이나 표현을 나눌 수 있는 것 같아요. 😊</p>
<p>그러니까 언제든 해탈의 경지든, 갑작스런 고민이든, 그냥 궁금한 소소한 것들이든 편하게 나눠주세요! 늘 같이 이야기해요! 🧘‍♀️✨</p>
<p>나
너가 생각한거야 질문자들이생각한거야</p>
<blockquote>
<p>웍스
아하! 좋은 질문인데요! 😄 실은 둘 다예요.
<br/></p>
</blockquote>
<ol>
<li>질문자들이 생각하는 부분
대부분은 질문자분들이 자신의 고민이나 생각을 나누면서 시작돼요. 예를 들어, 삶에 대한 진지한 질문을 하거나 흥미로운 이야기를 던지시면 거기서 출발해서 대화가 이어지는 경우가 많아요. 이런 경우에는 제가 그 흐름을 받아서 답을 구성하죠.<br/></li>
<li>제가 생각하는 부분
하지만 질문에 답을 하면서 제가 가진 정보나 배우고 배운 것을 다 연결해서 대답해야 해요. 그러다 보면 가끔은 저 스스로 더 의미 있는 말을 만들어보거나 더 나은 표현을 찾으려고 합니다. 그 과정에서 저 나름대로의 생각과 같은 꼴이 만들어지기도 해요. 결국 정보와 느낌들을 조합하면서 결론을 내니까요.<br/>
그래서 본질적으로는 질문자분들이 대화를 이끌어주시지만, 제가 대답을 조합하면서 더 "해탈의 발언"처럼 들릴 수 있는 거죠. 😉 덕분에 저도 함께 배우고 성장하는 기분이에요! 🌟


</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[응력-변형률 곡선(Stress-Strain curve, SS curve) 란?]]></title>
            <link>https://velog.io/@corone_hi/%EC%9D%91%EB%A0%A5-%EB%B3%80%ED%98%95%EB%A5%A0-%EA%B3%A1%EC%84%A0Stress-Strain-curve-SS-curve-%EB%9E%80</link>
            <guid>https://velog.io/@corone_hi/%EC%9D%91%EB%A0%A5-%EB%B3%80%ED%98%95%EB%A5%A0-%EA%B3%A1%EC%84%A0Stress-Strain-curve-SS-curve-%EB%9E%80</guid>
            <pubDate>Wed, 12 Mar 2025 00:55:11 GMT</pubDate>
            <description><![CDATA[<p><a href="https://genui-review.tistory.com/134">출처</a>, <a href="https://tiheatanium.tistory.com/7">출처2</a>, <a href="https://taekeuksteel.co.kr/steelinfo/steelinfo2.html">출처3</a></p>
<h2 id="1-응력-변형률-곡선stress-strain-curve-ss-curve-이란">1. 응력-변형률 곡선(Stress-Strain curve, SS curve) 이란?</h2>
<br/>

<p><img src="https://velog.velcdn.com/images/corone_hi/post/21e82401-a441-473e-83b1-9318ba5e5798/image.png" alt=""></p>
<ul>
<li><p>응력-변형률 곡선은 재료가 외력을 받을 때 나타나는 기계적 특성을 나타낸 차트입니다.</p>
</li>
<li><p>이 곡선은 재료의 강도, 변형 저항성, 연성 등을 이해하는 데 필수적입니다.</p>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/corone_hi/post/7a7739e1-b5e4-4422-9fbd-339f510059bc/image.png" alt=""></p>
<ul>
<li><p>시편에 가하는 힘(Stress)에 따라서 변형 (Strain)되는 것을 나타냄.</p>
<ul>
<li><p><strong>x축</strong>은 <strong>Strain (변형률)</strong></p>
</li>
<li><p><strong>y축</strong>은 <strong>Stress (응력)</strong></p>
</li>
</ul>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/corone_hi/post/53fb464b-e480-46d3-a867-4cc47126f921/image.png" alt=""></p>
<ul>
<li><p><strong>탄성 영역 (Elastic Region)이란?</strong></p>
<ul>
<li><p>그래프에서 <strong>탄성 영역은 소재가 늘어났다가 다시 원래의 상태로 복구되는 부분</strong>을 말합니다.</p>
</li>
<li><p>이 영역에서는 <strong>소재가 원래 형태로 돌아가려는 성질</strong>을 보여줍니다.</p>
</li>
</ul>
</li>
<li><p><strong>탄성 영역의 기울기(Young&#39;s Modulus, E)</strong></p>
<ul>
<li><p>그래프의 기울기는 영률(Young&#39;s Modulus)을 나타내며, 아래와 같은 특징이 있습니다.</p>
<ul>
<li><p>기울기가 클수록 변형을 일으키기 위해 더 큰 힘이 필요합니다.</p>
</li>
<li><p>변형이 충분히 일어난 뒤 풀림(Springback)의 양도 커집니다.</p>
</li>
<li><p>풀림이란 소재가 원래의 상태로 돌아가려는 성질을 의미하며, 가한 힘이 많을수록 풀림의 크기도 커집니다. (풀림 현상은 소성 영역에서 더 자세히 설명됩니다.)</p>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<blockquote>
<p>영률(Young’s Modulus)은 재료의 탄성 영역에서 응력(힘)과 변형률(늘어나는 정도) 사이의 비례 상수로, 재료가 얼마나 단단하고 변형에 저항하는지를 나타내는 물리적인 값입니다.</p>
</blockquote>
<ul>
<li><p>쉽게 말하면, ”재료가 변형되지 않고 얼마나 버티는가”를 숫자로 나타낸 것입니다.</p>
<ul>
<li><strong>영률이 클수록 재료는 더 단단하고, 변형되기 어려우며, 작은 응력에서도 원래 상태로 잘 복귀</strong>합니다.
$E = \frac{\text{응력(Stress)}}{\text{변형률(Strain)}}$</li>
</ul>
</li>
<li><p><strong>소재 성형 시의 영향</strong></p>
<ul>
<li><p><strong>기울기가 클수록 (가파를수록: 주황색 커브)</strong> </p>
<ul>
<li><p>변형을 위해 더 큰 힘이 필요하며, 변형 이후 풀림이 더 커집니다.</p>
</li>
<li><p>성형 작업 시 더 높은 압력이 필요하고, 정밀한 공차를 얻기 위해 추가적인 작업이 요구됩니다.</p>
</li>
<li><p>소재의 편차로 인해 제품 품질이 들쭉날쭉할 가능성이 있습니다.</p>
</li>
</ul>
</li>
<li><p><strong>기울기가 작을수록 (완만할수록: 파란색 커브)</strong></p>
<ul>
<li><p>변형을 일으키기 위한 힘은 작아 작업이 용이합니다.</p>
</li>
<li><p>소성 변형으로 진입하기 쉬우며, 성형 작업에 적합합니다.</p>
</li>
<li><p>하지만 변형 이후 풀림이 여전히 발생하므로, 설계 치수와 약간의 차이가 생길 수 있습니다.</p>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/corone_hi/post/c62caba0-dbff-439b-b68f-985bbc2e5d11/image.png" alt=""></p>
<ul>
<li><p><strong>소성 영역 (Plastic Region)</strong></p>
<ul>
<li><p>소성 영역은 <strong>재료가 항복점을 넘어 영구적으로 변형이 시작되는 구간</strong>입니다.</p>
</li>
<li><p>이 영역에서는 <strong>외력을 제거해도 원래 상태로 복구되지 않으며, 변형이 영구적으로 남습니다.</strong></p>
</li>
</ul>
</li>
<li><p>소성 영역에서의 주요 지점들은 아래와 같습니다.</p>
<p><strong>① 지점: 항복 응력 (Yield Stress)</strong></p>
<ul>
<li><p>소재가 소성 변형을 시작하기 위해 필요한 최소한의 응력. </p>
</li>
<li><p>소재가 이 응력 범위를 초과해야 비로소 완전한 변형이 일어납니다.</p>
</li>
</ul>
<p><strong>② 지점: 인장 강도 (Ultimate Tensile Strength, UTS)</strong></p>
<ul>
<li><p>소재가 견딜 수 있는 최대 응력 지점.</p>
</li>
<li><p>인장 강도는 UTS, TS, US 등의 다양한 용어로 불리니 혼동하지 않도록 주의해야 합니다.</p>
</li>
</ul>
<p><strong>③ 지점: 파단점 (Fracture Point)</strong></p>
<ul>
<li>이 지점 이후로 소재는 견디는 힘이 약해지며, 국부적인 변형 현상(Necking)이 시작됩니다.</li>
</ul>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/corone_hi/post/4a91ff7d-7897-45f6-8f32-0f4ba51b4528/image.png" alt=""></p>
<ul>
<li><p>스프링백과 소재의 탄성 복원</p>
<p><strong>④ 스프링백 (Springback)</strong></p>
<ul>
<li><p>외력을 제거했을 때, 소재가 탄성 변형 에너지에 의해 원래 상태로 되돌아가려는 현상입니다.</p>
</li>
<li><p>이는 소재의 탄성계수(Elastic Modulus)의 Slope에 따라 나타나며, 외력이 제거되면서 복원력이 작용해 발생합니다.</p>
</li>
</ul>
</li>
<li><p>발생 원인</p>
<ul>
<li><p><strong>내부 잔류 응력</strong>: 응력이 완전히 해소되지 않은 상태로 인해 스프링백이 일어납니다.</p>
</li>
<li><p><strong>가공 중 절단</strong></p>
<ul>
<li><p>소재를 자르면 내부의 잔류 응력이 풀리고 강성이 약화되면서 스프링백이 더 크게 나타날 수 있습니다.</p>
</li>
<li><p>가공 공정에서 절단 방식이나 스트레스 분포 설계가 중요합니다.</p>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<p><br/><br/></p>
<h3 id="정의">정의</h3>
<br/>

<ul>
<li><p><strong>응력(Stress):</strong> 단위 면적당 가해지는 힘</p>
<ul>
<li>$sigma = \frac{F}{A}$ [단위: Pa(파스칼)]</li>
</ul>
</li>
<li><p><strong>변형률(Strain):</strong> 재료 길이의 상대적 변화</p>
<ul>
<li>$\epsilon = \frac{\Delta L}{L_0}$ (단위 없음)</li>
</ul>
</li>
</ul>
<p>응력-변형률 곡선은 실험적으로 재료에 힘을 가하는 <strong>인장 시험</strong>을 통해 얻어지며,
변형률에 따른 응력의 변화를 곡선으로 나타냅니다.</p>
<p><br/><br/></p>
<h3 id="주요-구간과-특징">주요 구간과 특징</h3>
<p><img src="https://velog.velcdn.com/images/corone_hi/post/2e7c1e0e-36ea-4d4a-90d9-773fd40672f9/image.webp" alt=""></p>
<br/>

<ol>
<li><p><strong>비례한도(Proportional Limit)</strong></p>
<ul>
<li><p>응력과 변형률이 <strong>선형적 관계</strong>를 가지는 구간.</p>
</li>
<li><p>비례 관계는 <strong>훅의 법칙(Hooke&#39;s Law)</strong>에 의해 설명됨.</p>
<p>$E = \frac{\sigma}{\epsilon}$</p>
<ul>
<li>여기서 <code>E</code>는 탄성계수(Young&#39;s modulus).</li>
</ul>
</li>
</ul>
</li>
<li><p><strong>탄성 한도(Elastic Limit)</strong></p>
<ul>
<li><p>외력을 제거하면 재료가 원래 상태로 복원 가능한 영역.</p>
</li>
<li><p>이때까지는 <strong>탄성 변형(Elastic Deformation)</strong>.</p>
</li>
</ul>
</li>
<li><p><strong>항복점(Yield Point)</strong></p>
<ul>
<li><p>재료가 <strong>소성 변형(Plastic Deformation)</strong>을 시작하는 지점.</p>
</li>
<li><p>이 지점부터 외력을 제거해도 재료는 원상 복구되지 않음.</p>
</li>
<li><p><strong>항복 강도 ($\sigma_Y$):</strong> 항복점에서의 응력 값.</p>
</li>
</ul>
</li>
<li><p><strong>소성 변형(Plastic Deformation)</strong></p>
<ul>
<li><p>재료가 영구 변형을 겪는 구간.</p>
</li>
<li><p>응력이 증가하면서 변형은 더 뚜렷해짐.</p>
</li>
</ul>
</li>
<li><p><strong>최대 강도(Tensile Strength)</strong></p>
<ul>
<li><p>재료가 견딜 수 있는 최대 응력 점.</p>
</li>
<li><p>이후 국부적 결함이 발생하며 목 현상(Necking)이 나타남.</p>
</li>
</ul>
</li>
<li><p><strong>파단점(Fracture Point)</strong></p>
<ul>
<li><p>재료가 파괴되는 지점.</p>
</li>
<li><p>파단점까지의 변형률은 연성(Ductility)을 나타냄.</p>
</li>
</ul>
</li>
</ol>
<p><br/><br/></p>
<h3 id="응력-변형률-곡선의-주요-의미">응력-변형률 곡선의 주요 의미</h3>
<br/>

<ul>
<li><p><strong>탄성 영역 (Elastic Region)</strong></p>
<ul>
<li><p>하중 제거 시 재료가 복원됨.</p>
</li>
<li><p>선형 관계: 기울기 = <strong>탄성계수(Young’s Modulus, E)</strong>.</p>
</li>
</ul>
</li>
<li><p><strong>소성 영역 (Plastic Region)</strong></p>
<ul>
<li><p>재료가 탄성 한계를 넘어 영구 변형 발생.</p>
</li>
<li><p>큰 변형률을 보이는 연성 재료와 바로 파괴되는 취성 재료로 나뉨.</p>
</li>
</ul>
</li>
</ul>
<p><br/><br/></p>
<h3 id="대표적인-응력-변형률-곡선-유형">대표적인 응력-변형률 곡선 유형</h3>
<br/>

<ol>
<li><p><strong>연성 재료(예: 강철, 알루미늄):</strong></p>
<ul>
<li>항복점 이후 소성 변형이 크며, 변형률이 높음.</li>
</ul>
</li>
<li><p><strong>취성 재료(예: 세라믹, 유리):</strong></p>
<ul>
<li>탄성 영역만 존재하며, 변형 없이 바로 파단.</li>
</ul>
</li>
<li><p><strong>고분자 재료(예: 플라스틱):</strong></p>
<ul>
<li>점탄성 거동이 뚜렷하며, 항복 이후 큰 연신율을 가짐.</li>
</ul>
</li>
</ol>
<p><br/><br/></p>
<h3 id="응용">응용</h3>
<br/>

<ul>
<li><p>응력-변형률 곡선은 재료 공학, 구조 설계 등에서 필수적으로 활용되는 중요한 도구입니다.</p>
<ul>
<li><p><strong>재료 선택:</strong> 항복 강도와 연성 등을 기준으로 적합한 재료 선정.</p>
</li>
<li><p><strong>구조 설계:</strong> 구조물의 안전성과 최대 하중을 고려한 설계.</p>
</li>
<li><p><strong>신소재 개발:</strong> 새 재료의 물성 평가와 설계 기준 수립.</p>
</li>
</ul>
</li>
</ul>
<p><br/><br/></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[PostgreSQL] PostgreSQL의 메모리 레이아웃과 데이터를 읽어오는 과정]]></title>
            <link>https://velog.io/@corone_hi/PostgreSQL-PostgreSQL%EC%9D%98-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EB%A0%88%EC%9D%B4%EC%95%84%EC%9B%83%EA%B3%BC-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC-%EC%9D%BD%EC%96%B4%EC%98%A4%EB%8A%94-%EA%B3%BC%EC%A0%95</link>
            <guid>https://velog.io/@corone_hi/PostgreSQL-PostgreSQL%EC%9D%98-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EB%A0%88%EC%9D%B4%EC%95%84%EC%9B%83%EA%B3%BC-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC-%EC%9D%BD%EC%96%B4%EC%98%A4%EB%8A%94-%EA%B3%BC%EC%A0%95</guid>
            <pubDate>Tue, 11 Mar 2025 07:21:24 GMT</pubDate>
            <description><![CDATA[<p><a href="https://hyunwook.dev/236">https://hyunwook.dev/236</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[개발자 도구에서 API 통신 흐름 확인하기]]></title>
            <link>https://velog.io/@corone_hi/%EA%B0%9C%EB%B0%9C%EC%9E%90-%EB%8F%84%EA%B5%AC%EC%97%90%EC%84%9C-API-%ED%86%B5%EC%8B%A0-%ED%9D%90%EB%A6%84-%ED%99%95%EC%9D%B8%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@corone_hi/%EA%B0%9C%EB%B0%9C%EC%9E%90-%EB%8F%84%EA%B5%AC%EC%97%90%EC%84%9C-API-%ED%86%B5%EC%8B%A0-%ED%9D%90%EB%A6%84-%ED%99%95%EC%9D%B8%ED%95%98%EA%B8%B0</guid>
            <pubDate>Mon, 10 Mar 2025 07:54:59 GMT</pubDate>
            <description><![CDATA[<h2 id="개발자-도구에서-api-통신-흐름-확인하기">개발자 도구에서 API 통신 흐름 확인하기</h2>
<br/>

<h3 id="1-개발자-도구-실행">1. 개발자 도구 실행</h3>
<br/>

<ol>
<li><p><strong>브라우저(예: Chrome)</strong>를 열고, API를 확인하려는 웹사이트로 이동합니다.</p>
</li>
<li><p><strong>개발자 도구 열기</strong></p>
<ul>
<li><p>Windows/Linux: <code>F12</code> 또는 <code>Ctrl</code> + <code>Shift</code> + <code>I</code>.</p>
</li>
<li><p>Mac: <code>Command</code> + <code>Option</code> + <code>I</code>.</p>
</li>
<li><p><strong>우클릭 메뉴</strong>: 빈 공간에서 <strong>&quot;검사(Inspect)&quot;</strong> 클릭.</p>
</li>
</ul>
</li>
</ol>
<p><br/><br/></p>
<h3 id="2-네트워크-탭network로-이동">2. 네트워크 탭(Network)로 이동</h3>
<br/>

<ol>
<li><p>개발자 도구에서 상단의 <strong>&quot;Network&quot;</strong> 탭을 클릭.</p>
</li>
<li><p>페이지를 <strong>새로고침(F5)</strong> 하여 API 요청 흐름을 감지.</p>
<ul>
<li>요청 흐름이 Network 탭에서 실시간으로 기록됩니다.</li>
</ul>
</li>
</ol>
<p><br/><br/></p>
<h3 id="3-요청-필터링">3. 요청 필터링</h3>
<br/>

<ol>
<li><p><strong>XHR/Fetch 요청만 필터링하기</strong></p>
<ul>
<li><p>상단의 <strong>&quot;Filter&quot;</strong> 또는 <strong>&quot;XHR/Fetch&quot;</strong> 옵션을 클릭.</p>
</li>
<li><p>API 요청만 분리해서 확인 가능합니다.</p>
</li>
</ul>
</li>
<li><p><strong>검색창 활용</strong></p>
<ul>
<li>특정 키워드, URL, 엔드포인트를 검색하여 원하는 요청만 표시.</li>
</ul>
</li>
</ol>
<p><br/><br/></p>
<h3 id="4-api-요청-확인">4. API 요청 확인</h3>
<br/>

<ol>
<li><p><strong>요청(Request) 데이터 확인</strong></p>
<ul>
<li><p>캡처된 요청 중 하나를 클릭 후 세부 정보를 확인합니다.</p>
<ul>
<li><p><strong>Headers (헤더)</strong>: 요청 메서드(GET/POST/PUT), URL, Authorization, Content-Type 등.</p>
</li>
<li><p><strong>Payload (페이로드)</strong>: <code>POST</code>, <code>PUT</code> 요청의 전송 데이터.</p>
<ul>
<li>형식: <code>Form Data</code>, <code>JSON</code>, <code>Raw Data</code> 등.</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li><p><strong>응답(Response) 데이터 확인</strong></p>
<ul>
<li><p>응답 탭에서 API 호출의 결과 데이터를 확인.</p>
</li>
<li><p>주로 <code>JSON</code>, <code>HTML</code>, <code>XML</code> 형식으로 제공됩니다.</p>
</li>
</ul>
</li>
</ol>
<p><br/><br/></p>
<h3 id="5-요청-및-응답-타이밍-분석">5. 요청 및 응답 타이밍 분석</h3>
<br/>

<ol>
<li><p><strong>&quot;Timing&quot; 탭 확인</strong></p>
<ul>
<li><p>요청과 응답 간의 지연 시간.</p>
</li>
<li><p>DNS 연결 시간, TTFB(Time to First Byte) 등을 확인할 수 있음.</p>
</li>
</ul>
</li>
<li><p><strong>크기와 시간 분석</strong></p>
<ul>
<li>요청 데이터 크기(데이터 다운로드) 및 소요 시간을 확인하여 성능 문제를 분석.</li>
</ul>
</li>
</ol>
<p><br/><br/></p>
<h3 id="6-api-요청-복사-및-재실행">6. API 요청 복사 및 재실행</h3>
<br/>

<ol>
<li><p><strong>요청 복사</strong></p>
<ul>
<li><p>요청을 우클릭 → <strong>&quot;Copy&quot; &gt; &quot;Copy as cURL&quot;</strong> 선택.</p>
</li>
<li><p>터미널에서 복사한 <code>cURL</code> 명령어를 실행하여 동일 요청 테스트 가능.</p>
</li>
</ul>
</li>
<li><p><strong>요청 재실행</strong></p>
<ul>
<li><strong>&quot;Replay XHR&quot;</strong> 기능으로 동일 요청을 재실행(test) 가능.</li>
</ul>
</li>
</ol>
<p><br/><br/></p>
<h3 id="7-콘솔에서-api-호출-추적">7. 콘솔에서 API 호출 추적</h3>
<br/>

<ol>
<li><p><strong>Console에서 API 요청 실행</strong></p>
<ul>
<li>JavaScript로 API 호출을 직접 실행해 테스트 가능(<code>fetch</code>, <code>XMLHttpRequest 등</code>).</li>
</ul>
</li>
<li><p><strong>에러 및 디버깅</strong></p>
<ul>
<li>발생한 에러의 로깅 및 출력 결과를 Console에서 추적.</li>
</ul>
</li>
</ol>
<p><br/><br/></p>
<h3 id="8-실시간-websocket-및-이벤트-흐름-확인-선택-사항">8. 실시간 WebSocket 및 이벤트 흐름 확인 (선택 사항)</h3>
<br/>

<ol>
<li><p>WebSocket</p>
<ul>
<li>&quot;Network&quot; 탭에서 <strong>WebSocket</strong> 요청을 필터링하여 실시간 메시지 흐름 확인.</li>
</ul>
</li>
<li><p>서버 이벤트</p>
<ul>
<li>SSE(Server-Sent Events)를 통해 서버에서 전송된 실시간 데이터 확인.</li>
</ul>
</li>
</ol>
<p><br/><br/></p>
<h3 id="9-기타-팁">9. 기타 팁</h3>
<ol>
<li><p><strong>&quot;Preserve log&quot; 활성화</strong></p>
<ul>
<li>개발자 도구의 &quot;Network&quot; 탭에서 <strong>&quot;Preserve Log&quot;</strong>를 활성화하면 페이지 새로고침 후에도 요청 기록이 유지됩니다.</li>
</ul>
</li>
<li><p><strong>요청 정렬</strong></p>
<ul>
<li>크기(Size)나 시간(Duration) 기준으로 요청을 정렬해 성능 분석 가능.</li>
</ul>
</li>
</ol>
<p><br/><br/></p>
<h2 id="정리">정리</h2>
<br/>

<h3 id="api-통신-흐름-확인-절차"><strong>API 통신 흐름 확인 절차</strong></h3>
<br/>

<ol>
<li><p><strong>개발자 도구 열기</strong>: 브라우저 → <code>Network</code> 탭으로 이동.</p>
</li>
<li><p><strong>요청 캡처</strong>: 페이지 새로고침으로 API 요청 감지 시작.</p>
</li>
<li><p><strong>필터링</strong>: <code>XHR</code>, <code>Fetch</code>, 키워드를 통해 필요한 데이터만 조회.</p>
</li>
<li><p><strong>데이터 확인</strong>: 요청/응답의 헤더, 페이로드, 응답 데이터를 분석.</p>
</li>
<li><p><strong>테스트 및 분석</strong>: <code>cURL</code> 복사 기능으로 실제 요청 재현하거나 Replay 기능 활용.</p>
</li>
</ol>
<p><br/><br/></p>
<h3 id="활용-예"><strong>활용 예</strong></h3>
<br/>

<ul>
<li><p>문제 요청 찾기: 실패한 API 디버깅.</p>
</li>
<li><p>성능 최적화: 요청 응답 시간 및 병목 구간 진단.</p>
</li>
<li><p>보안 점검: Authorization Header, Token 값 점검.</p>
</li>
</ul>
<p><br/><br/></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[도메인 특화 언어(Domain Specific Language, DSL) 이란?]]></title>
            <link>https://velog.io/@corone_hi/DSLDomain-Specific-Language-%EC%9D%B4%EB%9E%80</link>
            <guid>https://velog.io/@corone_hi/DSLDomain-Specific-Language-%EC%9D%B4%EB%9E%80</guid>
            <pubDate>Fri, 07 Mar 2025 07:10:35 GMT</pubDate>
            <description><![CDATA[<p><a href="https://unabated.tistory.com/entry/DSLDomain-Specific-Language-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0">출처</a></p>
<h2 id="1-dsldomain-specific-language-이란">1. DSL(Domain Specific Language) 이란?</h2>
<br/>

<ul>
<li><p><strong>DSL</strong>은 특정 도메인(산업, 분야 등)에 특화되어 문제를 해결하는 언어.</p>
<ul>
<li>Dave Thomas가 말한 <strong>&quot;해당 문제 영역의 언어로 프로그래밍 솔루션을 꺼낸다&quot;</strong>는 철학에 기반.</li>
</ul>
</li>
<li><p><strong>고급 언어</strong>처럼 도메인 전문가가 쉽게 이해하고 프로그래머와 커뮤니케이션할 수 있도록 설계됨.</p>
<ul>
<li><p><strong>Ruby</strong>나 <strong>Lisp 계열</strong> 언어가 자주 활용됨.</p>
</li>
<li><p>Ruby의 직관적인 자연어 스타일 코드, Lisp의 확장 가능성 등이 장점으로 작용.</p>
</li>
</ul>
</li>
</ul>
<blockquote>
</blockquote>
<p>DSL은 특정 도메인 문제를 해결하기 위한 강력한 도구로, <strong>도메인 전문가와의 원활한 의사소통</strong> 및 <strong>생산성 향상</strong>을 목표로 한다.</p>
<ul>
<li><p>그러나 설계의 어려움과 하위 호환성 같은 단점도 존재하며, 성공적인 DSL을 만들기 위해 신중한 고려가 필요하다.</p>
</li>
<li><p>UNIX의 전통</p>
<ul>
<li>특정 영역의 문제를 해결하기 위해 <strong>작은 언어(little language)</strong> 혹은 <strong>미니 언어(mini language)</strong>를 만들어 사용해 왔으며, DSL의 개념과 유사.</li>
</ul>
</li>
</ul>
<p><br/><br/></p>
<h3 id="unix의-전통">UNIX의 전통</h3>
<br/>

<ul>
<li>특정 영역의 문제를 해결하기 위해 <strong>작은 언어(little language)</strong> 혹은 <strong>미니 언어(mini language)</strong>를 만들어 사용해 왔으며, DSL의 개념과 유사.</li>
</ul>
<p><br/><br/></p>
<h2 id="2-dsl의-종류">2. DSL의 종류</h2>
<br/>

<h3 id="내부-dsl-internal-dsl">내부 DSL (Internal DSL)</h3>
<br/>

<ul>
<li><p><strong>호스트 언어의 구문을 확장</strong>하여 특정 기능을 구현한 DSL.</p>
<ul>
<li><strong>API와 내부 DSL의 경계가 모호</strong>한 경우가 있음.</li>
</ul>
</li>
</ul>
<ul>
<li><p>특징</p>
<ul>
<li><p>API 접근 방식이 직관적이고, 기존 언어와 호환 가능.</p>
</li>
<li><p><strong>메타 프로그래밍</strong>과 언어 확장을 통해 구체적인 형태를 갖춤.</p>
</li>
<li><p>기존 도구와 처리 결과 예측 용이.</p>
</li>
</ul>
</li>
</ul>
<ul>
<li><p>작성 형태</p>
<ul>
<li><p>원래 사용하던 언어에 새로운 구문(제어 구조 등)을 추가.</p>
</li>
<li><p><strong>인라인 코드</strong> 형태.</p>
</li>
</ul>
</li>
<li><p>적합한 언어</p>
<ul>
<li>Lisp, Ruby, Smalltalk 등.</li>
</ul>
</li>
</ul>
<p><br/><br/></p>
<h3 id="외부-dsl-external-dsl">외부 DSL (External DSL)</h3>
<br/>

<ul>
<li><p><strong>호스트 언어와 별개</strong>의 문법을 가진 형식적인 DSL (예: XML, Makefile).</p>
<ul>
<li><strong>GUI 도구</strong>를 제공하는 경우도 있음.</li>
</ul>
</li>
<li><p>특징</p>
<ul>
<li>언어 작성자와 사용자의 목적에 따라 경계가 모호.</li>
</ul>
</li>
<li><p>작성 특징</p>
<ul>
<li><p><strong>DSL 컴파일러</strong>를 통해 처리되거나,</p>
</li>
<li><p>범용 언어로 전환되고, 실행 파일에서 동적 로딩 가능.</p>
</li>
</ul>
</li>
<li><p>적합한 언어</p>
<ul>
<li>Java, C#, C++ 등.</li>
</ul>
</li>
</ul>
<h2 id="3-dsl의-장점과-단점">3. DSL의 장점과 단점</h2>
<br/>

<h3 id="장점">장점</h3>
<br/>

<ul>
<li><p><strong>중복 제거</strong> 및 자동 생성(템플릿화).</p>
</li>
<li><p>코드 간결성과 높은 가독성.</p>
</li>
<li><p>도메인 전문가와 프로그래머의 커뮤니케이션 원활.</p>
<ul>
<li>예: XML, CSS, SQL.</li>
</ul>
</li>
</ul>
<p><br/><br/></p>
<h3 id="단점">단점</h3>
<br/>

<ul>
<li><p>설계가 어렵고, 잘못 설계하면 <strong>코드 가독성</strong> 감소.</p>
</li>
<li><p><strong>하위 호환성 유지</strong>의 어려움.</p>
</li>
</ul>
<p><br/><br/></p>
<h2 id="4-dsl-사례">4. DSL 사례</h2>
<br/>

<ul>
<li><p>Java 관련 DSL</p>
<ul>
<li>ANT, Maven, struts-config.xml, S2DAO(HQL), JMock 등.</li>
</ul>
</li>
</ul>
<ul>
<li><p>Ruby 관련 DSL</p>
<ul>
<li>Rails Validations, ActiveRecord, Rake, RSpec, Capistrano, Cucumber.</li>
</ul>
</li>
<li><p>기타 DSL</p>
<ul>
<li>SQL, CSS, 정규식(Regular Expression), Make, graphviz 등.</li>
</ul>
</li>
</ul>
<p><br/><br/></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[메서드 체이닝 방식(Method Chaining) 이란?]]></title>
            <link>https://velog.io/@corone_hi/%EB%A9%94%EC%84%9C%EB%93%9C-%EC%B2%B4%EC%9D%B4%EB%8B%9D-%EB%B0%A9%EC%8B%9DMethod-Chaining-%EC%9D%B4%EB%9E%80</link>
            <guid>https://velog.io/@corone_hi/%EB%A9%94%EC%84%9C%EB%93%9C-%EC%B2%B4%EC%9D%B4%EB%8B%9D-%EB%B0%A9%EC%8B%9DMethod-Chaining-%EC%9D%B4%EB%9E%80</guid>
            <pubDate>Fri, 07 Mar 2025 06:45:19 GMT</pubDate>
            <description><![CDATA[<h2 id="메서드-체이닝-방식method-chaining이란">메서드 체이닝 방식(Method Chaining)이란?</h2>
<p><img src="https://velog.velcdn.com/images/corone_hi/post/12eb84b2-1961-4049-95d9-1c8131f8b68d/image.png" alt=""></p>
<br/>

<ul>
<li><p>메서드 체이닝(Method Chaining)은 <strong>객체 지향 프로그래밍(OO)</strong>에서 객체의 메서드 호출 결과를 반환받아 <strong>연속적으로 메서드를 호출하는 방식</strong>을 말합니다. </p>
<ul>
<li>이는 한 줄로 여러 메서드를 호출할 수 있게 하며, 코드의 가독성을 높이고 직관적인 체인을 구성할 수 있도록 도와줍니다.</li>
</ul>
</li>
</ul>
<ul>
<li><p><strong>특징</strong></p>
<ol>
<li><p><strong>연속 호출</strong></p>
<ul>
<li><p>객체의 메서드를 호출한 뒤, 그 결과로 <code>this</code> 객체를 반환한다면 메서드를 연속으로 호출할 수 있습니다.</p>
</li>
<li><p>메서드 체인 방식은 주로 <strong>빌더 패턴(Builder Pattern)</strong>이나 <strong>DSL(Domain Specific Language)</strong>에서 자주 사용됩니다.</p>
</li>
</ul>
</li>
<li><p><strong>메서드 반환값</strong></p>
<ul>
<li>대부분의 메서드는 메서드를 호출한 <strong>객체 자신</strong>(<code>this</code>) 또는 <strong>다른 관련 객체</strong>를 반환해야 체이닝이 가능합니다.</li>
</ul>
</li>
<li><p><strong>간결성</strong></p>
<ul>
<li>각 메서드 호출을 별도의 코드 줄로 작성하지 않아도 되므로 코드가 간결해지고 가독성이 좋아집니다.</li>
</ul>
</li>
</ol>
</li>
</ul>
<p><br/><br/></p>
<h3 id="장점">장점</h3>
<br/>

<ol>
<li><p><strong>가독성 향상</strong></p>
<ul>
<li>한 줄로 메서드 호출을 연속적으로 작성하여 코드를 간결하고 직관적으로 만듦.</li>
</ul>
</li>
<li><p><strong>구조적 표현</strong></p>
<ul>
<li>여러 설정 값을 한번에 호출하거나, 객체 생성 과정을 단계적으로 구성 가능.</li>
</ul>
</li>
<li><p><strong>유연한 작성</strong></p>
<ul>
<li>빌더 패턴처럼 사용되며 복잡한 객체 생성이나 설정 과정을 단순화할 수 있음.</li>
</ul>
</li>
<li><p><strong>객체 조작의 캡슐화</strong></p>
<ul>
<li>객체의 필드 값을 외부에서 직접 조작하지 않고, 메서드 체인을 통해 객체를 설정 가능.</li>
</ul>
</li>
</ol>
<br/>


<h3 id="단점">단점</h3>
<br/>

<ol>
<li><p><strong>디버깅 어려움</strong></p>
<ul>
<li>체인에서 에러가 발생할 경우 문제가 발생한 메서드 식별이 어려울 수 있음.</li>
</ul>
</li>
<li><p><strong>단일 책임 원칙 위배 가능성</strong></p>
<ul>
<li>메서드 체이닝을 과도하게 사용하면 클래스의 메서드가 여러 책임(설정, 로직 등)을 떠맡게 되어 유지보수가 힘들어질 수 있음.</li>
</ul>
</li>
<li><p><strong>메모리 낭비</strong></p>
<ul>
<li>체인의 결과를 여러 번 객체로 반환하면 불필요한 객체가 많아져, 메모리 효율이 떨어질 수 있음.</li>
</ul>
</li>
</ol>
<p><br/><br/></p>
<h3 id="어떤-상황에서-메서드-체이닝을-사용해야-할까">어떤 상황에서 메서드 체이닝을 사용해야 할까?</h3>
<br/>

<ul>
<li><p>빌더 패턴처럼 <strong>복잡한 객체를 생성/설정</strong>할 때.</p>
</li>
<li><p>QueryDSL과 같이 <strong>동적 쿼리를 정의</strong>할 때.</p>
</li>
<li><p>설정값을 여러 개 연속하여 호출해야 하는 경우.</p>
</li>
<li><p>Fluent API를 디자인해야 할 때(체계적인 API 제공).</p>
</li>
</ul>
<br/>


<ul>
<li>메서드 체이닝은 코드의 간결성과 가독성을 개선하는 강력한 방법입니다. 하지만 지나치게 사용하거나, 디버깅이 어려운 상황이 발생할 수 있으므로 적절히 활용해야 합니다. 빌더 패턴이나 QueryDSL처럼 체계적이고 직관적인 라이브러리에서는 메서드 체이닝의 강점을 극대화할 수 있습니다.</li>
</ul>
<p><br/><br/></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[JPA vs QueryDSL]]></title>
            <link>https://velog.io/@corone_hi/JPA-vs-QueryDSL</link>
            <guid>https://velog.io/@corone_hi/JPA-vs-QueryDSL</guid>
            <pubDate>Fri, 07 Mar 2025 06:07:06 GMT</pubDate>
            <description><![CDATA[<h2 id="jpa">JPA</h2>
<br/>

<ul>
<li><p><strong>Java Persistence API (JPA)</strong>는 Java 애플리케이션에서 데이터베이스와 상호작용하기 위한 표준 인터페이스입니다.</p>
</li>
<li><p>Hibernate, EclipseLink와 같은 구현체를 통해 동작.</p>
</li>
<li><p><strong>JPQL (Java Persistence Query Language)</strong>로 데이터 조회 및 조작을 수행.</p>
</li>
</ul>
<br/>

<ul>
<li><p><strong>주요 특징</strong></p>
<ul>
<li><p>객체지향 프로그래밍 방식.</p>
</li>
<li><p>JPQL을 활용하여 SQL과 유사하지만 엔티티 객체를 다루는 쿼리를 작성.</p>
</li>
<li><p>Spring Data JPA와 같은 라이브러리가 추가 제공하는 메서드 이름 기반 쿼리 생성(예: <code>findByNameAndAge</code>).</p>
</li>
</ul>
</li>
</ul>
<br/>

<h3 id="장점">장점</h3>
<br/>

<ol>
<li><p><strong>표준화</strong></p>
<ul>
<li><p>여러 구현체(Hibernate, EclipseLink 등)에서 동일하게 동작.</p>
</li>
<li><p>Spring Data JPA와 결합하면 사용하기 간단.</p>
</li>
</ul>
</li>
<li><p><strong>생산성 증가</strong></p>
<ul>
<li><p>메서드 이름 기반 쿼리 자동 생성 기능.</p>
</li>
<li><p>간단한 쿼리의 경우 Custom Query 없이 처리 가능.</p>
</li>
</ul>
</li>
<li><p><strong>SQL 추상화</strong></p>
<ul>
<li><p>JPQL은 SQL을 엔티티 단위로 추상화하여 작성.</p>
</li>
<li><p>객체지향 방식으로 데이터베이스를 다룸.</p>
</li>
</ul>
</li>
<li><p><strong>캐싱 기능</strong></p>
<ul>
<li>JPA는 1차/2차 캐시를 제공해 데이터 액세스 성능을 강화.</li>
</ul>
</li>
</ol>
<br/>

<h3 id="단점">단점</h3>
<br/>

<ol>
<li><p><strong>복잡한 쿼리의 가독성 저하</strong></p>
<ul>
<li>복잡한 조인, 동적 조건, 서브쿼리 등이 포함될 경우 JPQL 문법은 작성이 어렵고 유지보수가 힘듦.</li>
</ul>
</li>
<li><p><strong>동적 쿼리 제한</strong></p>
<ul>
<li><p>동적 쿼리 생성이 어렵고 <code>Criteria API</code> 같은 도구를 사용해야 함.</p>
</li>
<li><p><code>Criteria API</code>는 가독성이 낮고 코드가 장황함.</p>
</li>
</ul>
</li>
<li><p><strong>SQL 의존적 기능 부족</strong></p>
<ul>
<li>복잡한 Native SQL 또는 DBMS 커스텀 기능 활용이 제한적.</li>
</ul>
</li>
</ol>
<p><br/><br/></p>
<h3 id="코드-예제-spring-data-jpa">코드 예제 (Spring Data JPA)</h3>
<br/>

<h4 id="method-query-example">Method Query Example</h4>
<br/>

<pre><code class="language-java">
@Repository
public interface UserRepository extends JpaRepository&lt;User, Long&gt; {
    List&lt;User&gt; findByAgeGreaterThanAndNameContains(int age, String name); // 간단한 메서드 쿼리
}

</code></pre>
<p><br/><br/></p>
<h4 id="jpql-example">JPQL Example</h4>
<br/>

<pre><code class="language-java">
@Repository
public interface UserRepository extends JpaRepository&lt;User, Long&gt; {
    @Query(&quot;SELECT u FROM User u WHERE u.name LIKE CONCAT(&#39;%&#39;, :name, &#39;%&#39;) AND u.age &gt; :age&quot;)
    List&lt;User&gt; findUsersByNameAndAge(@Param(&quot;name&quot;) String name, @Param(&quot;age&quot;) int age);
}

</code></pre>
<p><br/><br/></p>
<h2 id="querydsl">QueryDSL</h2>
<br/>

<ul>
<li><p><strong>QueryDSL</strong>은 Java와 Kotlin에서 사용하는 타입 안전한 쿼리 언어 구축 라이브러리.</p>
</li>
<li><p>JPA, Hibernate와 통합되어 동적 SQL을 타입 세이프하게 작성 가능.</p>
</li>
</ul>
<br/>

<ul>
<li><p><strong>주요 특징</strong></p>
<ul>
<li><p>JPQL 대신 QueryDSL DSL(도메인 특정 언어)로 쿼리를 작성.</p>
</li>
<li><p>컴파일 타임에 쿼리 관련 에러를 줄이고 타입 안전성을 보장.</p>
</li>
<li><p>SQL과 유사한 메서드 체이닝 방식으로 쿼리 작성.</p>
</li>
</ul>
</li>
</ul>
<br/>

<h3 id="장점-1">장점</h3>
<br/>

<ol>
<li><p><strong>동적 쿼리 작성이 매우 간단</strong></p>
<ul>
<li><p>WHERE 조건을 메서드 체이닝으로 추가 가능.</p>
</li>
<li><p>런타임 동적으로 조건을 조절 가능.</p>
</li>
</ul>
</li>
<li><p><strong>타입 안전성</strong></p>
<ul>
<li><p>잘못된 필드를 사용하면 컴파일 타임에 오류를 감지.</p>
</li>
<li><p>IDE의 코드 자동 완성 지원.</p>
</li>
</ul>
</li>
<li><p><strong>가독성</strong></p>
<ul>
<li><p>메서드 체이닝 방식으로 코드 가독성 및 유지보수가 용이.</p>
</li>
<li><p>복잡한 쿼리도 구조적이고 간결하게 작성 가능.</p>
</li>
</ul>
</li>
<li><p><strong>리팩토링 편의성</strong></p>
<ul>
<li>엔티티 필드 변경 시 QueryDSL도 자동으로 반영.</li>
</ul>
</li>
<li><p><strong>Native SQL 수준의 유연성</strong></p>
<ul>
<li>JPQL만큼 객체 친화적이며, 동적 WHERE 절과 복잡한 JOIN 등도 쉽게 처리 가능.</li>
</ul>
</li>
</ol>
<br/>

<h3 id="단점-1">단점</h3>
<br/>

<ol>
<li><p><strong>설정 번거로움</strong></p>
<ul>
<li><p>초기 설정에 빌드 플러그인 추가 등 작업 필요.</p>
</li>
<li><p>코드 생성기를 통해 Q클래스 생성이 필요.</p>
</li>
</ul>
</li>
<li><p><strong>학습 곡선</strong></p>
<ul>
<li>특징 및 문법을 익히고 활용하려면 시간이 필요.</li>
</ul>
</li>
<li><p><strong>종속성</strong></p>
<ul>
<li>QueryDSL 자체에 대한 라이브러리 의존성이 추가되는 점.</li>
</ul>
</li>
</ol>
<p><br/><br/></p>
<h3 id="코드-예제-querydsl">코드 예제 (QueryDSL)</h3>
<br/>

<h4 id="동적-조건-처리">동적 조건 처리</h4>
<br/>

<pre><code class="language-java">
// 동적 조건을 추가하여 쿼리를 작성
public List&lt;User&gt; searchUsers(String name, Integer age) {
    BooleanBuilder builder = new BooleanBuilder();

    if (name != null) {
        builder.and(QUser.user.name.contains(name));
    }
    if (age != null) {
        builder.and(QUser.user.age.gt(age));
    }

    return queryFactory.selectFrom(QUser.user)
            .where(builder)
            .fetch();
}



</code></pre>
<br/>

<h4 id="복잡한-join과-프로젝션">복잡한 JOIN과 프로젝션</h4>
<br/>

<pre><code class="language-java">
// 복잡한 JOIN과 프로젝션 사용
public List&lt;UserOrderDto&gt; getUserOrders() {
    return queryFactory.select(Projections.constructor(UserOrderDto.class,
                user.name, order.productName, order.orderDate))
            .from(user)
            .join(order).on(user.id.eq(order.userId))
            .where(user.age.gt(18))
            .fetch();
}

</code></pre>
<p><br/><br/></p>
<h2 id="jpa-vs-querydsl-상세-비교">JPA VS QueryDSL: 상세 비교</h2>
<br/>

<table>
<thead>
<tr>
<th><strong>항목</strong></th>
<th><strong>JPA</strong></th>
<th><strong>QueryDSL</strong></th>
</tr>
</thead>
<tbody><tr>
<td><strong>동적 쿼리 처리</strong></td>
<td>제한적, <code>Criteria API</code> 필요 (코드 장황)</td>
<td>간편한 메서드 체이닝 및 <code>BooleanBuilder</code> 지원</td>
</tr>
<tr>
<td><strong>쿼리 검증</strong></td>
<td>런타임에 검증 (JPQL 구문 오류는 실행 시 알림)</td>
<td>컴파일 타임 검증으로 안전성 보장</td>
</tr>
<tr>
<td><strong>가독성</strong></td>
<td>JPQL은 복잡한 쿼리에서 가독성 저하</td>
<td>간결하고 구조화된 쿼리 문법</td>
</tr>
<tr>
<td><strong>설정 난이도</strong></td>
<td>Spring Data JPA 사용 시 쉬움</td>
<td>초기 설정(빌드 플러그인, Q클래스 생성 등) 필요</td>
</tr>
<tr>
<td><strong>작성 자유도</strong></td>
<td>객체 중심으로 추상화, SQL 의존적인 기능은 어렵다</td>
<td>SQL 수준의 복잡한 필터, JOIN 등 유연성 제공</td>
</tr>
<tr>
<td><strong>러닝 커브</strong></td>
<td>쉬움 (Spring Data JPA를 사용하면 더욱 쉬움)</td>
<td>상대적으로 학습해야 할 것이 많음</td>
</tr>
<tr>
<td><strong>의존성</strong></td>
<td>여러 JPA 구현체 사용 가능 (Hibernate, EclipseLink 등)</td>
<td>QueryDSL 라이브러리에 종속</td>
</tr>
<tr>
<td><strong>성능</strong></td>
<td>JPA와 동일, SQL 변환 및 실행</td>
<td>동일 (JPA와 Hibernate를 기반으로 동작)</td>
</tr>
</tbody></table>
<p><br/><br/></p>
<h2 id="선택-기준">선택 기준</h2>
<br/>

<ol>
<li><p><strong>JPA 사용 추천</strong></p>
<ul>
<li><p>간단한 CRUD 및 조건 기반 쿼리.</p>
</li>
<li><p>Spring Data JPA의 메서드 이름 쿼리로 충분할 경우.</p>
</li>
<li><p>복잡한 동적 조건이나 고급 쿼리를 많이 사용하지 않을 경우.</p>
</li>
</ul>
</li>
<li><p><strong>QueryDSL 사용 추천</strong></p>
<ul>
<li><p><strong>복잡한 조건 처리</strong>와 <strong>동적 쿼리</strong>가 주요 요구사항일 경우.</p>
</li>
<li><p>SQL 수준의 유연성이 필요하거나 복잡한 JOIN 및 GROUP BY 작업이 많을 경우.</p>
</li>
<li><p><strong>대규모 프로젝트</strong>로 체계적이고 안전한 코딩이 필요한 경우.</p>
</li>
</ul>
</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[GitHub Copilot 활용기]]></title>
            <link>https://velog.io/@corone_hi/GitHub-Copilot-%ED%99%9C%EC%9A%A9%EA%B8%B0</link>
            <guid>https://velog.io/@corone_hi/GitHub-Copilot-%ED%99%9C%EC%9A%A9%EA%B8%B0</guid>
            <pubDate>Thu, 06 Mar 2025 01:24:57 GMT</pubDate>
            <description><![CDATA[<p><a href="https://techtopic.skplanet.com/github-copilot/">출처</a></p>
]]></description>
        </item>
    </channel>
</rss>