<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>김형준의 개발자 블로그</title>
    <link>https://devreco.tistory.com/</link>
    <description>devreco 님의 블로그 입니다.</description>
    <language>ko</language>
    <pubDate>Wed, 7 Oct 2026 22:15:21 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>김형준</managingEditor>
    <item>
      <title>26년 인턴준비 SQL</title>
      <link>https://devreco.tistory.com/39</link>
      <description>&lt;h2 data-end=&quot;35&quot; data-start=&quot;0&quot; data-ke-size=&quot;size26&quot;&gt;1. 면접관이 말한 &amp;ldquo;SQL을 1주일 공부해 오라&amp;rdquo;의 의미&lt;/h2&gt;
&lt;p data-end=&quot;145&quot; data-start=&quot;37&quot; data-ke-size=&quot;size16&quot;&gt;기업이 요구한 것은 SQLD 시험을 다시 공부하라는 의미보다는, &lt;b&gt;실제 데이터베이스에서 데이터를 조회하고 검증할 수 있을 정도로 SQL을 직접 작성해 보라&lt;/b&gt;는 의미입니다.&lt;/p&gt;
&lt;p data-end=&quot;409&quot; data-start=&quot;375&quot; data-ke-size=&quot;size16&quot;&gt;따라서 면접관이 기대하는 수준은 다음과 같습니다.&lt;/p&gt;
&lt;blockquote data-end=&quot;499&quot; data-start=&quot;411&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;499&quot; data-start=&quot;413&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;SQL 문법을 알고 있는가?&amp;rdquo;가 아니라&lt;br /&gt;&amp;ldquo;테이블 구조를 보고 필요한 데이터를 추출하고, 이상 여부를 확인하며, 결과가 맞는지 검증할 수 있는가?&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;504&quot; data-start=&quot;501&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;527&quot; data-start=&quot;506&quot; data-ke-size=&quot;size26&quot;&gt;2. 공부해야 할 내용의 우선순위&lt;/h2&gt;
&lt;h3 data-end=&quot;555&quot; data-start=&quot;529&quot; data-ke-size=&quot;size23&quot;&gt;1순위. 기본 조회문을 자유롭게 작성하기&lt;/h3&gt;
&lt;p data-end=&quot;628&quot; data-start=&quot;557&quot; data-ke-size=&quot;size16&quot;&gt;SQLD 자격증이 있다면 개념은 이미 알고 있을 가능성이 높습니다. 다만 면접에서는 문법 설명보다 직접 작성 능력이 중요합니다.&lt;/p&gt;
&lt;p data-end=&quot;654&quot; data-start=&quot;630&quot; data-ke-size=&quot;size16&quot;&gt;반드시 익혀야 하는 내용은 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;n1ql&quot;&gt;&lt;code&gt;SELECT
FROM
WHERE
ORDER BY
LIMIT
DISTINCT&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;734&quot; data-start=&quot;710&quot; data-ke-size=&quot;size16&quot;&gt;다음 조건을 바로 작성할 수 있어야 합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;n1ql&quot;&gt;&lt;code&gt;SELECT user_id, product_id, score
FROM recommendations
WHERE score &amp;gt;= 0.8
ORDER BY score DESC
LIMIT 100;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;870&quot; data-start=&quot;853&quot; data-ke-size=&quot;size16&quot;&gt;공부 포인트는 다음과 같습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;979&quot; data-start=&quot;872&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;885&quot; data-start=&quot;872&quot;&gt;필요한 열만 선택하기&lt;/li&gt;
&lt;li data-end=&quot;930&quot; data-start=&quot;886&quot;&gt;여러 조건을 AND, OR, IN, BETWEEN으로 표현하기&lt;/li&gt;
&lt;li data-end=&quot;948&quot; data-start=&quot;931&quot;&gt;날짜 범위로 데이터 조회하기&lt;/li&gt;
&lt;li data-end=&quot;959&quot; data-start=&quot;949&quot;&gt;중복값 제거하기&lt;/li&gt;
&lt;li data-end=&quot;979&quot; data-start=&quot;960&quot;&gt;상위 또는 하위 데이터 추출하기&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;984&quot; data-start=&quot;981&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;999&quot; data-start=&quot;986&quot; data-ke-size=&quot;size23&quot;&gt;2순위. JOIN&lt;/h3&gt;
&lt;p data-end=&quot;1097&quot; data-start=&quot;1001&quot; data-ke-size=&quot;size16&quot;&gt;실무 SQL에서 가장 중요합니다. 인텔리시스처럼 사용자, 상품, 추천 결과, 콘텐츠 등의 데이터를 다루는 회사에서는 여러 테이블을 결합하는 작업이 빈번할 가능성이 높습니다.&lt;/p&gt;
&lt;p data-end=&quot;1112&quot; data-start=&quot;1099&quot; data-ke-size=&quot;size16&quot;&gt;반드시 구분해야 합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;INNER JOIN
LEFT JOIN&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1160&quot; data-start=&quot;1147&quot; data-ke-size=&quot;size16&quot;&gt;예시는 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;SELECT
    r.user_id,
    u.gender,
    r.product_id,
    p.category,
    r.score
FROM recommendations r
JOIN users u
    ON r.user_id = u.user_id
JOIN products p
    ON r.product_id = p.product_id;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1396&quot; data-start=&quot;1373&quot; data-ke-size=&quot;size16&quot;&gt;특히 다음 질문에 답할 수 있어야 합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1501&quot; data-start=&quot;1398&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1429&quot; data-start=&quot;1398&quot;&gt;INNER JOIN과 LEFT JOIN의 차이&lt;/li&gt;
&lt;li data-end=&quot;1452&quot; data-start=&quot;1430&quot;&gt;JOIN 이후 행 수가 증가하는 이유&lt;/li&gt;
&lt;li data-end=&quot;1478&quot; data-start=&quot;1453&quot;&gt;중복 키가 있을 때 데이터가 왜 불어나는지&lt;/li&gt;
&lt;li data-end=&quot;1501&quot; data-start=&quot;1479&quot;&gt;매칭되지 않은 데이터를 어떻게 찾는지&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1527&quot; data-start=&quot;1503&quot; data-ke-size=&quot;size16&quot;&gt;매칭되지 않은 데이터는 다음처럼 확인합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;n1ql&quot;&gt;&lt;code&gt;SELECT r.*
FROM recommendations r
LEFT JOIN products p
    ON r.product_id = p.product_id
WHERE p.product_id IS NULL;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1723&quot; data-start=&quot;1659&quot; data-ke-size=&quot;size16&quot;&gt;이러한 쿼리는 &lt;b&gt;추천 결과에 존재하지만 상품 DB에는 없는 상품 ID&lt;/b&gt;를 찾는 검증 작업에 사용할 수 있습니다.&lt;/p&gt;
&lt;hr data-end=&quot;1728&quot; data-start=&quot;1725&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1751&quot; data-start=&quot;1730&quot; data-ke-size=&quot;size23&quot;&gt;3순위. 집계와 GROUP BY&lt;/h3&gt;
&lt;p data-end=&quot;1815&quot; data-start=&quot;1753&quot; data-ke-size=&quot;size16&quot;&gt;AI 모델이나 추천 시스템의 결과를 검증할 때는 개별 데이터를 보는 것뿐 아니라 그룹별 통계를 계산해야 합니다.&lt;/p&gt;
&lt;p data-end=&quot;1833&quot; data-start=&quot;1817&quot; data-ke-size=&quot;size16&quot;&gt;필수 함수는 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;stylus&quot;&gt;&lt;code&gt;COUNT()
SUM()
AVG()
MIN()
MAX()
GROUP BY
HAVING&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1908&quot; data-start=&quot;1895&quot; data-ke-size=&quot;size16&quot;&gt;예시는 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;sql&quot;&gt;&lt;code&gt;SELECT
    category,
    COUNT(*) AS recommendation_count,
    AVG(score) AS average_score
FROM recommendations
GROUP BY category
HAVING COUNT(*) &amp;gt;= 100;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2095&quot; data-start=&quot;2076&quot; data-ke-size=&quot;size16&quot;&gt;다음 작업을 할 수 있어야 합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2187&quot; data-start=&quot;2097&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2109&quot; data-start=&quot;2097&quot;&gt;사용자별 추천 개수&lt;/li&gt;
&lt;li data-end=&quot;2125&quot; data-start=&quot;2110&quot;&gt;상품 카테고리별 추천 수&lt;/li&gt;
&lt;li data-end=&quot;2140&quot; data-start=&quot;2126&quot;&gt;날짜별 생성 데이터 수&lt;/li&gt;
&lt;li data-end=&quot;2151&quot; data-start=&quot;2141&quot;&gt;평균 추천 점수&lt;/li&gt;
&lt;li data-end=&quot;2163&quot; data-start=&quot;2152&quot;&gt;중복 데이터 개수&lt;/li&gt;
&lt;li data-end=&quot;2187&quot; data-start=&quot;2164&quot;&gt;특정 기준보다 데이터가 적은 그룹 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;2192&quot; data-start=&quot;2189&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;2224&quot; data-start=&quot;2194&quot; data-ke-size=&quot;size23&quot;&gt;4순위. NULL, 중복값 및 데이터 이상 검증&lt;/h3&gt;
&lt;p data-end=&quot;2270&quot; data-start=&quot;2226&quot; data-ke-size=&quot;size16&quot;&gt;면접에서 &amp;ldquo;검증 업무&amp;rdquo;를 언급했다면 가장 중요하게 볼 가능성이 높은 부분입니다.&lt;/p&gt;
&lt;h4 data-end=&quot;2284&quot; data-start=&quot;2272&quot; data-ke-size=&quot;size20&quot;&gt;NULL 확인&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;sql&quot;&gt;&lt;code&gt;SELECT COUNT(*)
FROM products
WHERE category IS NULL;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 data-end=&quot;2364&quot; data-start=&quot;2352&quot; data-ke-size=&quot;size20&quot;&gt;중복 키 확인&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;oxygene&quot;&gt;&lt;code&gt;SELECT
    product_id,
    COUNT(*) AS duplicate_count
FROM products
GROUP BY product_id
HAVING COUNT(*) &amp;gt; 1;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 data-end=&quot;2501&quot; data-start=&quot;2488&quot; data-ke-size=&quot;size20&quot;&gt;값의 범위 확인&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;n1ql&quot;&gt;&lt;code&gt;SELECT *
FROM recommendations
WHERE score &amp;lt; 0
   OR score &amp;gt; 1;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 data-end=&quot;2592&quot; data-start=&quot;2578&quot; data-ke-size=&quot;size20&quot;&gt;참조 무결성 확인&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;SELECT r.*
FROM recommendations r
LEFT JOIN users u
    ON r.user_id = u.user_id
WHERE u.user_id IS NULL;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 data-end=&quot;2728&quot; data-start=&quot;2712&quot; data-ke-size=&quot;size20&quot;&gt;날짜 논리 오류 확인&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;n1ql&quot;&gt;&lt;code&gt;SELECT *
FROM user_events
WHERE created_at &amp;gt; updated_at;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2851&quot; data-start=&quot;2799&quot; data-ke-size=&quot;size16&quot;&gt;이 부분은 단순 SQL 문법보다 중요합니다. 면접에서는 다음과 같은 질문이 나올 수 있습니다.&lt;/p&gt;
&lt;blockquote data-end=&quot;2902&quot; data-start=&quot;2853&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;2902&quot; data-start=&quot;2855&quot; data-ke-size=&quot;size16&quot;&gt;추천 점수가 0에서 1 사이여야 하는데 일부 값이 범위를 벗어났다. 어떻게 찾겠는가?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote data-end=&quot;2954&quot; data-start=&quot;2904&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;2954&quot; data-start=&quot;2906&quot; data-ke-size=&quot;size16&quot;&gt;상품 테이블에 존재하지 않는 상품 ID가 추천 결과에 포함되었는지 어떻게 확인하겠는가?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote data-end=&quot;2997&quot; data-start=&quot;2956&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;2997&quot; data-start=&quot;2958&quot; data-ke-size=&quot;size16&quot;&gt;사용자별 추천 결과가 정확히 10개씩 생성되었는지 어떻게 확인하겠는가?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;3002&quot; data-start=&quot;2999&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;3022&quot; data-start=&quot;3004&quot; data-ke-size=&quot;size23&quot;&gt;5순위. CASE WHEN&lt;/h3&gt;
&lt;p data-end=&quot;3059&quot; data-start=&quot;3024&quot; data-ke-size=&quot;size16&quot;&gt;데이터를 조건별로 분류하거나 검증 결과를 표시할 때 사용합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;sql&quot;&gt;&lt;code&gt;SELECT
    user_id,
    score,
    CASE
        WHEN score &amp;gt;= 0.8 THEN 'high'
        WHEN score &amp;gt;= 0.5 THEN 'medium'
        ELSE 'low'
    END AS score_level
FROM recommendations;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;3280&quot; data-start=&quot;3255&quot; data-ke-size=&quot;size16&quot;&gt;검증용으로는 다음과 같이 사용할 수 있습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;sql&quot;&gt;&lt;code&gt;SELECT
    product_id,
    price,
    CASE
        WHEN price IS NULL THEN 'NULL 오류'
        WHEN price &amp;lt; 0 THEN '음수 오류'
        ELSE '정상'
    END AS validation_result
FROM products;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;3480&quot; data-start=&quot;3477&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;3500&quot; data-start=&quot;3482&quot; data-ke-size=&quot;size23&quot;&gt;6순위. 서브쿼리와 CTE&lt;/h3&gt;
&lt;p data-end=&quot;3529&quot; data-start=&quot;3502&quot; data-ke-size=&quot;size16&quot;&gt;복잡한 쿼리를 단계별로 구성할 수 있어야 합니다.&lt;/p&gt;
&lt;p data-end=&quot;3555&quot; data-start=&quot;3531&quot; data-ke-size=&quot;size16&quot;&gt;CTE는 WITH를 사용하는 방식입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;WITH user_counts AS (
    SELECT
        user_id,
        COUNT(*) AS recommendation_count
    FROM recommendations
    GROUP BY user_id
)
SELECT *
FROM user_counts
WHERE recommendation_count &amp;lt;&amp;gt; 10;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;3802&quot; data-start=&quot;3768&quot; data-ke-size=&quot;size16&quot;&gt;이 쿼리는 사용자별 추천 개수가 정확히 10개인지 검증합니다.&lt;/p&gt;
&lt;p data-end=&quot;3852&quot; data-start=&quot;3804&quot; data-ke-size=&quot;size16&quot;&gt;1주일 준비라면 복잡한 상관 서브쿼리까지 공부할 필요는 없지만, 다음은 알아야 합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;3924&quot; data-start=&quot;3854&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;3867&quot; data-start=&quot;3854&quot;&gt;서브쿼리의 기본 구조&lt;/li&gt;
&lt;li data-end=&quot;3884&quot; data-start=&quot;3868&quot;&gt;IN, EXISTS&lt;/li&gt;
&lt;li data-end=&quot;3902&quot; data-start=&quot;3885&quot;&gt;WITH를 사용한 CTE&lt;/li&gt;
&lt;li data-end=&quot;3924&quot; data-start=&quot;3903&quot;&gt;복잡한 쿼리를 단계별로 나누는 방법&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;3929&quot; data-start=&quot;3926&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;3946&quot; data-start=&quot;3931&quot; data-ke-size=&quot;size23&quot;&gt;7순위. 윈도우 함수&lt;/h3&gt;
&lt;p data-end=&quot;4012&quot; data-start=&quot;3948&quot; data-ke-size=&quot;size16&quot;&gt;시간이 허용된다면 반드시 공부하는 것이 좋습니다. SQLD 기본 수준과 실무 SQL을 구분하는 대표적인 영역입니다.&lt;/p&gt;
&lt;p data-end=&quot;4030&quot; data-start=&quot;4014&quot; data-ke-size=&quot;size16&quot;&gt;필수 함수는 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;stylus&quot;&gt;&lt;code&gt;ROW_NUMBER()
RANK()
DENSE_RANK()
LAG()
LEAD()
SUM() OVER()
AVG() OVER()&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;4146&quot; data-start=&quot;4116&quot; data-ke-size=&quot;size16&quot;&gt;사용자별 추천 순위를 계산하는 예시는 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;n1ql&quot;&gt;&lt;code&gt;SELECT
    user_id,
    product_id,
    score,
    ROW_NUMBER() OVER (
        PARTITION BY user_id
        ORDER BY score DESC
    ) AS recommendation_rank
FROM recommendations;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;4373&quot; data-start=&quot;4339&quot; data-ke-size=&quot;size16&quot;&gt;사용자별 상위 5개 추천만 가져오려면 다음과 같이 작성합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;WITH ranked AS (
    SELECT
        user_id,
        product_id,
        score,
        ROW_NUMBER() OVER (
            PARTITION BY user_id
            ORDER BY score DESC
        ) AS rn
    FROM recommendations
)
SELECT *
FROM ranked
WHERE rn &amp;lt;= 5;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;4670&quot; data-start=&quot;4639&quot; data-ke-size=&quot;size16&quot;&gt;추천 시스템이나 데이터 검증 업무에서는 매우 유용합니다.&lt;/p&gt;
&lt;hr data-end=&quot;4675&quot; data-start=&quot;4672&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;4712&quot; data-start=&quot;4677&quot; data-ke-size=&quot;size26&quot;&gt;3.&amp;nbsp; 실제로 나올 가능성이 높은 SQL 업무&lt;/h2&gt;
&lt;p data-end=&quot;4896&quot; data-start=&quot;4714&quot; data-ke-size=&quot;size16&quot;&gt;해당 기업은 AI, 빅데이터, 추천 시스템, 기업용 데이터 분석 및 RAG 기반 솔루션을 개발하고 있습니다. 따라서 인턴 SQL 업무는 전통적인 회계 데이터 조회보다는 사용자, 상품, 문서, 추천 결과 및 모델 출력 데이터를 다루는 방향일 가능성이 높습니다.&lt;/p&gt;
&lt;p data-end=&quot;4914&quot; data-start=&quot;4898&quot; data-ke-size=&quot;size16&quot;&gt;예상 업무는 다음과 같습니다.&lt;/p&gt;
&lt;h3 data-end=&quot;4932&quot; data-start=&quot;4916&quot; data-ke-size=&quot;size23&quot;&gt;데이터 수집 결과 검증&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;5015&quot; data-start=&quot;4934&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;4952&quot; data-start=&quot;4934&quot;&gt;수집된 상품 데이터 개수 확인&lt;/li&gt;
&lt;li data-end=&quot;4963&quot; data-start=&quot;4953&quot;&gt;중복 상품 확인&lt;/li&gt;
&lt;li data-end=&quot;4975&quot; data-start=&quot;4964&quot;&gt;누락된 필드 확인&lt;/li&gt;
&lt;li data-end=&quot;4995&quot; data-start=&quot;4976&quot;&gt;비정상 가격 또는 카테고리 확인&lt;/li&gt;
&lt;li data-end=&quot;5015&quot; data-start=&quot;4996&quot;&gt;수집 날짜별 데이터 증가량 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;5029&quot; data-start=&quot;5017&quot; data-ke-size=&quot;size23&quot;&gt;추천 결과 검증&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;5135&quot; data-start=&quot;5031&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;5046&quot; data-start=&quot;5031&quot;&gt;사용자별 추천 개수 확인&lt;/li&gt;
&lt;li data-end=&quot;5063&quot; data-start=&quot;5047&quot;&gt;동일 상품 중복 추천 확인&lt;/li&gt;
&lt;li data-end=&quot;5085&quot; data-start=&quot;5064&quot;&gt;존재하지 않는 상품 추천 여부 확인&lt;/li&gt;
&lt;li data-end=&quot;5099&quot; data-start=&quot;5086&quot;&gt;추천 점수 범위 확인&lt;/li&gt;
&lt;li data-end=&quot;5112&quot; data-start=&quot;5100&quot;&gt;카테고리 편향 확인&lt;/li&gt;
&lt;li data-end=&quot;5135&quot; data-start=&quot;5113&quot;&gt;특정 상품만 과도하게 추천되는지 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;5156&quot; data-start=&quot;5137&quot; data-ke-size=&quot;size23&quot;&gt;AI 또는 RAG 결과 검증&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;5264&quot; data-start=&quot;5158&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;5175&quot; data-start=&quot;5158&quot;&gt;질문별 검색 문서 개수 확인&lt;/li&gt;
&lt;li data-end=&quot;5195&quot; data-start=&quot;5176&quot;&gt;동일 문서 중복 검색 여부 확인&lt;/li&gt;
&lt;li data-end=&quot;5209&quot; data-start=&quot;5196&quot;&gt;검색 점수 범위 확인&lt;/li&gt;
&lt;li data-end=&quot;5228&quot; data-start=&quot;5210&quot;&gt;답변과 연결된 출처 문서 확인&lt;/li&gt;
&lt;li data-end=&quot;5246&quot; data-start=&quot;5229&quot;&gt;데이터 생성 전후 결과 비교&lt;/li&gt;
&lt;li data-end=&quot;5264&quot; data-start=&quot;5247&quot;&gt;모델 버전별 결과 차이 집계&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;5282&quot; data-start=&quot;5266&quot; data-ke-size=&quot;size23&quot;&gt;데이터셋 생성 및 정제&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;5379&quot; data-start=&quot;5284&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;5296&quot; data-start=&quot;5284&quot;&gt;학습용 데이터 추출&lt;/li&gt;
&lt;li data-end=&quot;5319&quot; data-start=&quot;5297&quot;&gt;특정 기간 또는 조건의 데이터 필터링&lt;/li&gt;
&lt;li data-end=&quot;5337&quot; data-start=&quot;5320&quot;&gt;사용자 및 상품 정보를 결합&lt;/li&gt;
&lt;li data-end=&quot;5358&quot; data-start=&quot;5338&quot;&gt;학습, 검증, 테스트 데이터 분리&lt;/li&gt;
&lt;li data-end=&quot;5379&quot; data-start=&quot;5359&quot;&gt;라벨별 데이터 개수 및 분포 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;5384&quot; data-start=&quot;5381&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;5419&quot; data-start=&quot;5386&quot; data-ke-size=&quot;size26&quot;&gt;4. SQLD 보유자인 경우 부족할 가능성이 높은 부분&lt;/h2&gt;
&lt;p data-end=&quot;5457&quot; data-start=&quot;5421&quot; data-ke-size=&quot;size16&quot;&gt;SQLD가 있다면 다음 내용은 이미 알고 있을 가능성이 높습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;5542&quot; data-start=&quot;5459&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;5477&quot; data-start=&quot;5459&quot;&gt;관계형 데이터베이스 기본 개념&lt;/li&gt;
&lt;li data-end=&quot;5491&quot; data-start=&quot;5478&quot;&gt;엔터티, 속성, 관계&lt;/li&gt;
&lt;li data-end=&quot;5497&quot; data-start=&quot;5492&quot;&gt;정규화&lt;/li&gt;
&lt;li data-end=&quot;5509&quot; data-start=&quot;5498&quot;&gt;기본 SQL 문법&lt;/li&gt;
&lt;li data-end=&quot;5526&quot; data-start=&quot;5510&quot;&gt;JOIN과 서브쿼리의 개념&lt;/li&gt;
&lt;li data-end=&quot;5542&quot; data-start=&quot;5527&quot;&gt;트랜잭션 및 인덱스 개념&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;5571&quot; data-start=&quot;5544&quot; data-ke-size=&quot;size16&quot;&gt;그러나 실무에서는 다음 역량이 별도로 필요합니다.&lt;/p&gt;
&lt;h3 data-end=&quot;5602&quot; data-start=&quot;5573&quot; data-ke-size=&quot;size23&quot;&gt;첫째, 빈 화면에서 직접 쿼리를 작성하는 능력&lt;/h3&gt;
&lt;p data-end=&quot;5673&quot; data-start=&quot;5604&quot; data-ke-size=&quot;size16&quot;&gt;선택지를 고르는 것과 직접 쿼리를 작성하는 것은 다릅니다. 문제를 읽고 바로 SELECT부터 작성하는 연습이 필요합니다.&lt;/p&gt;
&lt;h3 data-end=&quot;5698&quot; data-start=&quot;5675&quot; data-ke-size=&quot;size23&quot;&gt;둘째, 테이블 관계를 파악하는 능력&lt;/h3&gt;
&lt;p data-end=&quot;5736&quot; data-start=&quot;5700&quot; data-ke-size=&quot;size16&quot;&gt;다음 구조를 보고 어떤 키로 JOIN해야 하는지 판단해야 합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;markdown&quot;&gt;&lt;code&gt;users
- user_id
- age
- gender

products
- product_id
- category
- price

recommendations
- user_id
- product_id
- score
- created_at&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-end=&quot;5908&quot; data-start=&quot;5885&quot; data-ke-size=&quot;size23&quot;&gt;셋째, 결과가 맞는지 검증하는 능력&lt;/h3&gt;
&lt;p data-end=&quot;5929&quot; data-start=&quot;5910&quot; data-ke-size=&quot;size16&quot;&gt;쿼리가 실행된다고 정답은 아닙니다.&lt;/p&gt;
&lt;p data-end=&quot;5992&quot; data-start=&quot;5931&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 JOIN 전 데이터가 1,000행인데 JOIN 후 50,000행이 나왔다면 다음을 의심해야 합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;6064&quot; data-start=&quot;5994&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;6010&quot; data-start=&quot;5994&quot;&gt;JOIN 키가 잘못되었는가&lt;/li&gt;
&lt;li data-end=&quot;6030&quot; data-start=&quot;6011&quot;&gt;한쪽 테이블에 중복 키가 있는가&lt;/li&gt;
&lt;li data-end=&quot;6046&quot; data-start=&quot;6031&quot;&gt;다대다 관계가 발생했는가&lt;/li&gt;
&lt;li data-end=&quot;6064&quot; data-start=&quot;6047&quot;&gt;JOIN 조건이 누락되었는가&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;6087&quot; data-start=&quot;6066&quot; data-ke-size=&quot;size23&quot;&gt;넷째, 데이터 이상을 찾는 능력&lt;/h3&gt;
&lt;p data-end=&quot;6135&quot; data-start=&quot;6089&quot; data-ke-size=&quot;size16&quot;&gt;실무에서는 정상 데이터를 조회하는 것보다 비정상 데이터를 찾는 SQL이 중요합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;lasso&quot;&gt;&lt;code&gt;WHERE column IS NULL
HAVING COUNT(*) &amp;gt; 1
WHERE score NOT BETWEEN 0 AND 1
LEFT JOIN ... WHERE joined_key IS NULL&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;6282&quot; data-start=&quot;6261&quot; data-ke-size=&quot;size16&quot;&gt;이 패턴을 집중적으로 연습해야 합니다.&lt;/p&gt;
&lt;hr data-end=&quot;6287&quot; data-start=&quot;6284&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;6304&quot; data-start=&quot;6289&quot; data-ke-size=&quot;size26&quot;&gt;5. 1주일 학습 계획&lt;/h2&gt;
&lt;h3 data-end=&quot;6326&quot; data-start=&quot;6306&quot; data-ke-size=&quot;size23&quot;&gt;1일 차: 기본 조회와 조건문&lt;/h3&gt;
&lt;p data-end=&quot;6334&quot; data-start=&quot;6328&quot; data-ke-size=&quot;size16&quot;&gt;학습 내용:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;6455&quot; data-start=&quot;6336&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;6363&quot; data-start=&quot;6336&quot;&gt;SELECT, FROM, WHERE&lt;/li&gt;
&lt;li data-end=&quot;6384&quot; data-start=&quot;6364&quot;&gt;AND, OR, NOT&lt;/li&gt;
&lt;li data-end=&quot;6410&quot; data-start=&quot;6385&quot;&gt;IN, BETWEEN, LIKE&lt;/li&gt;
&lt;li data-end=&quot;6432&quot; data-start=&quot;6411&quot;&gt;ORDER BY, LIMIT&lt;/li&gt;
&lt;li data-end=&quot;6445&quot; data-start=&quot;6433&quot;&gt;DISTINCT&lt;/li&gt;
&lt;li data-end=&quot;6455&quot; data-start=&quot;6446&quot;&gt;NULL 처리&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;6460&quot; data-start=&quot;6457&quot; data-ke-size=&quot;size16&quot;&gt;목표:&lt;/p&gt;
&lt;blockquote data-end=&quot;6497&quot; data-start=&quot;6462&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;6497&quot; data-start=&quot;6464&quot; data-ke-size=&quot;size16&quot;&gt;하나의 테이블에서 필요한 데이터를 자유롭게 필터링할 수 있음&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;6502&quot; data-start=&quot;6499&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;6528&quot; data-start=&quot;6504&quot; data-ke-size=&quot;size23&quot;&gt;2일 차: GROUP BY와 집계함수&lt;/h3&gt;
&lt;p data-end=&quot;6536&quot; data-start=&quot;6530&quot; data-ke-size=&quot;size16&quot;&gt;학습 내용:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;6621&quot; data-start=&quot;6538&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;6575&quot; data-start=&quot;6538&quot;&gt;COUNT, SUM, AVG, MIN, MAX&lt;/li&gt;
&lt;li data-end=&quot;6588&quot; data-start=&quot;6576&quot;&gt;GROUP BY&lt;/li&gt;
&lt;li data-end=&quot;6599&quot; data-start=&quot;6589&quot;&gt;HAVING&lt;/li&gt;
&lt;li data-end=&quot;6621&quot; data-start=&quot;6600&quot;&gt;날짜별, 사용자별, 카테고리별 집계&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;6626&quot; data-start=&quot;6623&quot; data-ke-size=&quot;size16&quot;&gt;목표:&lt;/p&gt;
&lt;blockquote data-end=&quot;6658&quot; data-start=&quot;6628&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;6658&quot; data-start=&quot;6630&quot; data-ke-size=&quot;size16&quot;&gt;데이터 분포와 이상치를 집계 쿼리로 확인할 수 있음&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;6663&quot; data-start=&quot;6660&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;6685&quot; data-start=&quot;6665&quot; data-ke-size=&quot;size23&quot;&gt;3일 차: JOIN 집중 연습&lt;/h3&gt;
&lt;p data-end=&quot;6693&quot; data-start=&quot;6687&quot; data-ke-size=&quot;size16&quot;&gt;학습 내용:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;6775&quot; data-start=&quot;6695&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;6709&quot; data-start=&quot;6695&quot;&gt;INNER JOIN&lt;/li&gt;
&lt;li data-end=&quot;6723&quot; data-start=&quot;6710&quot;&gt;LEFT JOIN&lt;/li&gt;
&lt;li data-end=&quot;6742&quot; data-start=&quot;6724&quot;&gt;2개 및 3개 테이블 JOIN&lt;/li&gt;
&lt;li data-end=&quot;6755&quot; data-start=&quot;6743&quot;&gt;미매칭 데이터 찾기&lt;/li&gt;
&lt;li data-end=&quot;6775&quot; data-start=&quot;6756&quot;&gt;JOIN으로 행이 증가하는 원인&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;6780&quot; data-start=&quot;6777&quot; data-ke-size=&quot;size16&quot;&gt;목표:&lt;/p&gt;
&lt;blockquote data-end=&quot;6813&quot; data-start=&quot;6782&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;6813&quot; data-start=&quot;6784&quot; data-ke-size=&quot;size16&quot;&gt;사용자, 상품 및 추천 결과 테이블을 결합할 수 있음&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;6818&quot; data-start=&quot;6815&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;6840&quot; data-start=&quot;6820&quot; data-ke-size=&quot;size23&quot;&gt;4일 차: 데이터 검증 SQL&lt;/h3&gt;
&lt;p data-end=&quot;6848&quot; data-start=&quot;6842&quot; data-ke-size=&quot;size16&quot;&gt;학습 내용:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;6915&quot; data-start=&quot;6850&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;6859&quot; data-start=&quot;6850&quot;&gt;NULL 검사&lt;/li&gt;
&lt;li data-end=&quot;6868&quot; data-start=&quot;6860&quot;&gt;중복값 검사&lt;/li&gt;
&lt;li data-end=&quot;6879&quot; data-start=&quot;6869&quot;&gt;범위 오류 검사&lt;/li&gt;
&lt;li data-end=&quot;6891&quot; data-start=&quot;6880&quot;&gt;참조 무결성 검사&lt;/li&gt;
&lt;li data-end=&quot;6903&quot; data-start=&quot;6892&quot;&gt;레코드 개수 비교&lt;/li&gt;
&lt;li data-end=&quot;6915&quot; data-start=&quot;6904&quot;&gt;데이터 전후 비교&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;6920&quot; data-start=&quot;6917&quot; data-ke-size=&quot;size16&quot;&gt;목표:&lt;/p&gt;
&lt;blockquote data-end=&quot;6960&quot; data-start=&quot;6922&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;6960&quot; data-start=&quot;6924&quot; data-ke-size=&quot;size16&quot;&gt;정상 데이터를 조회하는 것이 아니라 오류 데이터를 찾아낼 수 있음&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;6965&quot; data-start=&quot;6962&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;6998&quot; data-start=&quot;6967&quot; data-ke-size=&quot;size23&quot;&gt;5일 차: CASE WHEN, 서브쿼리 및 CTE&lt;/h3&gt;
&lt;p data-end=&quot;7006&quot; data-start=&quot;7000&quot; data-ke-size=&quot;size16&quot;&gt;학습 내용:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;7067&quot; data-start=&quot;7008&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;7021&quot; data-start=&quot;7008&quot;&gt;CASE WHEN&lt;/li&gt;
&lt;li data-end=&quot;7037&quot; data-start=&quot;7022&quot;&gt;스칼라 및 일반 서브쿼리&lt;/li&gt;
&lt;li data-end=&quot;7054&quot; data-start=&quot;7038&quot;&gt;IN, EXISTS&lt;/li&gt;
&lt;li data-end=&quot;7067&quot; data-start=&quot;7055&quot;&gt;WITH CTE&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;7072&quot; data-start=&quot;7069&quot; data-ke-size=&quot;size16&quot;&gt;목표:&lt;/p&gt;
&lt;blockquote data-end=&quot;7104&quot; data-start=&quot;7074&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;7104&quot; data-start=&quot;7076&quot; data-ke-size=&quot;size16&quot;&gt;복잡한 검증 조건을 단계별 SQL로 구성할 수 있음&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;7109&quot; data-start=&quot;7106&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;7127&quot; data-start=&quot;7111&quot; data-ke-size=&quot;size23&quot;&gt;6일 차: 윈도우 함수&lt;/h3&gt;
&lt;p data-end=&quot;7135&quot; data-start=&quot;7129&quot; data-ke-size=&quot;size16&quot;&gt;학습 내용:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;7209&quot; data-start=&quot;7137&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;7151&quot; data-start=&quot;7137&quot;&gt;ROW_NUMBER&lt;/li&gt;
&lt;li data-end=&quot;7160&quot; data-start=&quot;7152&quot;&gt;RANK&lt;/li&gt;
&lt;li data-end=&quot;7177&quot; data-start=&quot;7161&quot;&gt;PARTITION BY&lt;/li&gt;
&lt;li data-end=&quot;7193&quot; data-start=&quot;7178&quot;&gt;LAG, LEAD&lt;/li&gt;
&lt;li data-end=&quot;7209&quot; data-start=&quot;7194&quot;&gt;사용자별 Top-N 추출&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;7214&quot; data-start=&quot;7211&quot; data-ke-size=&quot;size16&quot;&gt;목표:&lt;/p&gt;
&lt;blockquote data-end=&quot;7247&quot; data-start=&quot;7216&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;7247&quot; data-start=&quot;7218&quot; data-ke-size=&quot;size16&quot;&gt;사용자별 추천 순위와 시점별 변화량을 계산할 수 있음&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;7252&quot; data-start=&quot;7249&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;7272&quot; data-start=&quot;7254&quot; data-ke-size=&quot;size23&quot;&gt;7일 차: 모의 과제 수행&lt;/h3&gt;
&lt;p data-end=&quot;7306&quot; data-start=&quot;7274&quot; data-ke-size=&quot;size16&quot;&gt;다음과 같은 작은 프로젝트를 수행하는 것이 가장 좋습니다.&lt;/p&gt;
&lt;p data-end=&quot;7312&quot; data-start=&quot;7308&quot; data-ke-size=&quot;size16&quot;&gt;테이블:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;nginx&quot;&gt;&lt;code&gt;users
products
recommendations
user_events&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;7376&quot; data-start=&quot;7370&quot; data-ke-size=&quot;size16&quot;&gt;검증 항목:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;7569&quot; data-start=&quot;7378&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;7401&quot; data-start=&quot;7378&quot;&gt;사용자별 추천 개수가 10개인지 확인&lt;/li&gt;
&lt;li data-end=&quot;7433&quot; data-start=&quot;7402&quot;&gt;동일 사용자에게 동일 상품이 중복 추천되었는지 확인&lt;/li&gt;
&lt;li data-end=&quot;7461&quot; data-start=&quot;7434&quot;&gt;상품 테이블에 없는 상품이 추천되었는지 확인&lt;/li&gt;
&lt;li data-end=&quot;7487&quot; data-start=&quot;7462&quot;&gt;추천 점수가 0에서 1을 벗어났는지 확인&lt;/li&gt;
&lt;li data-end=&quot;7508&quot; data-start=&quot;7488&quot;&gt;카테고리별 평균 추천 점수 계산&lt;/li&gt;
&lt;li data-end=&quot;7528&quot; data-start=&quot;7509&quot;&gt;사용자별 상위 3개 추천 추출&lt;/li&gt;
&lt;li data-end=&quot;7547&quot; data-start=&quot;7529&quot;&gt;날짜별 추천 생성 건수 계산&lt;/li&gt;
&lt;li data-end=&quot;7569&quot; data-start=&quot;7548&quot;&gt;전날 대비 추천 생성량 변화 계산&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-end=&quot;7574&quot; data-start=&quot;7571&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;7601&quot; data-start=&quot;7576&quot; data-ke-size=&quot;size26&quot;&gt;6. 실무 전에 반드시 풀어봐야 할 문제&lt;/h2&gt;
&lt;h3 data-end=&quot;7656&quot; data-start=&quot;7648&quot; data-ke-size=&quot;size23&quot;&gt;문제 1&lt;/h3&gt;
&lt;p data-end=&quot;7681&quot; data-start=&quot;7658&quot; data-ke-size=&quot;size16&quot;&gt;각 사용자별 추천 상품 개수를 구하십시오.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;SELECT
    user_id,
    COUNT(*) AS recommendation_count
FROM recommendations
GROUP BY user_id;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-end=&quot;7799&quot; data-start=&quot;7791&quot; data-ke-size=&quot;size23&quot;&gt;문제 2&lt;/h3&gt;
&lt;p data-end=&quot;7827&quot; data-start=&quot;7801&quot; data-ke-size=&quot;size16&quot;&gt;추천 상품이 10개가 아닌 사용자를 찾으십시오.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;oxygene&quot;&gt;&lt;code&gt;SELECT
    user_id,
    COUNT(*) AS recommendation_count
FROM recommendations
GROUP BY user_id
HAVING COUNT(*) &amp;lt;&amp;gt; 10;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-end=&quot;7967&quot; data-start=&quot;7959&quot; data-ke-size=&quot;size23&quot;&gt;문제 3&lt;/h3&gt;
&lt;p data-end=&quot;8002&quot; data-start=&quot;7969&quot; data-ke-size=&quot;size16&quot;&gt;동일 사용자에게 동일 상품이 중복 추천된 경우를 찾으십시오.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;oxygene&quot;&gt;&lt;code&gt;SELECT
    user_id,
    product_id,
    COUNT(*) AS duplicate_count
FROM recommendations
GROUP BY user_id, product_id
HAVING COUNT(*) &amp;gt; 1;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-end=&quot;8163&quot; data-start=&quot;8155&quot; data-ke-size=&quot;size23&quot;&gt;문제 4&lt;/h3&gt;
&lt;p data-end=&quot;8194&quot; data-start=&quot;8165&quot; data-ke-size=&quot;size16&quot;&gt;상품 테이블에 존재하지 않는 추천 상품을 찾으십시오.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;n1ql&quot;&gt;&lt;code&gt;SELECT r.*
FROM recommendations r
LEFT JOIN products p
    ON r.product_id = p.product_id
WHERE p.product_id IS NULL;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-end=&quot;8334&quot; data-start=&quot;8326&quot; data-ke-size=&quot;size23&quot;&gt;문제 5&lt;/h3&gt;
&lt;p data-end=&quot;8364&quot; data-start=&quot;8336&quot; data-ke-size=&quot;size16&quot;&gt;사용자별 추천 점수 상위 3개 상품을 추출하십시오.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;WITH ranked AS (
    SELECT
        user_id,
        product_id,
        score,
        ROW_NUMBER() OVER (
            PARTITION BY user_id
            ORDER BY score DESC
        ) AS rn
    FROM recommendations
)
SELECT *
FROM ranked
WHERE rn &amp;lt;= 3;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;8906&quot; data-start=&quot;8836&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;인덱스가 무엇이며, 인덱스가 조회 속도를 높이지만 쓰기 비용과 저장 공간을 증가시킨다는 정도는 설명할 수 있어야 합니다.&lt;/b&gt;&lt;/p&gt;
&lt;hr data-end=&quot;8911&quot; data-start=&quot;8908&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;8918&quot; data-start=&quot;8913&quot; data-ke-size=&quot;size26&quot;&gt;결론&lt;/h2&gt;
&lt;p data-end=&quot;8990&quot; data-start=&quot;8920&quot; data-ke-size=&quot;size16&quot;&gt;현재 SQLD가 있다면 &lt;b&gt;이론을 다시 처음부터 공부할 필요는 없습니다.&lt;/b&gt; 다음 세 가지에 집중하는 것이 가장 효율적입니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;9122&quot; data-start=&quot;8992&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;9032&quot; data-start=&quot;8992&quot;&gt;JOIN, GROUP BY 및 윈도우 함수를 직접 작성하는 연습&lt;/li&gt;
&lt;li data-end=&quot;9074&quot; data-start=&quot;9033&quot;&gt;NULL, 중복, 범위 오류 및 미매칭 데이터를 찾는 검증 SQL&lt;/li&gt;
&lt;li data-end=&quot;9122&quot; data-start=&quot;9075&quot;&gt;사용자, 상품 및 추천 결과로 구성된 작은 데이터베이스를 직접 조회하는 실습&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;9222&quot; data-start=&quot;9124&quot; data-ke-size=&quot;size16&quot;&gt;면접관이 기대한 핵심은 고급 데이터베이스 전문가 수준이 아니라, &lt;b&gt;회사 데이터 구조를 이해하고 SQL로 데이터를 추출&amp;middot;정제&amp;middot;검증할 수 있는 기본 실무 역량&lt;/b&gt;으로 판단됩니다.&lt;/p&gt;</description>
      <category>궁금증</category>
      <author>김형준</author>
      <guid isPermaLink="true">https://devreco.tistory.com/39</guid>
      <comments>https://devreco.tistory.com/39#entry39comment</comments>
      <pubDate>Fri, 24 Jul 2026 11:32:04 +0900</pubDate>
    </item>
    <item>
      <title>26년 여름 인턴 준비 리스트</title>
      <link>https://devreco.tistory.com/38</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. AI Agent&lt;/b&gt;&lt;/h2&gt;
&lt;table style=&quot;color: #333333; text-align: start; border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;순위&lt;/td&gt;
&lt;td&gt;요구 지식&lt;/td&gt;
&lt;td&gt;이유&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Python 기초&lt;/td&gt;
&lt;td&gt;Agent와 Tool을 함수 및 클래스로 구현&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;API 및 JSON&lt;/td&gt;
&lt;td&gt;외부 서비스와 LLM을 연결&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;LLM 기본 원리&lt;/td&gt;
&lt;td&gt;모델의 한계와 응답 특성 이해&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;프롬프트 엔지니어링&lt;/td&gt;
&lt;td&gt;역할, 규칙, 출력 형식 제어&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Function Calling 및 Tool Calling&lt;/td&gt;
&lt;td&gt;LLM이 적절한 도구를 호출하도록 구현&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Agent Workflow&lt;/td&gt;
&lt;td&gt;분기, 반복, 종료 조건 설계&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;상태 및 메모리 관리&lt;/td&gt;
&lt;td&gt;중간 결과와 대화 기록 관리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;RAG&lt;/td&gt;
&lt;td&gt;문서 및 데이터 검색 기반 답변 구현&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;데이터베이스&lt;/td&gt;
&lt;td&gt;사용자 정보, 실행 기록, 문서 저장&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;검색 및 재랭킹&lt;/td&gt;
&lt;td&gt;관련 자료를 정확하게 선별&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;평가 방법&lt;/td&gt;
&lt;td&gt;Agent 성능을 객관적으로 측정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;비동기 및 병렬 처리&lt;/td&gt;
&lt;td&gt;여러 API와 도구를 효율적으로 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;백엔드 개발&lt;/td&gt;
&lt;td&gt;Agent를 웹 서비스로 배포&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;보안&lt;/td&gt;
&lt;td&gt;API Key, 개인정보, 도구 권한 보호&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;배포 및 운영&lt;/td&gt;
&lt;td&gt;로그, 비용, 장애, 버전 관리&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 벡터 디비&lt;/b&gt;&lt;/h2&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;상황&lt;/td&gt;
&lt;td&gt;추천&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;처음 만드는 학부 프로젝트&lt;/td&gt;
&lt;td&gt;Chroma 또는 FAISS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;웹 서비스이며 일반 DB도 필요&lt;/td&gt;
&lt;td&gt;PostgreSQL + pgvector&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;기존 PostgreSQL을 사용 중&lt;/td&gt;
&lt;td&gt;PostgreSQL + pgvector&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;로컬에서 간단히 테스트&lt;/td&gt;
&lt;td&gt;Chroma 또는 FAISS&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PostgreSQL &lt;br /&gt;├─&amp;nbsp;documents&amp;nbsp;테이블 &lt;br /&gt;│&amp;nbsp;&amp;nbsp;├─&amp;nbsp;id &lt;br /&gt;│&amp;nbsp;&amp;nbsp;├─&amp;nbsp;title &lt;br /&gt;│&amp;nbsp;&amp;nbsp;├─&amp;nbsp;content &lt;br /&gt;│&amp;nbsp;&amp;nbsp;├─&amp;nbsp;source &lt;br /&gt;│&amp;nbsp;&amp;nbsp;├─&amp;nbsp;published_at &lt;br /&gt;│&amp;nbsp;&amp;nbsp;└─&amp;nbsp;embedding&amp;nbsp;vector(768) &lt;br /&gt;│ &lt;br /&gt;└─&amp;nbsp;사용자&amp;nbsp;질문 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;rarr;&amp;nbsp;질문&amp;nbsp;임베딩&amp;nbsp;생성 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;rarr;&amp;nbsp;pgvector&amp;nbsp;유사도&amp;nbsp;검색 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;rarr;&amp;nbsp;관련&amp;nbsp;문서&amp;nbsp;추출 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;rarr;&amp;nbsp;LLM에&amp;nbsp;전달&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. RAG&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-end=&quot;12&quot; data-start=&quot;0&quot; data-ke-size=&quot;size26&quot;&gt;1. RAG 정의&lt;/h2&gt;
&lt;p data-end=&quot;126&quot; data-start=&quot;14&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;RAG(Retrieval-Augmented Generation, 검색 증강 생성)&lt;/b&gt;는 사용자의 질문과 관련된 자료를 먼저 검색한 뒤, 검색된 자료를 LLM에 전달하여 답변을 생성하는 방식입니다.&lt;/p&gt;
&lt;p data-end=&quot;144&quot; data-start=&quot;128&quot; data-ke-size=&quot;size16&quot;&gt;기본 흐름은 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;excel&quot;&gt;&lt;code&gt;자료 수집
&amp;rarr; 문서 분할
&amp;rarr; 문서 임베딩
&amp;rarr; 벡터 DB 저장
&amp;rarr; 사용자 질문 임베딩
&amp;rarr; 유사 문서 검색
&amp;rarr; 검색 문서와 질문을 LLM에 전달
&amp;rarr; 답변 생성&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;316&quot; data-start=&quot;246&quot; data-ke-size=&quot;size16&quot;&gt;LLM이 학습할 때 알고 있던 정보만 사용하는 것이 아니라, 외부 문서나 최신 자료를 근거로 답변하게 만드는 것이 핵심입니다.&lt;/p&gt;
&lt;hr data-end=&quot;321&quot; data-start=&quot;318&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;339&quot; data-start=&quot;323&quot; data-ke-size=&quot;size26&quot;&gt;2. RAG의 필수 개념&lt;/h2&gt;
&lt;h3 data-end=&quot;350&quot; data-start=&quot;341&quot; data-ke-size=&quot;size23&quot;&gt;문서 수집&lt;/h3&gt;
&lt;p data-end=&quot;407&quot; data-start=&quot;352&quot; data-ke-size=&quot;size16&quot;&gt;PDF, 기사, 보고서, 웹페이지, DB 데이터 등 답변 근거로 사용할 자료를 확보하는 단계입니다.&lt;/p&gt;
&lt;h3 data-end=&quot;425&quot; data-start=&quot;409&quot; data-ke-size=&quot;size23&quot;&gt;청킹(Chunking)&lt;/h3&gt;
&lt;p data-end=&quot;459&quot; data-start=&quot;427&quot; data-ke-size=&quot;size16&quot;&gt;긴 문서를 일정한 크기의 작은 문단으로 나누는 과정입니다.&lt;/p&gt;
&lt;p data-end=&quot;521&quot; data-start=&quot;461&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 100페이지 보고서를 한 번에 검색하지 않고 300~1,000토큰 정도의 문단 단위로 분할합니다.&lt;/p&gt;
&lt;p data-end=&quot;572&quot; data-start=&quot;523&quot; data-ke-size=&quot;size16&quot;&gt;청크가 너무 크면 불필요한 내용이 많이 포함되고, 너무 작으면 문맥이 끊길 수 있습니다.&lt;/p&gt;
&lt;h3 data-end=&quot;592&quot; data-start=&quot;574&quot; data-ke-size=&quot;size23&quot;&gt;임베딩(Embedding)&lt;/h3&gt;
&lt;p data-end=&quot;626&quot; data-start=&quot;594&quot; data-ke-size=&quot;size16&quot;&gt;텍스트를 의미를 나타내는 숫자 벡터로 변환하는 과정입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;lsl&quot;&gt;&lt;code&gt;&quot;전력 수요가 증가하고 있다&quot;
&amp;rarr; [0.14, -0.32, 0.71, ...]&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;720&quot; data-start=&quot;685&quot; data-ke-size=&quot;size16&quot;&gt;의미가 비슷한 문장은 벡터 공간에서도 가까운 위치에 배치됩니다.&lt;/p&gt;
&lt;h3 data-end=&quot;731&quot; data-start=&quot;722&quot; data-ke-size=&quot;size23&quot;&gt;벡터 DB&lt;/h3&gt;
&lt;p data-end=&quot;790&quot; data-start=&quot;733&quot; data-ke-size=&quot;size16&quot;&gt;문서의 임베딩 벡터와 원문, 제목, 날짜, 출처 등의 메타데이터를 저장하고 검색하는 데이터베이스입니다.&lt;/p&gt;
&lt;p data-end=&quot;805&quot; data-start=&quot;792&quot; data-ke-size=&quot;size16&quot;&gt;예시는 다음과 같습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;887&quot; data-start=&quot;807&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;830&quot; data-start=&quot;807&quot;&gt;PostgreSQL + pgvector&lt;/li&gt;
&lt;li data-end=&quot;839&quot; data-start=&quot;831&quot;&gt;Qdrant&lt;/li&gt;
&lt;li data-end=&quot;850&quot; data-start=&quot;840&quot;&gt;Pinecone&lt;/li&gt;
&lt;li data-end=&quot;859&quot; data-start=&quot;851&quot;&gt;Milvus&lt;/li&gt;
&lt;li data-end=&quot;870&quot; data-start=&quot;860&quot;&gt;Weaviate&lt;/li&gt;
&lt;li data-end=&quot;879&quot; data-start=&quot;871&quot;&gt;Chroma&lt;/li&gt;
&lt;li data-end=&quot;887&quot; data-start=&quot;880&quot;&gt;FAISS&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;906&quot; data-start=&quot;889&quot; data-ke-size=&quot;size23&quot;&gt;검색(Retrieval)&lt;/h3&gt;
&lt;p data-end=&quot;950&quot; data-start=&quot;908&quot; data-ke-size=&quot;size16&quot;&gt;질문 벡터와 문서 벡터를 비교하여 가장 유사한 문서 청크를 찾는 과정입니다.&lt;/p&gt;
&lt;h3 data-end=&quot;970&quot; data-start=&quot;952&quot; data-ke-size=&quot;size23&quot;&gt;생성(Generation)&lt;/h3&gt;
&lt;p data-end=&quot;1019&quot; data-start=&quot;972&quot; data-ke-size=&quot;size16&quot;&gt;검색된 문서와 사용자 질문을 LLM에 함께 전달하여 최종 답변을 작성하는 단계입니다.&lt;/p&gt;
&lt;hr data-end=&quot;1024&quot; data-start=&quot;1021&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1041&quot; data-start=&quot;1026&quot; data-ke-size=&quot;size26&quot;&gt;3. 문서 임베딩 방식&lt;/h2&gt;
&lt;p data-end=&quot;1117&quot; data-start=&quot;1043&quot; data-ke-size=&quot;size16&quot;&gt;문서를 임베딩하려면 일반적으로 &lt;b&gt;임베딩 전용 모델&lt;/b&gt;을 사용합니다. 반드시 Hugging Face에서 가져와야 하는 것은 아닙니다.&lt;/p&gt;
&lt;h3 data-end=&quot;1141&quot; data-start=&quot;1119&quot; data-ke-size=&quot;size23&quot;&gt;Hugging Face 모델 사용&lt;/h3&gt;
&lt;p data-end=&quot;1182&quot; data-start=&quot;1143&quot; data-ke-size=&quot;size16&quot;&gt;오픈소스 임베딩 모델을 직접 다운로드하여 로컬에서 실행하는 방식입니다.&lt;/p&gt;
&lt;p data-end=&quot;1205&quot; data-start=&quot;1184&quot; data-ke-size=&quot;size16&quot;&gt;대표적인 모델 계열은 다음과 같습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1276&quot; data-start=&quot;1207&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1230&quot; data-start=&quot;1207&quot;&gt;Sentence-Transformers&lt;/li&gt;
&lt;li data-end=&quot;1236&quot; data-start=&quot;1231&quot;&gt;BGE&lt;/li&gt;
&lt;li data-end=&quot;1241&quot; data-start=&quot;1237&quot;&gt;E5&lt;/li&gt;
&lt;li data-end=&quot;1247&quot; data-start=&quot;1242&quot;&gt;GTE&lt;/li&gt;
&lt;li data-end=&quot;1258&quot; data-start=&quot;1248&quot;&gt;KoSimCSE&lt;/li&gt;
&lt;li data-end=&quot;1276&quot; data-start=&quot;1259&quot;&gt;multilingual-e5&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1333&quot; data-start=&quot;1278&quot; data-ke-size=&quot;size16&quot;&gt;장점은 무료로 로컬 실행이 가능하다는 것이고, 단점은 모델 관리와 서버 자원이 필요하다는 것입니다.&lt;/p&gt;
&lt;h3 data-end=&quot;1349&quot; data-start=&quot;1335&quot; data-ke-size=&quot;size23&quot;&gt;API 임베딩 사용&lt;/h3&gt;
&lt;p data-end=&quot;1397&quot; data-start=&quot;1351&quot; data-ke-size=&quot;size16&quot;&gt;OpenAI, Google, Cohere 등의 임베딩 API를 호출하는 방식입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;excel&quot;&gt;&lt;code&gt;문서 텍스트
&amp;rarr; 임베딩 API 호출
&amp;rarr; 벡터 반환
&amp;rarr; 벡터 DB 저장&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1494&quot; data-start=&quot;1451&quot; data-ke-size=&quot;size16&quot;&gt;구현이 간단하고 성능이 안정적이지만, 호출 비용과 외부 전송 문제가 있습니다.&lt;/p&gt;
&lt;h3 data-end=&quot;1512&quot; data-start=&quot;1496&quot; data-ke-size=&quot;size23&quot;&gt;직접 학습한 모델 사용&lt;/h3&gt;
&lt;p data-end=&quot;1560&quot; data-start=&quot;1514&quot; data-ke-size=&quot;size16&quot;&gt;특정 분야의 검색 성능을 높이기 위해 임베딩 모델을 직접 파인튜닝할 수도 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;1672&quot; data-start=&quot;1562&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 전력시장 문서에서 비슷한 문장과 다른 문장을 학습시켜 에너지 분야 전용 임베딩 모델을 만들 수 있습니다. 다만 일반적인 프로젝트에서는 먼저 기존 임베딩 모델을 사용하는 것이 효율적입니다.&lt;/p&gt;
&lt;h3 data-end=&quot;1684&quot; data-start=&quot;1674&quot; data-ke-size=&quot;size23&quot;&gt;상황별 선택&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;상황권장 방식
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1931&quot; data-start=&quot;1686&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;1931&quot; data-start=&quot;1711&quot;&gt;
&lt;tr data-end=&quot;1763&quot; data-start=&quot;1711&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1725&quot; data-start=&quot;1711&quot;&gt;간단한 학부 프로젝트&lt;/td&gt;
&lt;td data-end=&quot;1763&quot; data-start=&quot;1725&quot; data-col-size=&quot;sm&quot;&gt;Hugging Face Sentence-Transformers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1797&quot; data-start=&quot;1764&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1776&quot; data-start=&quot;1764&quot;&gt;한국어 문서 중심&lt;/td&gt;
&lt;td data-end=&quot;1797&quot; data-start=&quot;1776&quot; data-col-size=&quot;sm&quot;&gt;한국어 또는 다국어 임베딩 모델&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1821&quot; data-start=&quot;1798&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1810&quot; data-start=&quot;1798&quot;&gt;빠른 서비스 개발&lt;/td&gt;
&lt;td data-end=&quot;1821&quot; data-start=&quot;1810&quot; data-col-size=&quot;sm&quot;&gt;임베딩 API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1860&quot; data-start=&quot;1822&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1838&quot; data-start=&quot;1822&quot;&gt;보안이 중요한 내부 문서&lt;/td&gt;
&lt;td data-end=&quot;1860&quot; data-start=&quot;1838&quot; data-col-size=&quot;sm&quot;&gt;로컬 Hugging Face 모델&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1897&quot; data-start=&quot;1861&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1879&quot; data-start=&quot;1861&quot;&gt;전문 분야 검색 정확도 필요&lt;/td&gt;
&lt;td data-end=&quot;1897&quot; data-start=&quot;1879&quot; data-col-size=&quot;sm&quot;&gt;도메인 모델 또는 파인튜닝&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1931&quot; data-start=&quot;1898&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1911&quot; data-start=&quot;1898&quot;&gt;대규모 상용 서비스&lt;/td&gt;
&lt;td data-end=&quot;1931&quot; data-start=&quot;1911&quot; data-col-size=&quot;sm&quot;&gt;API 또는 전용 임베딩 서버&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;1936&quot; data-start=&quot;1933&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1953&quot; data-start=&quot;1938&quot; data-ke-size=&quot;size26&quot;&gt;4. 질문 임베딩 방식&lt;/h2&gt;
&lt;p data-end=&quot;1995&quot; data-start=&quot;1955&quot; data-ke-size=&quot;size16&quot;&gt;사용자 질문도 문서와 동일하게 임베딩 모델에 입력하여 벡터로 변환합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;dns&quot;&gt;&lt;code&gt;문서 청크
&amp;rarr; 임베딩 모델 A
&amp;rarr; 문서 벡터

사용자 질문
&amp;rarr; 임베딩 모델 A
&amp;rarr; 질문 벡터&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2110&quot; data-start=&quot;2062&quot; data-ke-size=&quot;size16&quot;&gt;가장 중요한 원칙은 &lt;b&gt;문서와 질문에 같은 임베딩 모델을 사용해야 한다는 것&lt;/b&gt;입니다.&lt;/p&gt;
&lt;hr data-end=&quot;2374&quot; data-start=&quot;2371&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2399&quot; data-start=&quot;2376&quot; data-ke-size=&quot;size26&quot;&gt;5. 질문과 자료의 유사도 검사 방식&lt;/h2&gt;
&lt;h3 data-end=&quot;2412&quot; data-start=&quot;2401&quot; data-ke-size=&quot;size23&quot;&gt;코사인 유사도&lt;/h3&gt;
&lt;p data-end=&quot;2440&quot; data-start=&quot;2414&quot; data-ke-size=&quot;size16&quot;&gt;RAG에서 가장 일반적으로 사용하는 방식입니다.&lt;/p&gt;
&lt;p data-end=&quot;2476&quot; data-start=&quot;2442&quot; data-ke-size=&quot;size16&quot;&gt;질문 벡터와 문서 벡터의 방향이 얼마나 비슷한지를 계산합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;질문 임베딩
↕ 코사인 유사도 계산
문서 임베딩&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2542&quot; data-start=&quot;2518&quot; data-ke-size=&quot;size16&quot;&gt;값이 높을수록 의미가 유사하다고 판단합니다.&lt;/p&gt;
&lt;p data-end=&quot;2601&quot; data-start=&quot;2544&quot; data-ke-size=&quot;size16&quot;&gt;대부분의 Sentence-Transformers 기반 RAG에서는 코사인 유사도를 기본으로 사용합니다.&lt;/p&gt;
&lt;h3 data-end=&quot;2622&quot; data-start=&quot;2603&quot; data-ke-size=&quot;size23&quot;&gt;내적(Dot Product)&lt;/h3&gt;
&lt;p data-end=&quot;2652&quot; data-start=&quot;2624&quot; data-ke-size=&quot;size16&quot;&gt;두 벡터의 대응 값을 곱한 뒤 합산하는 방식입니다.&lt;/p&gt;
&lt;p data-end=&quot;2713&quot; data-start=&quot;2654&quot; data-ke-size=&quot;size16&quot;&gt;정규화된 임베딩에서는 코사인 유사도와 유사한 결과가 나오며, 일부 모델은 내적 검색을 기준으로 학습됩니다.&lt;/p&gt;
&lt;hr data-end=&quot;3092&quot; data-start=&quot;3089&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-end=&quot;3118&quot; data-start=&quot;3094&quot; data-ke-size=&quot;size16&quot;&gt;6. 실무에서 가장 일반적인 검색 방식&lt;/p&gt;
&lt;p data-end=&quot;3148&quot; data-start=&quot;3120&quot; data-ke-size=&quot;size16&quot;&gt;일반적인 RAG에서는 다음 구조를 많이 사용합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;1차 검색
질문 임베딩과 문서 임베딩의 코사인 유사도 계산
&amp;rarr; 상위 10~50개 문서 선택

2차 재랭킹
Cross-Encoder 또는 Reranker로 질문과 문서를 다시 정밀 비교
&amp;rarr; 최종 상위 3~10개 선택

답변 생성
선택된 문서를 LLM에 전달&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;3331&quot; data-start=&quot;3306&quot; data-ke-size=&quot;size16&quot;&gt;간단한 프로젝트에서는 다음만으로도 충분합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;markdown&quot;&gt;&lt;code&gt;임베딩 모델
+ 코사인 유사도
+ Top-k 검색
+ LLM 답변 생성&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div data-is-intersecting=&quot;true&quot; data-turn-id-container=&quot;request-WEB:9a60901b-33e4-4c43-b3dc-d6949495e64b-17&quot;&gt;
&lt;div data-conversation-screenshot-content=&quot;&quot;&gt;
&lt;div data-message-model-slug=&quot;gpt-5-6-thinking&quot; data-turn-start-message=&quot;true&quot; data-message-id=&quot;5e79bf82-5d48-4eb5-9c55-d5a3dc5743f2&quot; data-message-author-role=&quot;assistant&quot;&gt;
&lt;h2 data-end=&quot;22&quot; data-start=&quot;0&quot; data-ke-size=&quot;size26&quot;&gt;4. LangGraph의 State&lt;/h2&gt;
&lt;h3 data-end=&quot;39&quot; data-start=&quot;24&quot; data-ke-size=&quot;size23&quot;&gt;1. State 정의&lt;/h3&gt;
&lt;p data-end=&quot;106&quot; data-start=&quot;41&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;State는 LangGraph 실행 과정에서 여러 노드가 공동으로 읽고 갱신하는 현재 작업 상태 데이터&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-end=&quot;165&quot; data-start=&quot;108&quot; data-ke-size=&quot;size16&quot;&gt;쉽게 말하면 Agent가 현재까지 수행한 내용과 다음 작업에 필요한 정보를 담는 공용 저장 공간입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;nginx&quot;&gt;&lt;code&gt;State 예시
├─ 사용자 질문
├─ 대화 기록
├─ 검색된 문서
├─ 선택한 도구
├─ 도구 실행 결과
├─ 현재 처리 단계
├─ 오류 정보
└─ 최종 답변&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;396&quot; data-start=&quot;270&quot; data-ke-size=&quot;size16&quot;&gt;각 노드는 현재 State를 입력받아 작업하고, 변경할 값만 반환합니다. LangGraph는 반환된 값을 기존 State에 반영한 뒤 다음 노드로 전달합니다.&lt;/p&gt;
&lt;hr data-end=&quot;401&quot; data-start=&quot;398&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;422&quot; data-start=&quot;403&quot; data-ke-size=&quot;size23&quot;&gt;2. State의 기본 지식&lt;/h3&gt;
&lt;h4 data-end=&quot;442&quot; data-start=&quot;424&quot; data-ke-size=&quot;size20&quot;&gt;State는 DB와 다름&lt;/h4&gt;
&lt;p data-end=&quot;485&quot; data-start=&quot;444&quot; data-ke-size=&quot;size16&quot;&gt;State는 Agent의 &lt;b&gt;현재 실행 문맥과 중간 결과&lt;/b&gt;를 관리합니다.&lt;/p&gt;
&lt;p data-end=&quot;537&quot; data-start=&quot;487&quot; data-ke-size=&quot;size16&quot;&gt;반면 DB는 사용자 정보, 문서, 업무 결과 등 장기간 보관해야 하는 데이터를 저장합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;excel&quot;&gt;&lt;code&gt;State
현재 질문, 검색 결과, 작업 단계, 임시 판단

DB
회원 정보, 원본 문서, 과거 보고서, 장기 기록&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;729&quot; data-start=&quot;617&quot; data-ke-size=&quot;size16&quot;&gt;다만 Checkpointer를 연결하면 State를 실행 단계마다 저장하여 중단된 작업을 이어가거나 이전 상태를 확인할 수 있습니다.&lt;/p&gt;
&lt;h4 data-end=&quot;759&quot; data-start=&quot;731&quot; data-ke-size=&quot;size20&quot;&gt;모든 노드가 같은 State 구조를 사용함&lt;/h4&gt;
&lt;p data-end=&quot;843&quot; data-start=&quot;761&quot; data-ke-size=&quot;size16&quot;&gt;검색 노드, 판단 노드, 도구 실행 노드, 답변 생성 노드는 같은 State 구조를 공유합니다. 각 노드는 자신에게 필요한 항목만 읽고 갱신합니다.&lt;/p&gt;
&lt;h4 data-end=&quot;877&quot; data-start=&quot;845&quot; data-ke-size=&quot;size20&quot;&gt;노드는 전체 State를 다시 반환하지 않아도 됨&lt;/h4&gt;
&lt;p data-end=&quot;967&quot; data-start=&quot;879&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 검색 노드는 검색 결과만 반환하고, 답변 노드는 최종 답변만 반환할 수 있습니다. LangGraph가 기존 State와 새 결과를 합칩니다.&lt;/p&gt;
&lt;h4 data-end=&quot;993&quot; data-start=&quot;969&quot; data-ke-size=&quot;size20&quot;&gt;같은 항목의 갱신 방법을 정해야 함&lt;/h4&gt;
&lt;p data-end=&quot;1020&quot; data-start=&quot;995&quot; data-ke-size=&quot;size16&quot;&gt;기본적으로 새로운 값이 기존 값을 덮어씁니다.&lt;/p&gt;
&lt;p data-end=&quot;1130&quot; data-start=&quot;1022&quot; data-ke-size=&quot;size16&quot;&gt;하지만 대화 기록처럼 계속 누적해야 하는 값은 &lt;b&gt;Reducer&lt;/b&gt;를 사용하여 기존 목록 뒤에 새 값을 추가하도록 설정합니다.&lt;/p&gt;
&lt;hr data-end=&quot;1135&quot; data-start=&quot;1132&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1159&quot; data-start=&quot;1137&quot; data-ke-size=&quot;size23&quot;&gt;3. State의 주요 구성 요소&lt;/h3&gt;
&lt;p data-end=&quot;1225&quot; data-start=&quot;1180&quot; data-ke-size=&quot;size16&quot;&gt;State에 어떤 항목이 존재하고 각 항목의 자료형이 무엇인지 정의한 구조입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;ada&quot;&gt;&lt;code&gt;question        : 문자열
messages        : 메시지 목록
documents       : 문서 목록
tool_name       : 문자열
tool_result     : 문자열
retry_count     : 정수
final_answer    : 문자열&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1583&quot; data-start=&quot;1398&quot; data-ke-size=&quot;size16&quot;&gt;Python에서는 일반적으로 TypedDict, dataclass, Pydantic 모델 등으로 정의합니다. TypedDict가 일반적&lt;/p&gt;
&lt;h4 data-end=&quot;1707&quot; data-start=&quot;1695&quot; data-ke-size=&quot;size20&quot;&gt;Reducer&lt;/h4&gt;
&lt;p data-end=&quot;1747&quot; data-start=&quot;1709&quot; data-ke-size=&quot;size16&quot;&gt;노드가 반환한 새 값을 기존 State에 어떻게 반영할지 결정합니다.&lt;/p&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1886&quot; data-start=&quot;1749&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;1886&quot; data-start=&quot;1771&quot;&gt;
&lt;tr data-end=&quot;1803&quot; data-start=&quot;1771&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1778&quot; data-start=&quot;1771&quot;&gt;덮어쓰기&lt;/td&gt;
&lt;td data-end=&quot;1803&quot; data-start=&quot;1778&quot; data-col-size=&quot;sm&quot;&gt;기존 검색 결과를 새 검색 결과로 교체&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1832&quot; data-start=&quot;1804&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1809&quot; data-start=&quot;1804&quot;&gt;추가&lt;/td&gt;
&lt;td data-end=&quot;1832&quot; data-start=&quot;1809&quot; data-col-size=&quot;sm&quot;&gt;기존 메시지 목록에 새 메시지 추가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1860&quot; data-start=&quot;1833&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1838&quot; data-start=&quot;1833&quot;&gt;병합&lt;/td&gt;
&lt;td data-end=&quot;1860&quot; data-start=&quot;1838&quot; data-col-size=&quot;sm&quot;&gt;기존 딕셔너리와 새 딕셔너리 결합&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1886&quot; data-start=&quot;1861&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1866&quot; data-start=&quot;1861&quot;&gt;합산&lt;/td&gt;
&lt;td data-end=&quot;1886&quot; data-start=&quot;1866&quot; data-col-size=&quot;sm&quot;&gt;기존 횟수에 새로운 값을 더함&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1944&quot; data-start=&quot;1888&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 final_answer는 덮어쓰기가 적절하고, messages는 누적이 적절합니다.&lt;/p&gt;
&lt;h4 data-end=&quot;1955&quot; data-start=&quot;1946&quot; data-ke-size=&quot;size20&quot;&gt;Node&lt;/h4&gt;
&lt;p data-end=&quot;2003&quot; data-start=&quot;1957&quot; data-ke-size=&quot;size16&quot;&gt;State를 입력받아 실제 작업을 수행하고 State 갱신값을 반환하는 함수입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;질문 분석 노드
검색 노드
도구 선택 노드
도구 실행 노드
답변 생성 노드
검증 노드&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 data-end=&quot;2075&quot; data-start=&quot;2066&quot; data-ke-size=&quot;size20&quot;&gt;Edge&lt;/h4&gt;
&lt;p data-end=&quot;2111&quot; data-start=&quot;2077&quot; data-ke-size=&quot;size16&quot;&gt;한 노드가 끝난 후 어느 노드를 실행할지 결정하는 연결입니다.&lt;/p&gt;
&lt;p data-end=&quot;2214&quot; data-start=&quot;2113&quot; data-ke-size=&quot;size16&quot;&gt;고정 Edge는 항상 정해진 노드로 이동하고, 조건부 Edge는 State 값을 확인하여 다음 노드를 선택합니다.&lt;/p&gt;
&lt;h4 data-end=&quot;2231&quot; data-start=&quot;2216&quot; data-ke-size=&quot;size20&quot;&gt;START와 END&lt;/h4&gt;
&lt;p data-end=&quot;2281&quot; data-start=&quot;2233&quot; data-ke-size=&quot;size16&quot;&gt;START는 그래프 실행 시작점을 의미하고, END는 실행 종료점을 의미합니다.&lt;/p&gt;
&lt;h4 data-end=&quot;2300&quot; data-start=&quot;2283&quot; data-ke-size=&quot;size20&quot;&gt;Checkpointer&lt;/h4&gt;
&lt;p data-end=&quot;2332&quot; data-start=&quot;2302&quot; data-ke-size=&quot;size16&quot;&gt;각 실행 단계의 State를 저장하는 구성 요소입니다.&lt;/p&gt;
&lt;p data-end=&quot;2360&quot; data-start=&quot;2334&quot; data-ke-size=&quot;size16&quot;&gt;이를 사용하면 다음 기능을 구현할 수 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2441&quot; data-start=&quot;2362&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2372&quot; data-start=&quot;2362&quot;&gt;대화 상태 유지&lt;/li&gt;
&lt;li data-end=&quot;2386&quot; data-start=&quot;2373&quot;&gt;오류 발생 후 재시작&lt;/li&gt;
&lt;li data-end=&quot;2399&quot; data-start=&quot;2387&quot;&gt;작업 중단 후 재개&lt;/li&gt;
&lt;li data-end=&quot;2411&quot; data-start=&quot;2400&quot;&gt;사용자 승인 대기&lt;/li&gt;
&lt;li data-end=&quot;2425&quot; data-start=&quot;2412&quot;&gt;이전 실행 단계 확인&lt;/li&gt;
&lt;li data-end=&quot;2441&quot; data-start=&quot;2426&quot;&gt;특정 시점부터 다시 실행&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;2539&quot; data-start=&quot;2443&quot; data-ke-size=&quot;size16&quot;&gt;LangGraph는 Checkpointer가 연결된 경우 각 단계의 State를 체크포인트로 저장합니다.&lt;/p&gt;
&lt;hr data-end=&quot;2544&quot; data-start=&quot;2541&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;2564&quot; data-start=&quot;2546&quot; data-ke-size=&quot;size23&quot;&gt;4. State 구현 방법&lt;/h3&gt;
&lt;p data-end=&quot;2593&quot; data-start=&quot;2566&quot; data-ke-size=&quot;size16&quot;&gt;코드 없이 구현 순서를 설명하면 다음과 같습니다.&lt;/p&gt;
&lt;h4 data-end=&quot;2624&quot; data-start=&quot;2595&quot; data-ke-size=&quot;size20&quot;&gt;1단계: Agent가 기억해야 할 정보 결정&lt;/h4&gt;
&lt;p data-end=&quot;2663&quot; data-start=&quot;2626&quot; data-ke-size=&quot;size16&quot;&gt;먼저 전체 작업에서 어떤 데이터가 계속 전달되어야 하는지 정합니다.&lt;/p&gt;
&lt;p data-end=&quot;2698&quot; data-start=&quot;2665&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 뉴스 검색 Agent라면 다음 항목이 필요합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;사용자 질문
검색 키워드
검색 결과
선택된 기사
요약 결과
검증 결과
최종 답변&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 data-end=&quot;2783&quot; data-start=&quot;2758&quot; data-ke-size=&quot;size20&quot;&gt;2단계: State Schema 설계&lt;/h4&gt;
&lt;p data-end=&quot;2805&quot; data-start=&quot;2785&quot; data-ke-size=&quot;size16&quot;&gt;각 항목의 이름과 자료형을 정합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;사용자 질문: 문자열
검색 키워드: 문자열 목록
검색 결과: 기사 목록
검증 통과 여부: 참 또는 거짓
반복 횟수: 정수
최종 답변: 문자열&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;3002&quot; data-start=&quot;2899&quot; data-ke-size=&quot;size16&quot;&gt;State에는 필요한 값만 포함해야 합니다. 모든 원본 데이터나 대형 파일을 State에 직접 저장하면 상태가 지나치게 커질 수 있으므로, 필요하면 파일 경로나 DB ID만 저장합니다.&lt;/p&gt;
&lt;h4 data-end=&quot;3028&quot; data-start=&quot;3004&quot; data-ke-size=&quot;size20&quot;&gt;3단계: 각 필드의 갱신 방식 결정&lt;/h4&gt;
&lt;p data-end=&quot;3060&quot; data-start=&quot;3030&quot; data-ke-size=&quot;size16&quot;&gt;각 값이 덮어써져야 하는지 누적되어야 하는지 정합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;사용자 질문: 기존 값 유지
검색 키워드: 필요 시 교체
검색 결과: 새 결과로 교체하거나 누적
대화 기록: 계속 추가
반복 횟수: 1씩 증가
최종 답변: 새 값으로 교체&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 data-end=&quot;3192&quot; data-start=&quot;3171&quot; data-ke-size=&quot;size20&quot;&gt;4단계: Node별 역할 결정&lt;/h4&gt;
&lt;p data-end=&quot;3235&quot; data-start=&quot;3194&quot; data-ke-size=&quot;size16&quot;&gt;각 Node가 어떤 State를 읽고 어떤 State를 변경할지 정합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;Node읽는 State갱신하는 State
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;3427&quot; data-start=&quot;3237&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;3427&quot; data-start=&quot;3284&quot;&gt;
&lt;tr data-end=&quot;3311&quot; data-start=&quot;3284&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3292&quot; data-start=&quot;3284&quot;&gt;질문 분석&lt;/td&gt;
&lt;td data-end=&quot;3301&quot; data-start=&quot;3292&quot; data-col-size=&quot;sm&quot;&gt;사용자 질문&lt;/td&gt;
&lt;td data-end=&quot;3311&quot; data-start=&quot;3301&quot; data-col-size=&quot;sm&quot;&gt;검색 키워드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3338&quot; data-start=&quot;3312&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3320&quot; data-start=&quot;3312&quot;&gt;자료 검색&lt;/td&gt;
&lt;td data-end=&quot;3329&quot; data-start=&quot;3320&quot; data-col-size=&quot;sm&quot;&gt;검색 키워드&lt;/td&gt;
&lt;td data-end=&quot;3338&quot; data-start=&quot;3329&quot; data-col-size=&quot;sm&quot;&gt;검색 결과&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3364&quot; data-start=&quot;3339&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3347&quot; data-start=&quot;3339&quot;&gt;자료 검증&lt;/td&gt;
&lt;td data-end=&quot;3355&quot; data-start=&quot;3347&quot; data-col-size=&quot;sm&quot;&gt;검색 결과&lt;/td&gt;
&lt;td data-end=&quot;3364&quot; data-start=&quot;3355&quot; data-col-size=&quot;sm&quot;&gt;검증 결과&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3394&quot; data-start=&quot;3365&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3373&quot; data-start=&quot;3365&quot;&gt;답변 생성&lt;/td&gt;
&lt;td data-end=&quot;3385&quot; data-start=&quot;3373&quot; data-col-size=&quot;sm&quot;&gt;질문, 검색 결과&lt;/td&gt;
&lt;td data-end=&quot;3394&quot; data-start=&quot;3385&quot; data-col-size=&quot;sm&quot;&gt;최종 답변&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3427&quot; data-start=&quot;3395&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3403&quot; data-start=&quot;3395&quot;&gt;품질 검사&lt;/td&gt;
&lt;td data-end=&quot;3411&quot; data-start=&quot;3403&quot; data-col-size=&quot;sm&quot;&gt;최종 답변&lt;/td&gt;
&lt;td data-end=&quot;3427&quot; data-start=&quot;3411&quot; data-col-size=&quot;sm&quot;&gt;통과 여부, 수정 의견&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 data-end=&quot;3453&quot; data-start=&quot;3429&quot; data-ke-size=&quot;size20&quot;&gt;5단계: Edge와 분기 조건 설계&lt;/h4&gt;
&lt;p data-end=&quot;3483&quot; data-start=&quot;3455&quot; data-ke-size=&quot;size16&quot;&gt;State의 값에 따라 다음 실행 위치를 정합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;fix&quot;&gt;&lt;code&gt;검증 통과 = 참
&amp;rarr; 답변 생성

검증 통과 = 거짓
&amp;rarr; 다시 검색

반복 횟수 초과
&amp;rarr; 오류 처리 또는 현재 결과로 종료&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 data-end=&quot;3583&quot; data-start=&quot;3567&quot; data-ke-size=&quot;size20&quot;&gt;6단계: 그래프 실행&lt;/h4&gt;
&lt;p data-end=&quot;3617&quot; data-start=&quot;3585&quot; data-ke-size=&quot;size16&quot;&gt;초기 State에 사용자 질문을 넣고 그래프를 시작합니다.&lt;/p&gt;
&lt;p data-end=&quot;3638&quot; data-start=&quot;3619&quot; data-ke-size=&quot;size16&quot;&gt;각 노드는 다음 과정을 반복합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;현재 State 입력
&amp;rarr; 노드 작업 수행
&amp;rarr; 일부 State 갱신
&amp;rarr; Edge가 다음 노드 결정
&amp;rarr; 갱신된 State를 다음 노드에 전달&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 data-end=&quot;3754&quot; data-start=&quot;3730&quot; data-ke-size=&quot;size20&quot;&gt;7단계: 필요하면 State 영속화&lt;/h4&gt;
&lt;p data-end=&quot;3813&quot; data-start=&quot;3756&quot; data-ke-size=&quot;size16&quot;&gt;대화를 여러 요청에 걸쳐 유지하거나 작업 중단 후 재개해야 한다면 Checkpointer를 연결합니다.&lt;/p&gt;
&lt;p data-end=&quot;3877&quot; data-start=&quot;3815&quot; data-ke-size=&quot;size16&quot;&gt;같은 사용자 또는 같은 대화에 동일한 Thread ID를 사용하면 이전 State를 이어서 사용할 수 있습니다.&lt;/p&gt;
&lt;hr data-end=&quot;3882&quot; data-start=&quot;3879&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;3899&quot; data-start=&quot;3884&quot; data-ke-size=&quot;size23&quot;&gt;5. 전체 동작 예시&lt;/h3&gt;
&lt;p data-end=&quot;3933&quot; data-start=&quot;3901&quot; data-ke-size=&quot;size16&quot;&gt;에너지 뉴스 조사 Agent를 예로 들면 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;ada&quot;&gt;&lt;code&gt;초기 State
사용자 질문 저장

&amp;darr; 질문 분석 노드
검색 키워드 생성
State에 검색 키워드 저장

&amp;darr; 뉴스 검색 노드
뉴스 API 호출
State에 검색 결과 저장

&amp;darr; 검증 노드
출처, 날짜, 관련성 확인
State에 검증 결과 저장

&amp;darr; 조건부 분기
자료가 부족하면 검색 노드로 복귀
자료가 충분하면 요약 노드로 이동

&amp;darr; 요약 노드
선택된 기사를 요약
State에 요약 결과 저장

&amp;darr; 답변 생성 노드
질문과 요약 결과를 기반으로 답변 작성
State에 최종 답변 저장

&amp;darr; END
최종 답변 반환&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-end=&quot;4243&quot; data-start=&quot;4234&quot; data-ke-size=&quot;size23&quot;&gt;핵심 정리&lt;/h3&gt;
&lt;p data-end=&quot;4320&quot; data-start=&quot;4245&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;State는 LangGraph Agent가 실행되는 동안 필요한 데이터와 중간 결과를 노드 간에 전달하는 공용 상태 객체&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-end=&quot;4349&quot; data-start=&quot;4322&quot; data-ke-size=&quot;size16&quot;&gt;LangGraph의 기본 구조는 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;avrasm&quot;&gt;&lt;code&gt;State: 현재 정보를 저장
Node: 실제 작업 수행
Edge: 다음 작업 결정
Reducer: State 갱신 방식 결정
Checkpointer: State를 저장하고 복구&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;4554&quot; data-start=&quot;4464&quot; data-ke-size=&quot;size16&quot;&gt;구현의 핵심은 &lt;b&gt;어떤 정보를 State에 저장할지, 각 Node가 무엇을 읽고 변경할지, 어떤 조건으로 다음 Node를 선택할지를 먼저 설계하는 것&lt;/b&gt;입니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div data-conversation-screenshot-content=&quot;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5. SQL&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 문서&lt;/p&gt;</description>
      <category>궁금증</category>
      <author>김형준</author>
      <guid isPermaLink="true">https://devreco.tistory.com/38</guid>
      <comments>https://devreco.tistory.com/38#entry38comment</comments>
      <pubDate>Fri, 24 Jul 2026 11:27:54 +0900</pubDate>
    </item>
    <item>
      <title>26/07/24 질문 모음</title>
      <link>https://devreco.tistory.com/37</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. AI agent 정의&lt;/b&gt;: &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;LLM이 도구와 상태를 이용해 목표를 달성하도록 판단하고 행동하는 시스템입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;사용자 목표 입력&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;darr; &lt;br /&gt;해야&amp;nbsp;할&amp;nbsp;일&amp;nbsp;판단 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;darr; &lt;br /&gt;필요한&amp;nbsp;도구&amp;nbsp;선택 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;darr; &lt;br /&gt;검색&amp;middot;계산&amp;middot;API&amp;nbsp;호출&amp;middot;DB&amp;nbsp;조회 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;darr; &lt;br /&gt;결과&amp;nbsp;확인 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;darr; &lt;br /&gt;필요하면&amp;nbsp;다시&amp;nbsp;실행 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;darr; &lt;br /&gt;최종&amp;nbsp;답변&amp;nbsp;또는&amp;nbsp;업무&amp;nbsp;완료&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; 2. AI agent 프레임워크 종류&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 332px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;프레임워크&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;특징&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;적합 경우&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;난이도&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;LangChain&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;모델, 프롬프트, 도구, 검색 등을 쉽게 연결&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;범용 Agent, RAG, 빠른 개발&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;낮음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 44px;&quot;&gt;
&lt;td style=&quot;height: 44px;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;height: 44px;&quot;&gt;LangGraph&lt;/td&gt;
&lt;td style=&quot;height: 44px;&quot;&gt;상태&amp;middot;노드&amp;middot;분기&amp;middot;반복을 그래프로 제어&lt;/td&gt;
&lt;td style=&quot;height: 44px;&quot;&gt;복잡한 업무 흐름, 장기 실행, 실제 서비스&lt;/td&gt;
&lt;td style=&quot;height: 44px;&quot;&gt;중상&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 44px;&quot;&gt;
&lt;td style=&quot;height: 44px;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;height: 44px;&quot;&gt;직접 Python 구현&lt;/td&gt;
&lt;td style=&quot;height: 44px;&quot;&gt;반복문, 함수, API 호출로 자체 구현&lt;/td&gt;
&lt;td style=&quot;height: 44px;&quot;&gt;보안&amp;middot;성능&amp;middot;세밀한 제어가 필요한 서비스&lt;/td&gt;
&lt;td style=&quot;height: 44px;&quot;&gt;낮음~높음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 44px;&quot;&gt;
&lt;td style=&quot;height: 44px;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;height: 44px;&quot;&gt;OpenAI Agent SDK&lt;/td&gt;
&lt;td style=&quot;height: 44px;&quot;&gt;Agent, Tool, Handoff, Guardrail을 간결하게 구현&lt;/td&gt;
&lt;td style=&quot;height: 44px;&quot;&gt;OpenAI 모델 중심 서비스&lt;/td&gt;
&lt;td style=&quot;height: 44px;&quot;&gt;낮음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;LlamaIndex&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;문서&amp;middot;DB 검색과 RAG에 강함&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;사내 문서, 지식검색 Agent&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;중간&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. LangChain 과 LangGraph 의 차이&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bODwyc/dJMcacxbKXf/BJiHraRNmcqtKrA040uYF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bODwyc/dJMcacxbKXf/BJiHraRNmcqtKrA040uYF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bODwyc/dJMcacxbKXf/BJiHraRNmcqtKrA040uYF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbODwyc%2FdJMcacxbKXf%2FBJiHraRNmcqtKrA040uYF0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1536&quot; height=&quot;1024&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. AI agent 필수 구성 요소&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 6.51163%;&quot;&gt;순위&lt;/td&gt;
&lt;td style=&quot;width: 15.6977%;&quot;&gt;구성요소&lt;/td&gt;
&lt;td style=&quot;width: 41.0465%;&quot;&gt;역할&lt;/td&gt;
&lt;td style=&quot;width: 36.7442%;&quot;&gt;예시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 6.51163%;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;width: 15.6977%;&quot;&gt;목표 및 업무 정의&lt;/td&gt;
&lt;td style=&quot;width: 41.0465%;&quot;&gt;Agent가 해결할 문제와 완료 조건을 정의&lt;/td&gt;
&lt;td style=&quot;width: 36.7442%;&quot;&gt;최신 에너지 뉴스를 검색하여 중요 기사 5개 요약&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 6.51163%;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;width: 15.6977%;&quot;&gt;판단 모델, LLM&lt;/td&gt;
&lt;td style=&quot;width: 41.0465%;&quot;&gt;사용자 요청을 해석하고 도구 선택 및 다음 행동을 결정&lt;/td&gt;
&lt;td style=&quot;width: 36.7442%;&quot;&gt;GPT, Gemini, Claude, Llama&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 6.51163%;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;width: 15.6977%;&quot;&gt;도구, Tool&lt;/td&gt;
&lt;td style=&quot;width: 41.0465%;&quot;&gt;Agent가 실제 행동을 수행하는 함수&lt;/td&gt;
&lt;td style=&quot;width: 36.7442%;&quot;&gt;뉴스 검색, 날씨 조회, DB 검색, 이메일 전송&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 6.51163%;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;width: 15.6977%;&quot;&gt;시스템 프롬프트&lt;/td&gt;
&lt;td style=&quot;width: 41.0465%;&quot;&gt;Agent의 역할, 규칙, 도구 사용 조건을 정의&lt;/td&gt;
&lt;td style=&quot;width: 36.7442%;&quot;&gt;신뢰 가능한 출처만 사용하고 출처를 표시하라&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 6.51163%;&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;width: 15.6977%;&quot;&gt;상태, State&lt;/td&gt;
&lt;td style=&quot;width: 41.0465%;&quot;&gt;현재 작업 진행 상황과 중간 결과를 저장&lt;/td&gt;
&lt;td style=&quot;width: 36.7442%;&quot;&gt;사용자 요청, 검색 결과, 선택한 기사, 요약문&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 6.51163%;&quot;&gt;6&lt;/td&gt;
&lt;td style=&quot;width: 15.6977%;&quot;&gt;실행 흐름, Workflow&lt;/td&gt;
&lt;td style=&quot;width: 41.0465%;&quot;&gt;어떤 순서로 판단하고 도구를 실행할지 제어&lt;/td&gt;
&lt;td style=&quot;width: 36.7442%;&quot;&gt;요청 분석 &amp;rarr; 검색 &amp;rarr; 검증 &amp;rarr; 요약 &amp;rarr; 출력&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 6.51163%;&quot;&gt;7&lt;/td&gt;
&lt;td style=&quot;width: 15.6977%;&quot;&gt;메모리, Memory&lt;/td&gt;
&lt;td style=&quot;width: 41.0465%;&quot;&gt;이전 대화나 사용자 정보를 저장하고 재사용&lt;/td&gt;
&lt;td style=&quot;width: 36.7442%;&quot;&gt;선호 뉴스 분야, 이전 검색 결과, 사용자 설정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 6.51163%;&quot;&gt;8&lt;/td&gt;
&lt;td style=&quot;width: 15.6977%;&quot;&gt;외부 지식 연결&lt;/td&gt;
&lt;td style=&quot;width: 41.0465%;&quot;&gt;LLM이 모르는 최신 정보나 내부 문서를 제공&lt;/td&gt;
&lt;td style=&quot;width: 36.7442%;&quot;&gt;RAG, 웹 검색, 데이터베이스, API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 6.51163%;&quot;&gt;9&lt;/td&gt;
&lt;td style=&quot;width: 15.6977%;&quot;&gt;출력 형식&lt;/td&gt;
&lt;td style=&quot;width: 41.0465%;&quot;&gt;최종 결과가 일정한 구조를 갖도록 제한&lt;/td&gt;
&lt;td style=&quot;width: 36.7442%;&quot;&gt;JSON, 표, 보고서, 이메일&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 6.51163%;&quot;&gt;10&lt;/td&gt;
&lt;td style=&quot;width: 15.6977%;&quot;&gt;검증 및 평가&lt;/td&gt;
&lt;td style=&quot;width: 41.0465%;&quot;&gt;결과의 정확성, 완전성, 도구 선택을 평가&lt;/td&gt;
&lt;td style=&quot;width: 36.7442%;&quot;&gt;출처 검증, 환각 검사, 정답률, 성공률&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 6.51163%;&quot;&gt;11&lt;/td&gt;
&lt;td style=&quot;width: 15.6977%;&quot;&gt;오류 처리&lt;/td&gt;
&lt;td style=&quot;width: 41.0465%;&quot;&gt;API 실패, 빈 검색 결과, 잘못된 입력에 대응&lt;/td&gt;
&lt;td style=&quot;width: 36.7442%;&quot;&gt;재시도, 다른 도구 사용, 오류 메시지 출력&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 6.51163%;&quot;&gt;12&lt;/td&gt;
&lt;td style=&quot;width: 15.6977%;&quot;&gt;보안 및 권한 관리&lt;/td&gt;
&lt;td style=&quot;width: 41.0465%;&quot;&gt;위험한 도구 실행과 정보 유출을 방지&lt;/td&gt;
&lt;td style=&quot;width: 36.7442%;&quot;&gt;API Key 관리, 도구별 권한 제한, 승인 절차&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;5. AI Agent 개발 필요한 지식 순서&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 369px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;순위&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;요구 지식&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;이유&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;Python 기초&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;Agent와 Tool을 함수 및 클래스로 구현&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;API 및 JSON&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;외부 서비스와 LLM을 연결&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;LLM 기본 원리&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;모델의 한계와 응답 특성 이해&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;프롬프트 엔지니어링&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;역할, 규칙, 출력 형식 제어&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;Function Calling 및 Tool Calling&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;LLM이 적절한 도구를 호출하도록 구현&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;6&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;Agent Workflow&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;분기, 반복, 종료 조건 설계&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;7&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;상태 및 메모리 관리&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;중간 결과와 대화 기록 관리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;8&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;RAG&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;문서 및 데이터 검색 기반 답변 구현&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;9&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;데이터베이스&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;사용자 정보, 실행 기록, 문서 저장&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;10&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;검색 및 재랭킹&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;관련 자료를 정확하게 선별&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;11&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;평가 방법&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;Agent 성능을 객관적으로 측정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;12&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;비동기 및 병렬 처리&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;여러 API와 도구를 효율적으로 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;13&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;백엔드 개발&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;Agent를 웹 서비스로 배포&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;14&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;보안&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;API Key, 개인정보, 도구 권한 보호&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;15&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;배포 및 운영&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;로그, 비용, 장애, 버전 관리&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;6. RAM 인식을 하지 않으면 컴퓨터 화면이 안나오는 이유&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;185&quot; data-start=&quot;51&quot; data-ke-size=&quot;size16&quot;&gt;컴퓨터 전원을 켜면 운영체제가 실행되기 전에 메인보드가 &lt;b&gt;POST(Power-On Self-Test, 전원 공급 자기진단)&lt;/b&gt;를 수행합니다. 이 과정에서 CPU, RAM, 그래픽카드 등 필수 부품이 정상적으로 연결되어 있는지 확인합니다.&lt;/p&gt;
&lt;p data-end=&quot;223&quot; data-start=&quot;187&quot; data-ke-size=&quot;size16&quot;&gt;RAM이 제대로 인식되지 않으면 다음 순서에서 부팅이 중단됩니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;396&quot; data-start=&quot;225&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;242&quot; data-start=&quot;225&quot;&gt;CPU에 전원이 공급됨&lt;/li&gt;
&lt;li data-end=&quot;270&quot; data-start=&quot;243&quot;&gt;메인보드 BIOS 또는 UEFI가 실행됨&lt;/li&gt;
&lt;li data-end=&quot;294&quot; data-start=&quot;271&quot;&gt;메모리 컨트롤러가 RAM을 탐색함&lt;/li&gt;
&lt;li data-end=&quot;329&quot; data-start=&quot;295&quot;&gt;RAM의 용량, 속도, 타이밍 등을 확인하고 초기화함&lt;/li&gt;
&lt;li data-end=&quot;358&quot; data-start=&quot;330&quot;&gt;RAM 초기화가 실패하면 POST가 중단됨&lt;/li&gt;
&lt;li data-end=&quot;396&quot; data-start=&quot;359&quot;&gt;그래픽 출력 초기화와 운영체제 부팅 단계까지 진행되지 못함&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-end=&quot;458&quot; data-start=&quot;398&quot; data-ke-size=&quot;size16&quot;&gt;따라서 모니터 자체가 고장 난 것이 아니라, &lt;b&gt;컴퓨터가 화면을 출력할 단계까지 부팅되지 못한 것&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-end=&quot;628&quot; data-start=&quot;460&quot; data-ke-size=&quot;size16&quot;&gt;RAM 접점에 먼지나 산화물이 있거나 RAM이 슬롯에 끝까지 장착되지 않으면, 메인보드와 RAM 사이의 전기적 신호가 정상적으로 전달되지 않습니다. 특히 DDR 메모리는 많은 접점을 통해 주소, 데이터, 전압 및 제어 신호를 주고받기 때문에 일부 접점만 불안정해도 메모리 초기화가 실패할 수 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;657&quot; data-start=&quot;630&quot; data-ke-size=&quot;size16&quot;&gt;이때 일반적으로 나타나는 현상은 다음과 같습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;776&quot; data-start=&quot;659&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;684&quot; data-start=&quot;659&quot;&gt;전원과 팬은 작동하지만 화면이 나오지 않음&lt;/li&gt;
&lt;li data-end=&quot;708&quot; data-start=&quot;685&quot;&gt;키보드와 마우스에 전원이 들어오지 않음&lt;/li&gt;
&lt;li data-end=&quot;727&quot; data-start=&quot;709&quot;&gt;전원이 반복적으로 켜졌다 꺼짐&lt;/li&gt;
&lt;li data-end=&quot;747&quot; data-start=&quot;728&quot;&gt;메인보드 DRAM 경고등이 켜짐&lt;/li&gt;
&lt;li data-end=&quot;776&quot; data-start=&quot;748&quot;&gt;메인보드 스피커에서 메모리 오류 비프음이 발생함&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;885&quot; data-start=&quot;778&quot; data-ke-size=&quot;size16&quot;&gt;즉, &lt;b&gt;팬이 돌아간다고 해서 컴퓨터 부팅이 완료된 것은 아닙니다.&lt;/b&gt; 팬은 단순히 전원이 공급되면 작동할 수 있지만, 화면 출력에는 CPU와 RAM을 포함한 주요 부품의 초기화가 필요합니다.&lt;/p&gt;
&lt;p data-end=&quot;885&quot; data-start=&quot;778&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;885&quot; data-start=&quot;778&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;885&quot; data-start=&quot;778&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;885&quot; data-start=&quot;778&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;7. &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;POST(Power-On Self-Test) 단계에서 RAM 문제가 다른 부품보다 자주 발생하는 이유&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div data-is-intersecting=&quot;true&quot; data-turn-id-container=&quot;request-WEB:9a60901b-33e4-4c43-b3dc-d6949495e64b-11&quot;&gt;
&lt;div data-conversation-screenshot-content=&quot;&quot;&gt;
&lt;div data-message-model-slug=&quot;gpt-5-6-thinking&quot; data-turn-start-message=&quot;true&quot; data-message-id=&quot;798e1c1b-1b0f-4cb3-b144-0e020d9ad382&quot; data-message-author-role=&quot;assistant&quot;&gt;
&lt;p data-end=&quot;202&quot; data-start=&quot;69&quot; data-ke-size=&quot;size16&quot;&gt;첫째, RAM은 접점 수가 많고 장착 상태에 민감합니다. 메모리 모듈에는 수백 개의 금속 접점이 있으며, 슬롯과 정확하게 맞닿아야 합니다. RAM이 조금만 덜 꽂히거나 접점에 먼지, 이물질, 산화가 생겨도 신호 전달에 실패할 수 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;358&quot; data-start=&quot;204&quot; data-ke-size=&quot;size16&quot;&gt;둘째, RAM은 부팅 초기에 반드시 초기화되어야 하는 핵심 부품입니다. CPU가 BIOS&amp;middot;UEFI를 실행한 직후 메모리 용량, 속도, 전압, 타이밍을 확인하는 메모리 트레이닝을 수행합니다. 이 과정에서 오류가 발생하면 POST가 즉시 중단되므로 RAM 문제가 눈에 잘 띕니다.&lt;/p&gt;
&lt;p data-end=&quot;437&quot; data-start=&quot;360&quot; data-ke-size=&quot;size16&quot;&gt;셋째, RAM은 여러 부품의 설정과 동시에 영향을 받습니다. 실제 RAM 자체가 정상이어도 다음 문제로 메모리 오류가 발생할 수 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;573&quot; data-start=&quot;439&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;450&quot; data-start=&quot;439&quot;&gt;RAM 슬롯 불량&lt;/li&gt;
&lt;li data-end=&quot;467&quot; data-start=&quot;451&quot;&gt;CPU 소켓 핀 접촉 불량&lt;/li&gt;
&lt;li data-end=&quot;488&quot; data-start=&quot;468&quot;&gt;CPU 내부 메모리 컨트롤러 문제&lt;/li&gt;
&lt;li data-end=&quot;511&quot; data-start=&quot;489&quot;&gt;XMP&amp;middot;EXPO 오버클럭 설정 불안정&lt;/li&gt;
&lt;li data-end=&quot;530&quot; data-start=&quot;512&quot;&gt;서로 다른 RAM 모듈의 혼용&lt;/li&gt;
&lt;li data-end=&quot;555&quot; data-start=&quot;531&quot;&gt;메인보드 BIOS와 RAM의 호환성 문제&lt;/li&gt;
&lt;li data-end=&quot;573&quot; data-start=&quot;556&quot;&gt;전압 또는 타이밍 설정 오류&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;681&quot; data-start=&quot;575&quot; data-ke-size=&quot;size16&quot;&gt;즉, POST의 DRAM 오류는 반드시 RAM 모듈 자체의 고장만 의미하지는 않습니다. 메모리와 연결된 CPU, 메인보드, 슬롯 및 BIOS 설정 문제까지 RAM 오류로 나타날 수 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;794&quot; data-start=&quot;683&quot; data-ke-size=&quot;size16&quot;&gt;넷째, RAM은 사용자가 직접 탈착하거나 증설하는 경우가 많습니다. CPU나 그래픽카드보다 교체와 추가 장착이 빈번하므로 불완전한 장착, 잘못된 슬롯 사용 및 혼용 문제가 상대적으로 많이 발생합니다.&lt;/p&gt;
&lt;p data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;925&quot; data-start=&quot;796&quot; data-ke-size=&quot;size16&quot;&gt;결론적으로 POST에서 RAM 문제가 많이 나타나는 이유는 &lt;b&gt;RAM이 구조적으로 접촉에 민감하고, 부팅 초기에 복잡한 초기화 과정을 거치며, CPU&amp;middot;메인보드&amp;middot;BIOS 설정 문제까지 DRAM 오류로 표시될 수 있기 때문&lt;/b&gt;입니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div data-conversation-screenshot-content=&quot;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;3193&quot; data-start=&quot;3039&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;3193&quot; data-start=&quot;3039&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;3193&quot; data-start=&quot;3039&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. Postgre DB + Vector DB&lt;/b&gt;&lt;br /&gt;&lt;/h2&gt;
&lt;p data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;3193&quot; data-start=&quot;3039&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;PostgreSQL + pgvector에서는 보통 하나의 PostgreSQL 안에서 메타데이터&amp;middot;본문&amp;middot;벡터를 함께 저장하고 검색합니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;128&quot; data-start=&quot;106&quot; data-ke-size=&quot;size16&quot;&gt;예를 들면 한 행에 다음처럼 저장합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;markdown&quot;&gt;&lt;code&gt;documents
- id
- title
- content          &amp;larr; 실제 문서 조각 내용
- source
- category
- created_at
- embedding        &amp;larr; 문서 조각의 임베딩 벡터&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;294&quot; data-start=&quot;267&quot; data-ke-size=&quot;size16&quot;&gt;질문이 들어오면 일반적인 흐름은 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;maxima&quot;&gt;&lt;code&gt;사용자 질문
&amp;rarr; 질문을 임베딩 벡터로 변환
&amp;rarr; PostgreSQL의 embedding 열과 유사도 비교
&amp;rarr; 유사한 문서 행을 검색
&amp;rarr; 해당 행의 content를 함께 가져옴
&amp;rarr; LLM에 질문과 content를 전달
&amp;rarr; 답변 생성&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;558&quot; data-start=&quot;437&quot; data-ke-size=&quot;size16&quot;&gt;즉, &lt;b&gt;벡터 DB에서 문서 ID만 찾고 일반 DB에서 내용을 가져오는 구조라기보다&lt;/b&gt;, pgvector 검색 결과 행에서 content, title, source 등을 동시에 가져오는 방식이 일반적입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;sql&quot;&gt;&lt;code&gt;SELECT
    id,
    title,
    content,
    source,
    embedding &amp;lt;=&amp;gt; :question_embedding AS distance
FROM document_chunks
ORDER BY embedding &amp;lt;=&amp;gt; :question_embedding
LIMIT 5;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;780&quot; data-start=&quot;761&quot; data-ke-size=&quot;size16&quot;&gt;여기서 다음이 한 번에 수행됩니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;863&quot; data-start=&quot;782&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;811&quot; data-start=&quot;782&quot;&gt;embedding으로 질문과 가까운 문서 검색&lt;/li&gt;
&lt;li data-end=&quot;833&quot; data-start=&quot;812&quot;&gt;content로 실제 본문 반환&lt;/li&gt;
&lt;li data-end=&quot;863&quot; data-start=&quot;834&quot;&gt;title, source로 출처 정보 반환&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-end=&quot;881&quot; data-start=&quot;865&quot; data-ke-size=&quot;size26&quot;&gt;DB와 벡터 DB의 역할&lt;/h2&gt;
&lt;p data-end=&quot;946&quot; data-start=&quot;883&quot; data-ke-size=&quot;size16&quot;&gt;PostgreSQL을 사용할 때는 물리적으로 두 개의 별도 시스템이라기보다, 역할을 다음과 같이 구분하면 됩니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;구분저장&amp;middot;검색 대상검색 방식
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1155&quot; data-start=&quot;948&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;1155&quot; data-start=&quot;988&quot;&gt;
&lt;tr data-end=&quot;1040&quot; data-start=&quot;988&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;999&quot; data-start=&quot;988&quot;&gt;일반 DB 기능&lt;/td&gt;
&lt;td data-end=&quot;1027&quot; data-start=&quot;999&quot; data-col-size=&quot;sm&quot;&gt;제목, 날짜, 카테고리, 작성자, 권한, 본문&lt;/td&gt;
&lt;td data-end=&quot;1040&quot; data-start=&quot;1027&quot; data-col-size=&quot;sm&quot;&gt;SQL 조건 검색&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1088&quot; data-start=&quot;1041&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1052&quot; data-start=&quot;1041&quot;&gt;벡터 DB 기능&lt;/td&gt;
&lt;td data-end=&quot;1069&quot; data-start=&quot;1052&quot; data-col-size=&quot;sm&quot;&gt;문서 의미를 표현한 임베딩&lt;/td&gt;
&lt;td data-end=&quot;1088&quot; data-start=&quot;1069&quot; data-col-size=&quot;sm&quot;&gt;코사인 거리 등 유사도 검색&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1155&quot; data-start=&quot;1089&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1113&quot; data-start=&quot;1089&quot;&gt;PostgreSQL + pgvector&lt;/td&gt;
&lt;td data-end=&quot;1135&quot; data-start=&quot;1113&quot; data-col-size=&quot;sm&quot;&gt;위 두 기능을 하나의 DB에서 제공&lt;/td&gt;
&lt;td data-end=&quot;1155&quot; data-start=&quot;1135&quot; data-col-size=&quot;sm&quot;&gt;SQL 필터와 벡터 검색 결합&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1192&quot; data-start=&quot;1157&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 사용자가 다음과 같이 질문했다고 가정할 수 있습니다.&lt;/p&gt;
&lt;blockquote data-end=&quot;1231&quot; data-start=&quot;1194&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;1231&quot; data-start=&quot;1196&quot; data-ke-size=&quot;size16&quot;&gt;2026년 한국 해상풍력 입찰에서 가격 외 평가항목은 무엇인가?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;1266&quot; data-start=&quot;1233&quot; data-ke-size=&quot;size16&quot;&gt;이때 일반 DB 조건으로는 다음 항목을 제한할 수 있습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;country = '한국'
year = 2026
category = '해상풍력'&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1366&quot; data-start=&quot;1326&quot; data-ke-size=&quot;size16&quot;&gt;그 후 제한된 문서들 안에서 질문 임베딩과 가장 유사한 문서를 찾습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;sql&quot;&gt;&lt;code&gt;SELECT
    title,
    content,
    source
FROM document_chunks
WHERE country = '한국'
  AND year = 2026
  AND category = '해상풍력'
ORDER BY embedding &amp;lt;=&amp;gt; :question_embedding
LIMIT 5;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1611&quot; data-start=&quot;1558&quot; data-ke-size=&quot;size16&quot;&gt;이것을 &lt;b&gt;하이브리드 검색 또는 메타데이터 필터링이 결합된 벡터 검색&lt;/b&gt;이라고 볼 수 있습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;asciidoc&quot;&gt;&lt;code&gt;PostgreSQL + pgvector
- 문서 메타데이터
- 청크 본문
- 임베딩&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-end=&quot;2095&quot; data-start=&quot;2087&quot; data-ke-size=&quot;size26&quot;&gt;핵심 정리&lt;/h2&gt;
&lt;p data-end=&quot;2122&quot; data-start=&quot;2097&quot; data-ke-size=&quot;size16&quot;&gt;질문의 표현을 수정하면 다음이 더 정확합니다.&lt;/p&gt;
&lt;blockquote data-end=&quot;2229&quot; data-start=&quot;2124&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;2229&quot; data-start=&quot;2126&quot; data-ke-size=&quot;size16&quot;&gt;PostgreSQL의 일반 컬럼으로 문서의 조건과 메타데이터를 관리하고, pgvector 컬럼으로 질문과 의미가 비슷한 문서 조각을 검색한 뒤, 같은 행에 저장된 실제 본문을 가져온다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;벡터 검색으로 질문에 맞는 문서 조각을 찾고
일반 컬럼에서 실제 내용과 메타데이터를 가져온다&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;3193&quot; data-start=&quot;3039&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;3193&quot; data-start=&quot;3039&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-end=&quot;3193&quot; data-start=&quot;3039&quot; data-ke-size=&quot;size26&quot;&gt;9. 쇼핑몰 사용자 추천 알고리즘 작동 원리&lt;/h2&gt;
&lt;p data-end=&quot;90&quot; data-start=&quot;67&quot; data-ke-size=&quot;size16&quot;&gt;가장 대표적인 방식은 다음 네 가지입니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;101&quot; data-start=&quot;92&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;101&quot; data-start=&quot;92&quot;&gt;협업 필터링&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-end=&quot;125&quot; data-start=&quot;103&quot; data-ke-size=&quot;size16&quot;&gt;사용자와 상품의 행동 기록을 이용합니다.&lt;/p&gt;
&lt;p data-end=&quot;133&quot; data-start=&quot;127&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;204&quot; data-start=&quot;135&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;160&quot; data-start=&quot;135&quot;&gt;사용자 A가 신발, 양말, 운동복을 구매함&lt;/li&gt;
&lt;li data-end=&quot;182&quot; data-start=&quot;161&quot;&gt;사용자 B가 신발, 운동복을 구매함&lt;/li&gt;
&lt;li data-end=&quot;204&quot; data-start=&quot;183&quot;&gt;그러면 사용자 B에게 양말을 추천함&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;288&quot; data-start=&quot;206&quot; data-ke-size=&quot;size16&quot;&gt;여기서는 &amp;ldquo;신발을 산 사람에게 양말을 추천하라&amp;rdquo;는 정답을 사람이 직접 입력하지 않습니다. 과거 사용자들의 구매 패턴에서 자동으로 관계를 학습합니다.&lt;/p&gt;
&lt;p data-end=&quot;341&quot; data-start=&quot;290&quot; data-ke-size=&quot;size16&quot;&gt;사용자와 상품을 각각 벡터로 만들고, 내적이나 코사인 유사도로 선호도를 계산할 수 있습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;cs&quot;&gt;&lt;code&gt;사용자 벡터
[운동용품 선호, 가격 민감도, 브랜드 선호, 계절 선호, ...]

상품 벡터
[운동 관련성, 가격대, 브랜드, 계절성, ...]&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;470&quot; data-start=&quot;437&quot; data-ke-size=&quot;size16&quot;&gt;사용자 벡터와 상품 벡터가 가까우면 추천 점수가 높아집니다.&lt;/p&gt;
&lt;p data-end=&quot;544&quot; data-start=&quot;472&quot; data-ke-size=&quot;size16&quot;&gt;다만 실제 임베딩 차원은 &amp;ldquo;운동용품 선호&amp;rdquo;처럼 사람이 의미를 직접 붙인 값이 아니라, 모델이 학습한 잠재 요인인 경우가 많습니다.&lt;/p&gt;
&lt;p data-end=&quot;544&quot; data-start=&quot;472&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;544&quot; data-start=&quot;472&quot; data-ke-size=&quot;size16&quot;&gt;2. 콘텐츠 기반 추천&lt;/p&gt;
&lt;p data-end=&quot;593&quot; data-start=&quot;560&quot; data-ke-size=&quot;size16&quot;&gt;사용자가 이전에 본 상품과 속성이 비슷한 상품을 추천합니다.&lt;/p&gt;
&lt;p data-end=&quot;626&quot; data-start=&quot;595&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 사용자가 다음 상품을 자주 봤다고 가정합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;검은색
남성용
러닝화
10만 원대
나이키&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;693&quot; data-start=&quot;664&quot; data-ke-size=&quot;size16&quot;&gt;그러면 비슷한 속성을 가진 다른 운동화를 추천합니다.&lt;/p&gt;
&lt;p data-end=&quot;746&quot; data-start=&quot;695&quot; data-ke-size=&quot;size16&quot;&gt;이 방식에서는 상품 설명, 카테고리, 브랜드, 가격, 이미지 등을 벡터로 만들 수 있습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;사용자가 선호한 상품들의 벡터 평균
&amp;rarr; 사용자 취향 벡터

새 상품의 벡터
&amp;rarr; 상품 벡터

두 벡터의 유사도 계산
&amp;rarr; 추천 후보 선정&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;886&quot; data-start=&quot;836&quot; data-ke-size=&quot;size16&quot;&gt;이것은 질문에서 말한 &amp;ldquo;사용자 상태를 벡터로 만들고 주변 상품을 찾는 방식&amp;rdquo;에 가깝습니다.&lt;/p&gt;
&lt;p data-end=&quot;886&quot; data-start=&quot;836&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;886&quot; data-start=&quot;836&quot; data-ke-size=&quot;size16&quot;&gt;3. 지도학습 기반 추천&lt;/p&gt;
&lt;p data-end=&quot;929&quot; data-start=&quot;903&quot; data-ke-size=&quot;size16&quot;&gt;과거 행동을 정답으로 만들어 모델을 학습합니다.&lt;/p&gt;
&lt;p data-end=&quot;969&quot; data-start=&quot;931&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 한 사용자와 한 상품의 조합에 대해 다음 피처를 넣습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;사용자 나이
사용자 성별
최근 본 카테고리
최근 구매 상품
현재 날씨
현재 시간
상품 가격
상품 할인율
상품 카테고리
브랜드&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1075&quot; data-start=&quot;1054&quot; data-ke-size=&quot;size16&quot;&gt;정답은 다음과 같이 만들 수 있습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;클릭했으면 1
클릭하지 않았으면 0&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1113&quot; data-start=&quot;1110&quot; data-ke-size=&quot;size16&quot;&gt;또는:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;구매했으면 1
구매하지 않았으면 0&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1165&quot; data-start=&quot;1148&quot; data-ke-size=&quot;size16&quot;&gt;모델은 다음 함수를 학습합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;사용자 정보 + 상품 정보 + 현재 상황
&amp;rarr; 클릭 또는 구매 확률&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1239&quot; data-start=&quot;1217&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 모델 출력은 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;파전 구매 확률: 0.72
우산 구매 확률: 0.65
아이스크림 구매 확률: 0.08&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1361&quot; data-start=&quot;1302&quot; data-ke-size=&quot;size16&quot;&gt;비 오는 날 파전이 자주 구매되었다면, 사람이 규칙을 넣지 않아도 모델이 해당 패턴을 학습할 수 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;1361&quot; data-start=&quot;1302&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1361&quot; data-start=&quot;1302&quot; data-ke-size=&quot;size16&quot;&gt;4. 연관 규칙 기반 추천&lt;/p&gt;
&lt;p data-end=&quot;1419&quot; data-start=&quot;1379&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;신발을 산 사람은 양말도 산다&amp;rdquo;와 가장 직접적으로 대응하는 방식입니다.&lt;/p&gt;
&lt;p data-end=&quot;1456&quot; data-start=&quot;1421&quot; data-ke-size=&quot;size16&quot;&gt;장바구니 데이터를 분석해서 상품 간 동시 구매 관계를 찾습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;신발 구매자 1,000명 중
양말도 구매한 사람 400명

신발 &amp;rarr; 양말&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1532&quot; data-start=&quot;1512&quot; data-ke-size=&quot;size16&quot;&gt;대표적인 알고리즘은 다음과 같습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1581&quot; data-start=&quot;1534&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1543&quot; data-start=&quot;1534&quot;&gt;Apriori&lt;/li&gt;
&lt;li data-end=&quot;1555&quot; data-start=&quot;1544&quot;&gt;FP-Growth&lt;/li&gt;
&lt;li data-end=&quot;1581&quot; data-start=&quot;1556&quot;&gt;Association Rule Mining&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1604&quot; data-start=&quot;1583&quot; data-ke-size=&quot;size16&quot;&gt;여기서 중요한 지표는 다음과 같습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1709&quot; data-start=&quot;1606&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1641&quot; data-start=&quot;1606&quot;&gt;Support: 두 상품이 전체 거래에서 함께 등장하는 비율&lt;/li&gt;
&lt;li data-end=&quot;1674&quot; data-start=&quot;1642&quot;&gt;Confidence: 신발을 산 사람이 양말도 산 비율&lt;/li&gt;
&lt;li data-end=&quot;1709&quot; data-start=&quot;1675&quot;&gt;Lift: 우연한 동시 구매보다 실제 관계가 얼마나 강한지&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1771&quot; data-start=&quot;1711&quot; data-ke-size=&quot;size16&quot;&gt;이 방식도 사람이 &amp;ldquo;신발 &amp;rarr; 양말&amp;rdquo;이라는 정답을 직접 주는 것이 아니라, 거래 데이터에서 규칙을 발견합니다.&lt;/p&gt;
&lt;h2 data-end=&quot;1798&quot; data-start=&quot;1773&quot; data-ke-size=&quot;size26&quot;&gt;&amp;ldquo;비 오는 날 파전&amp;rdquo;은 어떻게 처리하는가&lt;/h2&gt;
&lt;p data-end=&quot;1815&quot; data-start=&quot;1800&quot; data-ke-size=&quot;size16&quot;&gt;세 가지 방식이 가능합니다.&lt;/p&gt;
&lt;p data-end=&quot;1843&quot; data-start=&quot;1817&quot; data-ke-size=&quot;size16&quot;&gt;첫째, 사람이 규칙을 직접 설정할 수 있습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;비가 온다
&amp;rarr; 파전과 우산 추천 점수 증가&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1899&quot; data-start=&quot;1882&quot; data-ke-size=&quot;size16&quot;&gt;이것은 규칙 기반 시스템입니다.&lt;/p&gt;
&lt;p data-end=&quot;1923&quot; data-start=&quot;1901&quot; data-ke-size=&quot;size16&quot;&gt;둘째, 지도학습으로 학습할 수 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;1948&quot; data-start=&quot;1925&quot; data-ke-size=&quot;size16&quot;&gt;과거 데이터에 날씨와 구매 기록이 있다면:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;날씨 = 비
상품 = 파전
구매 여부 = 1&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2038&quot; data-start=&quot;1988&quot; data-ke-size=&quot;size16&quot;&gt;같은 사례가 누적됩니다. 모델은 비가 올 때 파전 구매 확률이 높아지는 패턴을 학습합니다.&lt;/p&gt;
&lt;p data-end=&quot;2064&quot; data-start=&quot;2040&quot; data-ke-size=&quot;size16&quot;&gt;셋째, 통계적 연관성을 계산할 수 있습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;비 오는 날 파전 구매율
맑은 날 파전 구매율&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2145&quot; data-start=&quot;2105&quot; data-ke-size=&quot;size16&quot;&gt;두 비율을 비교해 비 오는 날 파전 구매가 실제로 증가하는지 확인합니다.&lt;/p&gt;
&lt;h2 data-end=&quot;2169&quot; data-start=&quot;2147&quot; data-ke-size=&quot;size26&quot;&gt;실제 쇼핑몰에서는 어떻게 결합하는가&lt;/h2&gt;
&lt;p data-end=&quot;2195&quot; data-start=&quot;2171&quot; data-ke-size=&quot;size16&quot;&gt;일반적인 추천 시스템은 다음처럼 구성됩니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;1단계: 후보 생성
협업 필터링, 벡터 유사도, 인기 상품 등으로
수백만 개 상품 중 수백 개를 추림

2단계: 순위화
지도학습 또는 딥러닝 모델로
각 상품의 클릭&amp;middot;구매 확률 계산

3단계: 후처리
재고, 배송 가능 여부, 광고, 중복, 다양성 등을 반영

4단계: 최종 추천
점수가 높은 상품을 사용자에게 노출&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2391&quot; data-start=&quot;2385&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;전체 상품: 1,000,000개
&amp;rarr; 벡터 유사도와 협업 필터링으로 500개 후보
&amp;rarr; 지도학습 모델로 구매 확률 예측
&amp;rarr; 재고 없는 상품 제거
&amp;rarr; 동일 브랜드 과다 노출 방지
&amp;rarr; 최종 20개 추천&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2585&quot; data-start=&quot;2515&quot; data-ke-size=&quot;size16&quot;&gt;따라서 벡터 유사도는 주로 후보를 빠르게 찾는 데 사용되고, 지도학습 모델은 후보들의 최종 순서를 정하는 데 많이 사용됩니다.&lt;/p&gt;
&lt;h2 data-end=&quot;2605&quot; data-start=&quot;2587&quot; data-ke-size=&quot;size26&quot;&gt;정답 데이터는 누가 만드는가&lt;/h2&gt;
&lt;p data-end=&quot;2672&quot; data-start=&quot;2607&quot; data-ke-size=&quot;size16&quot;&gt;추천 시스템에서는 사람이 정답을 하나씩 작성하지 않는 경우가 대부분입니다. 사용자의 행동 자체를 정답처럼 사용합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;노출했는가
클릭했는가
장바구니에 넣었는가
구매했는가
찜했는가
오래 보았는가
반품했는가&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2756&quot; data-start=&quot;2735&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 가중치를 줄 수도 있습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;상품 노출: 0
클릭: 1
찜: 2
장바구니: 3
구매: 5
반품: -3&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2830&quot; data-start=&quot;2812&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;2866&quot; data-start=&quot;2832&quot; data-ke-size=&quot;size16&quot;&gt;별점처럼 사용자가 직접 선호도를 입력하면 명시적 피드백입니다.&lt;/p&gt;
&lt;h2 data-end=&quot;2876&quot; data-start=&quot;2868&quot; data-ke-size=&quot;size26&quot;&gt;핵심 차이&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;방식무엇을 기반으로 하는가예시
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;3154&quot; data-start=&quot;2878&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;3154&quot; data-start=&quot;2919&quot;&gt;
&lt;tr data-end=&quot;2972&quot; data-start=&quot;2919&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2928&quot; data-start=&quot;2919&quot;&gt;벡터 유사도&lt;/td&gt;
&lt;td data-end=&quot;2945&quot; data-start=&quot;2928&quot; data-col-size=&quot;sm&quot;&gt;사용자와 상품의 표현 벡터&lt;/td&gt;
&lt;td data-end=&quot;2972&quot; data-start=&quot;2945&quot; data-col-size=&quot;sm&quot;&gt;러닝화를 본 사용자에게 비슷한 러닝화 추천&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3026&quot; data-start=&quot;2973&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2982&quot; data-start=&quot;2973&quot;&gt;협업 필터링&lt;/td&gt;
&lt;td data-end=&quot;2997&quot; data-start=&quot;2982&quot; data-col-size=&quot;sm&quot;&gt;비슷한 사용자들의 행동&lt;/td&gt;
&lt;td data-end=&quot;3026&quot; data-start=&quot;2997&quot; data-col-size=&quot;sm&quot;&gt;나와 구매 패턴이 비슷한 사람이 산 상품 추천&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3074&quot; data-start=&quot;3027&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3034&quot; data-start=&quot;3027&quot;&gt;지도학습&lt;/td&gt;
&lt;td data-end=&quot;3048&quot; data-start=&quot;3034&quot; data-col-size=&quot;sm&quot;&gt;과거 클릭&amp;middot;구매 결과&lt;/td&gt;
&lt;td data-end=&quot;3074&quot; data-start=&quot;3048&quot; data-col-size=&quot;sm&quot;&gt;이 사용자가 이 상품을 구매할 확률 예측&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3116&quot; data-start=&quot;3075&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3083&quot; data-start=&quot;3075&quot;&gt;연관 규칙&lt;/td&gt;
&lt;td data-end=&quot;3098&quot; data-start=&quot;3083&quot; data-col-size=&quot;sm&quot;&gt;함께 구매된 상품 조합&lt;/td&gt;
&lt;td data-end=&quot;3116&quot; data-start=&quot;3098&quot; data-col-size=&quot;sm&quot;&gt;신발 구매자에게 양말 추천&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3154&quot; data-start=&quot;3117&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3125&quot; data-start=&quot;3117&quot;&gt;규칙 기반&lt;/td&gt;
&lt;td data-end=&quot;3138&quot; data-start=&quot;3125&quot; data-col-size=&quot;sm&quot;&gt;사람이 정의한 조건&lt;/td&gt;
&lt;td data-end=&quot;3154&quot; data-start=&quot;3138&quot; data-col-size=&quot;sm&quot;&gt;비 오는 날 우산 추천&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;3239&quot; data-start=&quot;3156&quot; data-ke-size=&quot;size16&quot;&gt;결론적으로, 쇼핑몰 추천 알고리즘은 &amp;ldquo;사용자 벡터 주변 상품을 찾는 방식&amp;rdquo;도 맞고, &amp;ldquo;과거 구매 여부를 정답으로 학습하는 지도학습 방식&amp;rdquo;도 맞습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;벡터&amp;middot;협업 필터링으로 추천 후보 생성
&amp;rarr; 지도학습 모델로 클릭&amp;middot;구매 확률 계산
&amp;rarr; 재고와 비즈니스 규칙으로 최종 정렬&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>궁금증</category>
      <author>김형준</author>
      <guid isPermaLink="true">https://devreco.tistory.com/37</guid>
      <comments>https://devreco.tistory.com/37#entry37comment</comments>
      <pubDate>Fri, 24 Jul 2026 11:04:36 +0900</pubDate>
    </item>
    <item>
      <title>Cross Entropy Loss는 무엇인가?</title>
      <link>https://devreco.tistory.com/35</link>
      <description>&lt;h2 data-end=&quot;86&quot; data-start=&quot;78&quot; data-section-id=&quot;zhn8uv&quot; data-ke-size=&quot;size26&quot;&gt;1. 정의&lt;/h2&gt;
&lt;p data-end=&quot;160&quot; data-start=&quot;88&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Cross Entropy Loss&lt;/b&gt;는 모델이 예측한 확률 분포와 실제 정답 분포가 얼마나 다른지를 측정하는 손실 함수입니다.&lt;/p&gt;
&lt;p data-end=&quot;213&quot; data-start=&quot;162&quot; data-ke-size=&quot;size16&quot;&gt;분류 문제에서 가장 많이 사용되는 손실 함수이며, 특히 다음 상황에서 핵심적으로 사용됩니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;이미지 분류
텍스트 분류
음성 분류
CNN 분류기
Transformer
LLM next-token prediction&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;315&quot; data-start=&quot;294&quot; data-ke-size=&quot;size16&quot;&gt;한 문장으로 정의하면 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;mathematica&quot;&gt;&lt;code&gt;Cross Entropy Loss = 정답 클래스에 모델이 얼마나 높은 확률을 부여했는지 평가하는 손실 함수&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;410&quot; data-start=&quot;391&quot; data-ke-size=&quot;size16&quot;&gt;조금 더 정확히 말하면 다음입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;mathematica&quot;&gt;&lt;code&gt;Cross Entropy Loss = 실제 정답 분포를 기준으로 예측 확률 분포가 얼마나 비효율적인지 측정하는 함수&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;521&quot; data-start=&quot;490&quot; data-ke-size=&quot;size16&quot;&gt;즉, 단순히 &amp;ldquo;맞았다 / 틀렸다&amp;rdquo;만 보는 것이 아닙니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;정답을 맞혔는가?
정답에 얼마나 높은 확률을 줬는가?
틀렸다면 얼마나 확신하면서 틀렸는가?&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;599&quot; data-start=&quot;587&quot; data-ke-size=&quot;size16&quot;&gt;까지 함께 평가합니다.&lt;/p&gt;
&lt;hr data-end=&quot;604&quot; data-start=&quot;601&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;636&quot; data-start=&quot;606&quot; data-section-id=&quot;klhgrw&quot;&gt;2. Cross Entropy Loss의 핵심 직관&lt;/h1&gt;
&lt;p data-end=&quot;666&quot; data-start=&quot;638&quot; data-ke-size=&quot;size16&quot;&gt;Cross Entropy는 다음 원리로 동작합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;erlang&quot;&gt;&lt;code&gt;정답 클래스 확률이 높으면 loss가 작다.
정답 클래스 확률이 낮으면 loss가 크다.
정답 클래스 확률이 거의 0이면 loss가 매우 커진다.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;787&quot; data-start=&quot;763&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 정답이 &amp;ldquo;고양이&amp;rdquo;라고 하겠습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;모델 예측정답 클래스 확률평가
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;952&quot; data-start=&quot;789&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;952&quot; data-start=&quot;831&quot;&gt;
&lt;tr data-end=&quot;864&quot; data-start=&quot;831&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;842&quot; data-start=&quot;831&quot;&gt;고양이 0.99&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;850&quot; data-start=&quot;842&quot;&gt;매우 높음&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;864&quot; data-start=&quot;850&quot;&gt;loss 매우 작음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;892&quot; data-start=&quot;865&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;876&quot; data-start=&quot;865&quot;&gt;고양이 0.70&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;881&quot; data-start=&quot;876&quot;&gt;높음&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;892&quot; data-start=&quot;881&quot;&gt;loss 작음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;919&quot; data-start=&quot;893&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;904&quot; data-start=&quot;893&quot;&gt;고양이 0.30&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;909&quot; data-start=&quot;904&quot;&gt;낮음&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;919&quot; data-start=&quot;909&quot;&gt;loss 큼&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;952&quot; data-start=&quot;920&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;931&quot; data-start=&quot;920&quot;&gt;고양이 0.01&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;939&quot; data-start=&quot;931&quot;&gt;매우 낮음&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;952&quot; data-start=&quot;939&quot;&gt;loss 매우 큼&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;991&quot; data-start=&quot;954&quot; data-ke-size=&quot;size16&quot;&gt;즉, Cross Entropy는 모델에게 다음과 같이 학습시킵니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;erlang&quot;&gt;&lt;code&gt;정답 클래스 확률을 최대한 높여라.
오답 클래스 확률은 낮춰라.
틀린 예측을 확신하지 마라.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;1061&quot; data-start=&quot;1058&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;1081&quot; data-start=&quot;1063&quot; data-section-id=&quot;18brnff&quot;&gt;3. Entropy란 무엇인가&lt;/h1&gt;
&lt;p data-end=&quot;1129&quot; data-start=&quot;1083&quot; data-ke-size=&quot;size16&quot;&gt;Cross Entropy를 이해하려면 먼저 &lt;b&gt;Entropy&lt;/b&gt;를 이해해야 합니다.&lt;/p&gt;
&lt;p data-end=&quot;1169&quot; data-start=&quot;1131&quot; data-ke-size=&quot;size16&quot;&gt;Entropy는 정보이론에서 나온 개념이며, 의미는 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;Entropy = 불확실성의 크기&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1222&quot; data-start=&quot;1203&quot; data-ke-size=&quot;size16&quot;&gt;또는 다음처럼 이해할 수 있습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;Entropy = 어떤 결과가 나올지 예측하기 어려운 정도&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-end=&quot;1282&quot; data-start=&quot;1270&quot; data-section-id=&quot;155nwrk&quot; data-ke-size=&quot;size26&quot;&gt;3.1 동전 예시&lt;/h2&gt;
&lt;p data-end=&quot;1302&quot; data-start=&quot;1284&quot; data-ke-size=&quot;size16&quot;&gt;공정한 동전이 있다고 하겠습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;앞면: 50%
뒷면: 50%&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1365&quot; data-start=&quot;1333&quot; data-ke-size=&quot;size16&quot;&gt;이 경우 앞면이 나올지 뒷면이 나올지 예측하기 어렵습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;gams&quot;&gt;&lt;code&gt;불확실성 큼
Entropy 큼&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1422&quot; data-start=&quot;1397&quot; data-ke-size=&quot;size16&quot;&gt;반대로 다음과 같은 동전이 있다고 하겠습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;앞면: 99%
뒷면: 1%&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1483&quot; data-start=&quot;1452&quot; data-ke-size=&quot;size16&quot;&gt;이 경우 거의 앞면이 나올 것이라고 예측할 수 있습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;gams&quot;&gt;&lt;code&gt;불확실성 작음
Entropy 작음&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1546&quot; data-start=&quot;1517&quot; data-ke-size=&quot;size16&quot;&gt;따라서 Entropy는 다음처럼 정리할 수 있습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;erlang&quot;&gt;&lt;code&gt;결과가 예측하기 어려울수록 entropy가 크다.
결과가 거의 확실할수록 entropy가 작다.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;1618&quot; data-start=&quot;1615&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;1644&quot; data-start=&quot;1620&quot; data-section-id=&quot;1n69p42&quot;&gt;4. Cross Entropy란 무엇인가&lt;/h1&gt;
&lt;p data-end=&quot;1705&quot; data-start=&quot;1646&quot; data-ke-size=&quot;size16&quot;&gt;Entropy가 &amp;ldquo;실제 분포 자체의 불확실성&amp;rdquo;을 나타낸다면, Cross Entropy는 다음을 측정합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;실제 정답 분포를 기준으로 했을 때,
모델의 예측 분포가 얼마나 비효율적인가&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1778&quot; data-start=&quot;1763&quot; data-ke-size=&quot;size16&quot;&gt;즉, 다음 질문에 답합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;정답 기준에서 봤을 때 모델의 예측은 얼마나 나쁜가?&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1860&quot; data-start=&quot;1823&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 정답이 고양이인데 모델이 다음처럼 예측했다고 하겠습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;고양이: 0.01
강아지: 0.89
자동차: 0.10&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1939&quot; data-start=&quot;1905&quot; data-ke-size=&quot;size16&quot;&gt;이 경우 모델은 정답인 고양이에 거의 확률을 주지 않았습니다.&lt;/p&gt;
&lt;p data-end=&quot;1976&quot; data-start=&quot;1941&quot; data-ke-size=&quot;size16&quot;&gt;Cross Entropy는 이를 매우 나쁜 예측으로 판단합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;정답 클래스 확률이 낮음
&amp;rarr; loss 큼
&amp;rarr; 강한 벌점&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;2025&quot; data-start=&quot;2022&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;2053&quot; data-start=&quot;2027&quot; data-section-id=&quot;s7zccu&quot;&gt;5. Cross Entropy Loss 수식&lt;/h1&gt;
&lt;h2 data-end=&quot;2091&quot; data-start=&quot;2055&quot; data-section-id=&quot;nnp5au&quot; data-ke-size=&quot;size26&quot;&gt;5.1 Multi-Class Classification 수식&lt;/h2&gt;
&lt;p data-end=&quot;2134&quot; data-start=&quot;2093&quot; data-ke-size=&quot;size16&quot;&gt;다중 클래스 분류에서 Cross Entropy Loss는 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;L = -&amp;Sigma;ᵢ yᵢ log(pᵢ)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2186&quot; data-start=&quot;2168&quot; data-ke-size=&quot;size16&quot;&gt;각 항의 의미는 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;기호의미
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;2323&quot; data-start=&quot;2188&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;2323&quot; data-start=&quot;2210&quot;&gt;
&lt;tr data-end=&quot;2226&quot; data-start=&quot;2210&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2216&quot; data-start=&quot;2210&quot;&gt;L&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2226&quot; data-start=&quot;2216&quot;&gt;loss 값&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2243&quot; data-start=&quot;2227&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2233&quot; data-start=&quot;2227&quot;&gt;C&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2243&quot; data-start=&quot;2233&quot;&gt;클래스 개수&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2275&quot; data-start=&quot;2244&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2251&quot; data-start=&quot;2244&quot;&gt;yᵢ&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2275&quot; data-start=&quot;2251&quot;&gt;실제 정답 분포, 보통 one-hot&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2305&quot; data-start=&quot;2276&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2283&quot; data-start=&quot;2276&quot;&gt;pᵢ&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2305&quot; data-start=&quot;2283&quot;&gt;모델이 예측한 i번째 클래스 확률&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2323&quot; data-start=&quot;2306&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2314&quot; data-start=&quot;2306&quot;&gt;log&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2323&quot; data-start=&quot;2314&quot;&gt;로그 함수&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2368&quot; data-start=&quot;2325&quot; data-ke-size=&quot;size16&quot;&gt;정답이 one-hot이면 대부분의 yᵢ는 0이고, 정답 클래스만 1입니다.&lt;/p&gt;
&lt;p data-end=&quot;2388&quot; data-start=&quot;2370&quot; data-ke-size=&quot;size16&quot;&gt;따라서 실제로는 다음만 남습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;L = -log(정답 클래스 확률)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2453&quot; data-start=&quot;2423&quot; data-ke-size=&quot;size16&quot;&gt;즉, Cross Entropy는 사실상 다음을 봅니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;erlang-repl&quot;&gt;&lt;code&gt;모델이 정답 클래스에 몇 % 확률을 줬는가?&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;2496&quot; data-start=&quot;2493&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;2534&quot; data-start=&quot;2498&quot; data-section-id=&quot;1fthnv2&quot;&gt;6. One-Hot Encoding과 Cross Entropy&lt;/h1&gt;
&lt;p data-end=&quot;2561&quot; data-start=&quot;2536&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 클래스가 다음과 같다고 하겠습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;json&quot;&gt;&lt;code&gt;[고양이, 강아지, 자동차]&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2622&quot; data-start=&quot;2592&quot; data-ke-size=&quot;size16&quot;&gt;정답이 고양이면 one-hot label은 다음입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;y = [1, 0, 0]&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2672&quot; data-start=&quot;2651&quot; data-ke-size=&quot;size16&quot;&gt;모델 예측이 다음과 같다고 하겠습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;p = [0.7, 0.2, 0.1]&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2733&quot; data-start=&quot;2707&quot; data-ke-size=&quot;size16&quot;&gt;Cross Entropy는 다음처럼 계산됩니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;L = -(1 &amp;times; log(0.7) + 0 &amp;times; log(0.2) + 0 &amp;times; log(0.1))&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2814&quot; data-start=&quot;2798&quot; data-ke-size=&quot;size16&quot;&gt;0이 곱해진 항은 사라집니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;L = -log(0.7)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2880&quot; data-start=&quot;2843&quot; data-ke-size=&quot;size16&quot;&gt;즉, 정답 클래스인 고양이의 확률만 loss 계산에 직접 남습니다.&lt;/p&gt;
&lt;p data-end=&quot;2896&quot; data-start=&quot;2882&quot; data-ke-size=&quot;size16&quot;&gt;따라서 핵심은 다음입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;mathematica&quot;&gt;&lt;code&gt;Cross Entropy는 정답 클래스 확률을 직접 평가한다.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;2949&quot; data-start=&quot;2946&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;2968&quot; data-start=&quot;2951&quot; data-section-id=&quot;1adroia&quot;&gt;7. 왜 log를 사용하는가&lt;/h1&gt;
&lt;p data-end=&quot;3034&quot; data-start=&quot;2970&quot; data-ke-size=&quot;size16&quot;&gt;Cross Entropy에서 log를 사용하는 이유는 &lt;b&gt;정답 확률이 낮을 때 강한 패널티를 주기 위해서&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-end=&quot;3049&quot; data-start=&quot;3036&quot; data-ke-size=&quot;size16&quot;&gt;수식은 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;L = -log(p_true)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;3115&quot; data-start=&quot;3081&quot; data-ke-size=&quot;size16&quot;&gt;여기서 p_true는 정답 클래스에 대한 예측 확률입니다.&lt;/p&gt;
&lt;h2 data-end=&quot;3135&quot; data-start=&quot;3117&quot; data-section-id=&quot;14nshxy&quot; data-ke-size=&quot;size26&quot;&gt;7.1 정답 확률이 높을 때&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;p_true = 0.99
-log(0.99) &amp;asymp; 0.01&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;3196&quot; data-start=&quot;3182&quot; data-ke-size=&quot;size16&quot;&gt;loss가 매우 작습니다.&lt;/p&gt;
&lt;h2 data-end=&quot;3217&quot; data-start=&quot;3198&quot; data-section-id=&quot;e1fw0a&quot; data-ke-size=&quot;size26&quot;&gt;7.2 정답 확률이 중간일 때&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;p_true = 0.5
-log(0.5) &amp;asymp; 0.69&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;3279&quot; data-start=&quot;3262&quot; data-ke-size=&quot;size16&quot;&gt;loss가 어느 정도 있습니다.&lt;/p&gt;
&lt;h2 data-end=&quot;3299&quot; data-start=&quot;3281&quot; data-section-id=&quot;b3t1t4&quot; data-ke-size=&quot;size26&quot;&gt;7.3 정답 확률이 낮을 때&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;p_true = 0.01
-log(0.01) &amp;asymp; 4.61&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;3359&quot; data-start=&quot;3346&quot; data-ke-size=&quot;size16&quot;&gt;loss가 매우 큽니다.&lt;/p&gt;
&lt;h2 data-end=&quot;3382&quot; data-start=&quot;3361&quot; data-section-id=&quot;r38xk1&quot; data-ke-size=&quot;size26&quot;&gt;7.4 정답 확률이 거의 0일 때&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;1c&quot;&gt;&lt;code&gt;p_true &amp;rarr; 0
-log(p_true) &amp;rarr; &amp;infin;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;3442&quot; data-start=&quot;3425&quot; data-ke-size=&quot;size16&quot;&gt;loss가 폭발적으로 커집니다.&lt;/p&gt;
&lt;p data-end=&quot;3462&quot; data-start=&quot;3444&quot; data-ke-size=&quot;size16&quot;&gt;즉, log의 역할은 다음입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;정답인데 확률을 거의 0으로 예측한 경우 매우 강하게 벌점 부여&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;3516&quot; data-start=&quot;3513&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;3549&quot; data-start=&quot;3518&quot; data-section-id=&quot;vs4ww3&quot;&gt;8. Softmax와 Cross Entropy의 관계&lt;/h1&gt;
&lt;p data-end=&quot;3587&quot; data-start=&quot;3551&quot; data-ke-size=&quot;size16&quot;&gt;Cross Entropy는 보통 Softmax와 함께 사용됩니다.&lt;/p&gt;
&lt;p data-end=&quot;3658&quot; data-start=&quot;3589&quot; data-ke-size=&quot;size16&quot;&gt;신경망의 마지막 layer는 보통 확률을 바로 출력하지 않습니다.&lt;br /&gt;대신 각 클래스에 대한 raw score를 출력합니다.&lt;/p&gt;
&lt;p data-end=&quot;3690&quot; data-start=&quot;3660&quot; data-ke-size=&quot;size16&quot;&gt;이 raw score를 &lt;b&gt;logit&lt;/b&gt;이라고 합니다.&lt;/p&gt;
&lt;p data-end=&quot;3694&quot; data-start=&quot;3692&quot; data-ke-size=&quot;size16&quot;&gt;예:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;logits = [2.1, 1.3, 0.2]&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;3751&quot; data-start=&quot;3734&quot; data-ke-size=&quot;size16&quot;&gt;이 값은 아직 확률이 아닙니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;합이 1이 아님
음수도 가능
범위 제한 없음&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;3822&quot; data-start=&quot;3791&quot; data-ke-size=&quot;size16&quot;&gt;Softmax는 이 logits를 확률 분포로 바꿉니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;softmax(logits) = [0.62, 0.28, 0.10]&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;3922&quot; data-start=&quot;3874&quot; data-ke-size=&quot;size16&quot;&gt;그 다음 Cross Entropy가 정답 클래스 확률을 기준으로 loss를 계산합니다.&lt;/p&gt;
&lt;p data-end=&quot;3940&quot; data-start=&quot;3924&quot; data-ke-size=&quot;size16&quot;&gt;전체 흐름은 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;CNN / Transformer 출력
&amp;rarr; logits
&amp;rarr; Softmax
&amp;rarr; class probability
&amp;rarr; Cross Entropy Loss&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;4039&quot; data-start=&quot;4036&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;4077&quot; data-start=&quot;4041&quot; data-section-id=&quot;jmbb08&quot;&gt;9. Softmax + Cross Entropy가 중요한 이유&lt;/h1&gt;
&lt;p data-end=&quot;4129&quot; data-start=&quot;4079&quot; data-ke-size=&quot;size16&quot;&gt;Softmax와 Cross Entropy를 함께 쓰면 gradient가 매우 단순해집니다.&lt;/p&gt;
&lt;p data-end=&quot;4192&quot; data-start=&quot;4131&quot; data-ke-size=&quot;size16&quot;&gt;logit을 zᵢ, softmax 확률을 pᵢ, 정답 one-hot을 yᵢ라고 하면 다음이 됩니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;fix&quot;&gt;&lt;code&gt;&amp;part;L / &amp;part;zᵢ = pᵢ - yᵢ&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;4240&quot; data-start=&quot;4226&quot; data-ke-size=&quot;size16&quot;&gt;이 식이 매우 중요합니다.&lt;/p&gt;
&lt;p data-end=&quot;4266&quot; data-start=&quot;4242&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 예측이 다음과 같다고 하겠습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;p = [0.7, 0.2, 0.1]&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;4317&quot; data-start=&quot;4301&quot; data-ke-size=&quot;size16&quot;&gt;정답은 첫 번째 클래스입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;y = [1, 0, 0]&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;4369&quot; data-start=&quot;4346&quot; data-ke-size=&quot;size16&quot;&gt;그러면 gradient는 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;p - y = [0.7 - 1, 0.2 - 0, 0.1 - 0]
      = [-0.3, 0.2, 0.1]&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;4455&quot; data-start=&quot;4445&quot; data-ke-size=&quot;size16&quot;&gt;의미는 다음입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;클래스gradient의미
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;4589&quot; data-start=&quot;4457&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;4589&quot; data-start=&quot;4496&quot;&gt;
&lt;tr data-end=&quot;4527&quot; data-start=&quot;4496&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4505&quot; data-start=&quot;4496&quot;&gt;정답 클래스&lt;/td&gt;
&lt;td data-end=&quot;4512&quot; data-start=&quot;4505&quot; data-col-size=&quot;sm&quot;&gt;-0.3&lt;/td&gt;
&lt;td data-end=&quot;4527&quot; data-start=&quot;4512&quot; data-col-size=&quot;sm&quot;&gt;확률을 더 올려야 함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;4558&quot; data-start=&quot;4528&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4539&quot; data-start=&quot;4528&quot;&gt;오답 클래스 1&lt;/td&gt;
&lt;td data-end=&quot;4545&quot; data-start=&quot;4539&quot; data-col-size=&quot;sm&quot;&gt;0.2&lt;/td&gt;
&lt;td data-end=&quot;4558&quot; data-start=&quot;4545&quot; data-col-size=&quot;sm&quot;&gt;확률을 낮춰야 함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;4589&quot; data-start=&quot;4559&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4570&quot; data-start=&quot;4559&quot;&gt;오답 클래스 2&lt;/td&gt;
&lt;td data-end=&quot;4576&quot; data-start=&quot;4570&quot; data-col-size=&quot;sm&quot;&gt;0.1&lt;/td&gt;
&lt;td data-end=&quot;4589&quot; data-start=&quot;4576&quot; data-col-size=&quot;sm&quot;&gt;확률을 낮춰야 함&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;4643&quot; data-start=&quot;4591&quot; data-ke-size=&quot;size16&quot;&gt;즉, Softmax + Cross Entropy는 모델에게 매우 직접적인 학습 신호를 줍니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;erlang&quot;&gt;&lt;code&gt;정답 클래스는 올려라.
오답 클래스는 내려라.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;4687&quot; data-start=&quot;4684&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;4718&quot; data-start=&quot;4689&quot; data-section-id=&quot;1furq1s&quot;&gt;10. 역전파에서 Cross Entropy의 역할&lt;/h1&gt;
&lt;p data-end=&quot;4746&quot; data-start=&quot;4720&quot; data-ke-size=&quot;size16&quot;&gt;Cross Entropy는 학습의 출발점입니다.&lt;/p&gt;
&lt;p data-end=&quot;4771&quot; data-start=&quot;4748&quot; data-ke-size=&quot;size16&quot;&gt;모델이 예측을 하면 loss가 계산됩니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;mathematica&quot;&gt;&lt;code&gt;예측 확률 p
정답 y
&amp;rarr; Cross Entropy Loss L&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;4859&quot; data-start=&quot;4822&quot; data-ke-size=&quot;size16&quot;&gt;그 다음 역전파는 loss를 기준으로 gradient를 계산합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;tp&quot;&gt;&lt;code&gt;&amp;part;L / &amp;part;W&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;4904&quot; data-start=&quot;4882&quot; data-ke-size=&quot;size16&quot;&gt;이 gradient는 다음을 의미합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;어떤 weight를 어느 방향으로 바꾸면 loss가 줄어드는가?&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;4986&quot; data-start=&quot;4955&quot; data-ke-size=&quot;size16&quot;&gt;그 후 optimizer가 weight를 업데이트합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;tp&quot;&gt;&lt;code&gt;W &amp;larr; W - &amp;eta; &amp;part;L/&amp;part;W&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;5056&quot; data-start=&quot;5017&quot; data-ke-size=&quot;size16&quot;&gt;따라서 Cross Entropy의 역할은 단순한 점수 계산이 아닙니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;모델이 어떤 방향으로 학습해야 하는지 결정하는 기준&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;5104&quot; data-start=&quot;5100&quot; data-ke-size=&quot;size16&quot;&gt;입니다.&lt;/p&gt;
&lt;hr data-end=&quot;5109&quot; data-start=&quot;5106&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;5137&quot; data-start=&quot;5111&quot; data-section-id=&quot;u632r9&quot;&gt;11. Cross Entropy의 진짜 목적&lt;/h1&gt;
&lt;p data-end=&quot;5181&quot; data-start=&quot;5139&quot; data-ke-size=&quot;size16&quot;&gt;Cross Entropy는 단순히 &amp;ldquo;틀린 정도&amp;rdquo;를 계산하는 함수가 아닙니다.&lt;/p&gt;
&lt;p data-end=&quot;5196&quot; data-start=&quot;5183&quot; data-ke-size=&quot;size16&quot;&gt;진짜 목적은 다음입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;예측 확률 분포를 실제 정답 분포에 가깝게 만드는 것&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;5290&quot; data-start=&quot;5241&quot; data-ke-size=&quot;size16&quot;&gt;즉, 모델이 단순히 정답을 맞히는 것만이 아니라, 올바른 확률 체계를 배우도록 만듭니다.&lt;/p&gt;
&lt;p data-end=&quot;5326&quot; data-start=&quot;5292&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 같은 정답이라도 다음 두 예측은 다르게 평가됩니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;예측 A: 정답 클래스 0.51
예측 B: 정답 클래스 0.99&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;5444&quot; data-start=&quot;5377&quot; data-ke-size=&quot;size16&quot;&gt;둘 다 argmax 기준으로는 정답일 수 있습니다.&lt;br /&gt;하지만 Cross Entropy는 B를 더 좋은 예측으로 봅니다.&lt;/p&gt;
&lt;p data-end=&quot;5456&quot; data-start=&quot;5446&quot; data-ke-size=&quot;size16&quot;&gt;이유는 다음입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;armasm&quot;&gt;&lt;code&gt;B가 정답에 더 높은 확신을 주었기 때문&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;5497&quot; data-start=&quot;5494&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;5532&quot; data-start=&quot;5499&quot; data-section-id=&quot;nx3tvt&quot;&gt;12. MSE 대신 Cross Entropy를 쓰는 이유&lt;/h1&gt;
&lt;p data-end=&quot;5575&quot; data-start=&quot;5534&quot; data-ke-size=&quot;size16&quot;&gt;분류 문제에서는 보통 MSE보다 Cross Entropy가 더 적합합니다.&lt;/p&gt;
&lt;h2 data-end=&quot;5617&quot; data-start=&quot;5577&quot; data-section-id=&quot;u4todu&quot; data-ke-size=&quot;size26&quot;&gt;12.1 이유 1. Cross Entropy는 분류에 특화되어 있다&lt;/h2&gt;
&lt;p data-end=&quot;5650&quot; data-start=&quot;5619&quot; data-ke-size=&quot;size16&quot;&gt;분류 문제의 목표는 정답 클래스 확률을 높이는 것입니다.&lt;/p&gt;
&lt;p data-end=&quot;5686&quot; data-start=&quot;5652&quot; data-ke-size=&quot;size16&quot;&gt;Cross Entropy는 바로 이 목표를 직접 최적화합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;jboss-cli&quot;&gt;&lt;code&gt;정답 클래스 확률 p_true를 높이면 loss가 감소&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;5763&quot; data-start=&quot;5732&quot; data-ke-size=&quot;size16&quot;&gt;반면 MSE는 확률 분포의 숫자 차이를 제곱해서 봅니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;MSE = (예측값 - 정답값)&amp;sup2;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;5851&quot; data-start=&quot;5797&quot; data-ke-size=&quot;size16&quot;&gt;분류 문제에서는 정답 클래스 확률을 직접 밀어올리는 Cross Entropy가 더 자연스럽습니다.&lt;/p&gt;
&lt;hr data-end=&quot;5856&quot; data-start=&quot;5853&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;5904&quot; data-start=&quot;5858&quot; data-section-id=&quot;1t163cz&quot; data-ke-size=&quot;size26&quot;&gt;12.2 이유 2. Cross Entropy는 틀린 예측에 강한 패널티를 준다&lt;/h2&gt;
&lt;p data-end=&quot;5949&quot; data-start=&quot;5906&quot; data-ke-size=&quot;size16&quot;&gt;정답 확률이 매우 낮으면 Cross Entropy는 loss를 크게 만듭니다.&lt;/p&gt;
&lt;p data-end=&quot;5953&quot; data-start=&quot;5951&quot; data-ke-size=&quot;size16&quot;&gt;예:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;정답 확률 = 0.01
Cross Entropy = -log(0.01) &amp;asymp; 4.61&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;6053&quot; data-start=&quot;6015&quot; data-ke-size=&quot;size16&quot;&gt;즉, 모델이 정답을 거의 불가능하다고 예측하면 강하게 벌점을 줍니다.&lt;/p&gt;
&lt;p data-end=&quot;6084&quot; data-start=&quot;6055&quot; data-ke-size=&quot;size16&quot;&gt;반면 MSE는 상대적으로 패널티가 약할 수 있습니다.&lt;/p&gt;
&lt;hr data-end=&quot;6089&quot; data-start=&quot;6086&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;6133&quot; data-start=&quot;6091&quot; data-section-id=&quot;1xqcfef&quot; data-ke-size=&quot;size26&quot;&gt;12.3 이유 3. Softmax와 결합 시 gradient가 깔끔하다&lt;/h2&gt;
&lt;p data-end=&quot;6181&quot; data-start=&quot;6135&quot; data-ke-size=&quot;size16&quot;&gt;Softmax + Cross Entropy는 gradient가 다음처럼 단순합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;fix&quot;&gt;&lt;code&gt;&amp;part;L / &amp;part;zᵢ = pᵢ - yᵢ&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;6242&quot; data-start=&quot;6215&quot; data-ke-size=&quot;size16&quot;&gt;이 식은 역전파를 안정적이고 효율적으로 만듭니다.&lt;/p&gt;
&lt;p data-end=&quot;6273&quot; data-start=&quot;6244&quot; data-ke-size=&quot;size16&quot;&gt;즉, 모델이 다음 방향으로 바로 학습할 수 있습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;정답 클래스 확률 증가
오답 클래스 확률 감소&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;6317&quot; data-start=&quot;6314&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;6356&quot; data-start=&quot;6319&quot; data-section-id=&quot;12mcj1u&quot; data-ke-size=&quot;size26&quot;&gt;12.4 이유 4. MSE는 gradient가 작아질 수 있다&lt;/h2&gt;
&lt;p data-end=&quot;6420&quot; data-start=&quot;6358&quot; data-ke-size=&quot;size16&quot;&gt;MSE를 sigmoid 또는 softmax와 함께 사용하면 gradient가 작아져 학습이 느려질 수 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;6466&quot; data-start=&quot;6422&quot; data-ke-size=&quot;size16&quot;&gt;특히 모델이 매우 틀렸는데도 gradient가 충분히 강하지 않을 수 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;6474&quot; data-start=&quot;6468&quot; data-ke-size=&quot;size16&quot;&gt;결과적으로:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;nginx&quot;&gt;&lt;code&gt;weight 업데이트 약함
학습 속도 느림
수렴 어려움&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;6533&quot; data-start=&quot;6520&quot; data-ke-size=&quot;size16&quot;&gt;이 발생할 수 있습니다.&lt;/p&gt;
&lt;hr data-end=&quot;6538&quot; data-start=&quot;6535&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;6583&quot; data-start=&quot;6540&quot; data-section-id=&quot;1pvgk5e&quot; data-ke-size=&quot;size26&quot;&gt;12.5 이유 5. Cross Entropy는 확률 분포 자체를 학습한다&lt;/h2&gt;
&lt;p data-end=&quot;6641&quot; data-start=&quot;6585&quot; data-ke-size=&quot;size16&quot;&gt;Cross Entropy는 단순한 숫자 차이가 아니라, 예측 분포와 정답 분포의 차이를 최소화합니다.&lt;/p&gt;
&lt;p data-end=&quot;6656&quot; data-start=&quot;6643&quot; data-ke-size=&quot;size16&quot;&gt;즉, 다음을 학습합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;모델이 얼마나 올바른 확률 체계를 배우고 있는가&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;6743&quot; data-start=&quot;6698&quot; data-ke-size=&quot;size16&quot;&gt;그래서 classification 문제에서 더 좋은 성능을 내는 경우가 많습니다.&lt;/p&gt;
&lt;hr data-end=&quot;6748&quot; data-start=&quot;6745&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;6781&quot; data-start=&quot;6750&quot; data-section-id=&quot;16ganso&quot;&gt;13. Binary Cross Entropy, BCE&lt;/h1&gt;
&lt;p data-end=&quot;6838&quot; data-start=&quot;6783&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Binary Cross Entropy&lt;/b&gt;는 이진 분류에 사용하는 Cross Entropy입니다.&lt;/p&gt;
&lt;p data-end=&quot;6842&quot; data-start=&quot;6840&quot; data-ke-size=&quot;size16&quot;&gt;예:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;스팸 / 정상
암 / 정상
사기 / 정상
relevant / irrelevant&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;6915&quot; data-start=&quot;6902&quot; data-ke-size=&quot;size16&quot;&gt;수식은 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;gcode&quot;&gt;&lt;code&gt;L = -[y log(p) + (1-y) log(1-p)]&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;6978&quot; data-start=&quot;6963&quot; data-ke-size=&quot;size16&quot;&gt;각 항의 의미는 다음입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;기호의미
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;7089&quot; data-start=&quot;6980&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;7089&quot; data-start=&quot;7002&quot;&gt;
&lt;tr data-end=&quot;7025&quot; data-start=&quot;7002&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;7008&quot; data-start=&quot;7002&quot;&gt;y&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;7025&quot; data-start=&quot;7008&quot;&gt;실제 정답, 0 또는 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;7056&quot; data-start=&quot;7026&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;7032&quot; data-start=&quot;7026&quot;&gt;p&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;7056&quot; data-start=&quot;7032&quot;&gt;positive class 예측 확률&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;7089&quot; data-start=&quot;7057&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;7065&quot; data-start=&quot;7057&quot;&gt;1-p&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;7089&quot; data-start=&quot;7065&quot;&gt;negative class 예측 확률&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-end=&quot;7107&quot; data-start=&quot;7091&quot; data-section-id=&quot;1e7fi7x&quot; data-ke-size=&quot;size26&quot;&gt;13.1 y = 1일 때&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;L = -log(p)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;7163&quot; data-start=&quot;7134&quot; data-ke-size=&quot;size16&quot;&gt;positive가 정답이므로 p가 높아야 합니다.&lt;/p&gt;
&lt;h2 data-end=&quot;7181&quot; data-start=&quot;7165&quot; data-section-id=&quot;41vjgf&quot; data-ke-size=&quot;size26&quot;&gt;13.2 y = 0일 때&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;L = -log(1-p)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;7239&quot; data-start=&quot;7210&quot; data-ke-size=&quot;size16&quot;&gt;negative가 정답이므로 p가 낮아야 합니다.&lt;/p&gt;
&lt;p data-end=&quot;7267&quot; data-start=&quot;7241&quot; data-ke-size=&quot;size16&quot;&gt;BCE는 보통 Sigmoid와 함께 사용됩니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;armasm&quot;&gt;&lt;code&gt;logit
&amp;rarr; sigmoid
&amp;rarr; probability
&amp;rarr; BCE Loss&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;7326&quot; data-start=&quot;7323&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;7359&quot; data-start=&quot;7328&quot; data-section-id=&quot;rnkbxy&quot;&gt;14. Categorical Cross Entropy&lt;/h1&gt;
&lt;p data-end=&quot;7410&quot; data-start=&quot;7361&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Categorical Cross Entropy&lt;/b&gt;는 다중 클래스 분류에서 사용됩니다.&lt;/p&gt;
&lt;p data-end=&quot;7414&quot; data-start=&quot;7412&quot; data-ke-size=&quot;size16&quot;&gt;예:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;고양이
강아지
자동차
비행기&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;7471&quot; data-start=&quot;7445&quot; data-ke-size=&quot;size16&quot;&gt;이 경우 보통 Softmax와 함께 사용합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;logits
&amp;rarr; softmax
&amp;rarr; class probability distribution
&amp;rarr; categorical cross entropy&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;7591&quot; data-start=&quot;7564&quot; data-ke-size=&quot;size16&quot;&gt;정답은 보통 one-hot encoding입니다.&lt;/p&gt;
&lt;p data-end=&quot;7595&quot; data-start=&quot;7593&quot; data-ke-size=&quot;size16&quot;&gt;예:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;정답 = 강아지
classes = [고양이, 강아지, 자동차]
one-hot = [0, 1, 0]&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;7668&quot; data-start=&quot;7665&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;7708&quot; data-start=&quot;7670&quot; data-section-id=&quot;u0xwxd&quot;&gt;15. Sparse Categorical Cross Entropy&lt;/h1&gt;
&lt;p data-end=&quot;7762&quot; data-start=&quot;7710&quot; data-ke-size=&quot;size16&quot;&gt;Categorical Cross Entropy와 같은 목적이지만, 정답 표현 방식이 다릅니다.&lt;/p&gt;
&lt;h2 data-end=&quot;7797&quot; data-start=&quot;7764&quot; data-section-id=&quot;1xngqud&quot; data-ke-size=&quot;size26&quot;&gt;15.1 Categorical Cross Entropy&lt;/h2&gt;
&lt;p data-end=&quot;7819&quot; data-start=&quot;7799&quot; data-ke-size=&quot;size16&quot;&gt;정답을 one-hot으로 표현합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;json&quot;&gt;&lt;code&gt;[0, 1, 0]&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-end=&quot;7884&quot; data-start=&quot;7844&quot; data-section-id=&quot;k9d3s0&quot; data-ke-size=&quot;size26&quot;&gt;15.2 Sparse Categorical Cross Entropy&lt;/h2&gt;
&lt;p data-end=&quot;7909&quot; data-start=&quot;7886&quot; data-ke-size=&quot;size16&quot;&gt;정답을 class index로 표현합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;1&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;7950&quot; data-start=&quot;7926&quot; data-ke-size=&quot;size16&quot;&gt;둘은 본질적으로 같은 loss를 계산합니다.&lt;/p&gt;
&lt;p data-end=&quot;7971&quot; data-start=&quot;7952&quot; data-ke-size=&quot;size16&quot;&gt;차이는 정답 label 형식입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;방식정답 표현
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;8095&quot; data-start=&quot;7973&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;8095&quot; data-start=&quot;7998&quot;&gt;
&lt;tr data-end=&quot;8044&quot; data-start=&quot;7998&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;8026&quot; data-start=&quot;7998&quot;&gt;Categorical Cross Entropy&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;8044&quot; data-start=&quot;8026&quot;&gt;one-hot vector&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;8095&quot; data-start=&quot;8045&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;8080&quot; data-start=&quot;8045&quot;&gt;Sparse Categorical Cross Entropy&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;8095&quot; data-start=&quot;8080&quot;&gt;class index&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;8100&quot; data-start=&quot;8097&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;8130&quot; data-start=&quot;8102&quot; data-section-id=&quot;w6bhrv&quot;&gt;16. Weighted Cross Entropy&lt;/h1&gt;
&lt;p data-end=&quot;8150&quot; data-start=&quot;8132&quot; data-ke-size=&quot;size16&quot;&gt;데이터가 불균형할 때 사용합니다.&lt;/p&gt;
&lt;p data-end=&quot;8182&quot; data-start=&quot;8152&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 암 진단 데이터가 다음과 같다고 하겠습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;정상: 99%
암: 1%&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;8262&quot; data-start=&quot;8211&quot; data-ke-size=&quot;size16&quot;&gt;이 경우 모델이 모든 샘플을 정상이라고 예측해도 accuracy는 99%가 될 수 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;8286&quot; data-start=&quot;8264&quot; data-ke-size=&quot;size16&quot;&gt;하지만 암을 놓치면 매우 큰 문제입니다.&lt;/p&gt;
&lt;p data-end=&quot;8336&quot; data-start=&quot;8288&quot; data-ke-size=&quot;size16&quot;&gt;Weighted Cross Entropy는 소수 클래스에 더 큰 weight를 줍니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;암 class weight &amp;uarr;
정상 class weight &amp;darr;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;8402&quot; data-start=&quot;8386&quot; data-ke-size=&quot;size16&quot;&gt;수식 개념은 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;L = -&amp;Sigma;ᵢ wᵢ yᵢ log(pᵢ)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;8461&quot; data-start=&quot;8439&quot; data-ke-size=&quot;size16&quot;&gt;여기서 wᵢ는 클래스별 가중치입니다.&lt;/p&gt;
&lt;p data-end=&quot;8501&quot; data-start=&quot;8463&quot; data-ke-size=&quot;size16&quot;&gt;즉, 중요한 클래스나 희귀 클래스가 틀렸을 때 더 큰 벌점을 줍니다.&lt;/p&gt;
&lt;hr data-end=&quot;8506&quot; data-start=&quot;8503&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;8531&quot; data-start=&quot;8508&quot; data-section-id=&quot;1lb6y2e&quot;&gt;17. Cross Entropy의 장점&lt;/h1&gt;
&lt;div&gt;
&lt;div&gt;장점설명
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;8795&quot; data-start=&quot;8533&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;8795&quot; data-start=&quot;8555&quot;&gt;
&lt;tr data-end=&quot;8588&quot; data-start=&quot;8555&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;8567&quot; data-start=&quot;8555&quot;&gt;분류 문제에 적합&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;8588&quot; data-start=&quot;8567&quot;&gt;정답 클래스 확률을 직접 최적화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;8617&quot; data-start=&quot;8589&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;8600&quot; data-start=&quot;8589&quot;&gt;확률 기반 학습&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;8617&quot; data-start=&quot;8600&quot;&gt;모델이 확률 분포를 학습&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;8654&quot; data-start=&quot;8618&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;8627&quot; data-start=&quot;8618&quot;&gt;강한 패널티&lt;/td&gt;
&lt;td data-end=&quot;8654&quot; data-start=&quot;8627&quot; data-col-size=&quot;sm&quot;&gt;정답 확률이 낮을 때 loss가 크게 증가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;8699&quot; data-start=&quot;8655&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;8672&quot; data-start=&quot;8655&quot;&gt;Softmax와 궁합 좋음&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;8699&quot; data-start=&quot;8672&quot;&gt;gradient가 p - y로 단순해짐&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;8723&quot; data-start=&quot;8700&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;8711&quot; data-start=&quot;8700&quot;&gt;학습 효율 좋음&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;8723&quot; data-start=&quot;8711&quot;&gt;역전파가 안정적&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;8749&quot; data-start=&quot;8724&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;8734&quot; data-start=&quot;8724&quot;&gt;정보이론 기반&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;8749&quot; data-start=&quot;8734&quot;&gt;이론적으로 해석 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;8795&quot; data-start=&quot;8750&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;8777&quot; data-start=&quot;8750&quot;&gt;CNN/Transformer/LLM에서 표준&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;8795&quot; data-start=&quot;8777&quot;&gt;실무적으로 매우 널리 사용&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;8800&quot; data-start=&quot;8797&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;8825&quot; data-start=&quot;8802&quot; data-section-id=&quot;1z05h10&quot;&gt;18. Cross Entropy의 단점&lt;/h1&gt;
&lt;div&gt;
&lt;div&gt;단점설명
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;9073&quot; data-start=&quot;8827&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;9073&quot; data-start=&quot;8849&quot;&gt;
&lt;tr data-end=&quot;8891&quot; data-start=&quot;8849&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;8867&quot; data-start=&quot;8849&quot;&gt;noisy label에 취약&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;8891&quot; data-start=&quot;8867&quot;&gt;잘못된 정답 label도 강하게 학습&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;8932&quot; data-start=&quot;8892&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;8906&quot; data-start=&quot;8892&quot;&gt;outlier에 민감&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;8932&quot; data-start=&quot;8906&quot;&gt;확신 있게 틀린 샘플에 큰 loss 발생&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;8976&quot; data-start=&quot;8933&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;8954&quot; data-start=&quot;8933&quot;&gt;class imbalance 문제&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;8976&quot; data-start=&quot;8954&quot;&gt;다수 class에 편향될 수 있음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;9027&quot; data-start=&quot;8977&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;8997&quot; data-start=&quot;8977&quot;&gt;overconfidence 가능&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;9027&quot; data-start=&quot;8997&quot;&gt;모델이 지나치게 확신하는 확률을 출력할 수 있음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;9073&quot; data-start=&quot;9028&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;9045&quot; data-start=&quot;9028&quot;&gt;calibration 문제&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;9073&quot; data-start=&quot;9045&quot;&gt;예측 확률이 실제 확률과 맞지 않을 수 있음&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;9078&quot; data-start=&quot;9075&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;9104&quot; data-start=&quot;9080&quot; data-section-id=&quot;1srmumw&quot;&gt;19. Cross Entropy와 LLM&lt;/h1&gt;
&lt;p data-end=&quot;9138&quot; data-start=&quot;9106&quot; data-ke-size=&quot;size16&quot;&gt;LLM도 본질적으로 Cross Entropy를 사용합니다.&lt;/p&gt;
&lt;p data-end=&quot;9161&quot; data-start=&quot;9140&quot; data-ke-size=&quot;size16&quot;&gt;LLM은 다음 token을 예측합니다.&lt;/p&gt;
&lt;p data-end=&quot;9165&quot; data-start=&quot;9163&quot; data-ke-size=&quot;size16&quot;&gt;예:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;ebnf&quot;&gt;&lt;code&gt;Patient has chest&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;9256&quot; data-start=&quot;9198&quot; data-ke-size=&quot;size16&quot;&gt;다음 token 정답이 pain이라면, 모델은 vocabulary 전체에 대해 확률 분포를 만듭니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;pain: 0.35
cough: 0.10
fever: 0.05
...&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;9364&quot; data-start=&quot;9310&quot; data-ke-size=&quot;size16&quot;&gt;Cross Entropy는 정답 token인 pain의 확률을 기준으로 loss를 계산합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;L = -log P(pain)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;9423&quot; data-start=&quot;9396&quot; data-ke-size=&quot;size16&quot;&gt;즉, LLM 학습은 기본적으로 다음을 반복합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;erlang&quot;&gt;&lt;code&gt;정답 다음 token의 확률을 높인다.
오답 token의 확률을 낮춘다.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;9482&quot; data-start=&quot;9479&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;9508&quot; data-start=&quot;9484&quot; data-section-id=&quot;5y7ybg&quot;&gt;20. Cross Entropy와 CNN&lt;/h1&gt;
&lt;p data-end=&quot;9544&quot; data-start=&quot;9510&quot; data-ke-size=&quot;size16&quot;&gt;CNN 이미지 분류에서도 마지막 단계는 보통 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;maxima&quot;&gt;&lt;code&gt;image
&amp;rarr; convolution layers
&amp;rarr; feature vector
&amp;rarr; linear layer
&amp;rarr; logits
&amp;rarr; softmax
&amp;rarr; cross entropy loss&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;9683&quot; data-start=&quot;9658&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 클래스가 다음과 같다고 하겠습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;고양이
강아지
자동차&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;9737&quot; data-start=&quot;9710&quot; data-ke-size=&quot;size16&quot;&gt;CNN이 이미지를 보고 logits를 출력합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;z = [2.1, 1.3, 0.2]&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;9790&quot; data-start=&quot;9772&quot; data-ke-size=&quot;size16&quot;&gt;Softmax가 확률로 바꿉니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;p = [0.62, 0.28, 0.10]&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;9849&quot; data-start=&quot;9828&quot; data-ke-size=&quot;size16&quot;&gt;정답이 고양이면 loss는 다음입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;L = -log(0.62)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;9935&quot; data-start=&quot;9879&quot; data-ke-size=&quot;size16&quot;&gt;이 loss를 기준으로 CNN의 filter weight와 linear weight가 업데이트됩니다.&lt;/p&gt;
&lt;hr data-end=&quot;9940&quot; data-start=&quot;9937&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;9967&quot; data-start=&quot;9942&quot; data-section-id=&quot;uuyha6&quot;&gt;21. Cross Entropy 계산 예시&lt;/h1&gt;
&lt;p data-end=&quot;9994&quot; data-start=&quot;9969&quot; data-ke-size=&quot;size16&quot;&gt;정답 클래스가 첫 번째 클래스라고 하겠습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;y = [1, 0, 0]&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;10039&quot; data-start=&quot;10023&quot; data-ke-size=&quot;size16&quot;&gt;모델 예측이 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;p = [0.7, 0.2, 0.1]&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;10088&quot; data-start=&quot;10074&quot; data-ke-size=&quot;size16&quot;&gt;Cross Entropy:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;L = -log(0.7)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;10127&quot; data-start=&quot;10117&quot; data-ke-size=&quot;size16&quot;&gt;자연로그 기준으로:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;L &amp;asymp; 0.357&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;10165&quot; data-start=&quot;10152&quot; data-ke-size=&quot;size16&quot;&gt;다른 예측을 보겠습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;p = [0.1, 0.8, 0.1]&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;10218&quot; data-start=&quot;10200&quot; data-ke-size=&quot;size16&quot;&gt;정답 클래스 확률은 0.1입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;L = -log(0.1)
L &amp;asymp; 2.303&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;10283&quot; data-start=&quot;10257&quot; data-ke-size=&quot;size16&quot;&gt;즉, 정답 확률이 낮을수록 loss가 커집니다.&lt;/p&gt;
&lt;hr data-end=&quot;10288&quot; data-start=&quot;10285&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;10313&quot; data-start=&quot;10290&quot; data-section-id=&quot;7zna0l&quot;&gt;22. Cross Entropy의 본질&lt;/h1&gt;
&lt;p data-end=&quot;10340&quot; data-start=&quot;10315&quot; data-ke-size=&quot;size16&quot;&gt;Cross Entropy의 본질은 다음입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;정답 클래스 확률을 최대화하도록 모델을 학습시키는 함수&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;10401&quot; data-start=&quot;10386&quot; data-ke-size=&quot;size16&quot;&gt;더 깊게 말하면 다음입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;예측 확률 분포를 실제 정답 분포와 최대한 같게 만드는 최적화 목표&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;10487&quot; data-start=&quot;10454&quot; data-ke-size=&quot;size16&quot;&gt;즉, Cross Entropy는 모델에게 다음을 요구합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;erlang&quot;&gt;&lt;code&gt;정답에는 높은 확률을 줘라.
오답에는 낮은 확률을 줘라.
확신 있게 틀리지 마라.
확률 분포를 올바르게 만들어라.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;10569&quot; data-start=&quot;10566&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;10584&quot; data-start=&quot;10571&quot; data-section-id=&quot;g1t0a0&quot;&gt;23. 핵심 암기 표&lt;/h1&gt;
&lt;div&gt;
&lt;div&gt;개념설명
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;11037&quot; data-start=&quot;10586&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;11037&quot; data-start=&quot;10608&quot;&gt;
&lt;tr data-end=&quot;10663&quot; data-start=&quot;10608&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;10629&quot; data-start=&quot;10608&quot;&gt;Cross Entropy Loss&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;10663&quot; data-start=&quot;10629&quot;&gt;예측 확률 분포와 정답 분포의 차이를 측정하는 loss&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;10686&quot; data-start=&quot;10664&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;10674&quot; data-start=&quot;10664&quot;&gt;Entropy&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;10686&quot; data-start=&quot;10674&quot;&gt;불확실성의 크기&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;10729&quot; data-start=&quot;10687&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;10703&quot; data-start=&quot;10687&quot;&gt;Cross Entropy&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;10729&quot; data-start=&quot;10703&quot;&gt;정답 분포 기준에서 예측 분포의 비효율성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;10761&quot; data-start=&quot;10730&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;10738&quot; data-start=&quot;10730&quot;&gt;핵심 수식&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;10761&quot; data-start=&quot;10738&quot;&gt;L = -&amp;Sigma; yᵢ log(pᵢ)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;10797&quot; data-start=&quot;10762&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;10775&quot; data-start=&quot;10762&quot;&gt;one-hot일 때&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;10797&quot; data-start=&quot;10775&quot;&gt;L = -log(p_true)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;10829&quot; data-start=&quot;10798&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;10808&quot; data-start=&quot;10798&quot;&gt;Softmax&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;10829&quot; data-start=&quot;10808&quot;&gt;logits를 확률 분포로 변환&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;10860&quot; data-start=&quot;10830&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;10836&quot; data-start=&quot;10830&quot;&gt;BCE&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;10860&quot; data-start=&quot;10836&quot;&gt;이진 분류용 Cross Entropy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;10906&quot; data-start=&quot;10861&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;10878&quot; data-start=&quot;10861&quot;&gt;Categorical CE&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;10906&quot; data-start=&quot;10878&quot;&gt;다중 클래스 분류용 Cross Entropy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;10935&quot; data-start=&quot;10907&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;10921&quot; data-start=&quot;10907&quot;&gt;Weighted CE&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;10935&quot; data-start=&quot;10921&quot;&gt;클래스 불균형 보정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;10972&quot; data-start=&quot;10936&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;10947&quot; data-start=&quot;10936&quot;&gt;Gradient&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;10972&quot; data-start=&quot;10947&quot;&gt;Softmax와 결합 시 p - y&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;10995&quot; data-start=&quot;10973&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;10978&quot; data-start=&quot;10973&quot;&gt;목적&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;10995&quot; data-start=&quot;10978&quot;&gt;정답 클래스 확률 최대화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;11037&quot; data-start=&quot;10996&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;11005&quot; data-start=&quot;10996&quot;&gt;주요 사용처&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;11037&quot; data-start=&quot;11005&quot;&gt;CNN, Transformer, LLM, 분류 모델&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;11042&quot; data-start=&quot;11039&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;11055&quot; data-start=&quot;11044&quot; data-section-id=&quot;rr1jy&quot;&gt;24. 최종 요약&lt;/h1&gt;
&lt;p data-end=&quot;11102&quot; data-start=&quot;11057&quot; data-ke-size=&quot;size16&quot;&gt;Cross Entropy Loss는 분류 문제에서 가장 핵심적인 손실 함수입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;erlang&quot;&gt;&lt;code&gt;모델 예측 확률 분포와 실제 정답 분포가 얼마나 다른지 측정한다.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;11187&quot; data-start=&quot;11154&quot; data-ke-size=&quot;size16&quot;&gt;실제 one-hot 정답에서는 거의 다음과 같이 작동합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;정답 클래스 확률이 높으면 loss 작음
정답 클래스 확률이 낮으면 loss 큼
정답 클래스 확률이 거의 0이면 loss 매우 큼&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;11307&quot; data-start=&quot;11275&quot; data-ke-size=&quot;size16&quot;&gt;Softmax와 결합하면 다음 gradient가 나옵니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;fix&quot;&gt;&lt;code&gt;&amp;part;L / &amp;part;zᵢ = pᵢ - yᵢ&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;11368&quot; data-start=&quot;11341&quot; data-ke-size=&quot;size16&quot;&gt;이 식은 모델에게 명확한 학습 방향을 제공합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;erlang&quot;&gt;&lt;code&gt;정답 클래스 확률은 올리고,
오답 클래스 확률은 내린다.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;11493&quot; data-start=&quot;11415&quot; data-ke-size=&quot;size16&quot;&gt;따라서 Cross Entropy는 단순한 오차 계산식이 아니라, &lt;b&gt;모델이 올바른 확률 분포를 학습하도록 만드는 핵심 최적화 목표&lt;/b&gt;입니다.&lt;/p&gt;</description>
      <category>AL,ML 학부연구생/논문 분석</category>
      <author>김형준</author>
      <guid isPermaLink="true">https://devreco.tistory.com/35</guid>
      <comments>https://devreco.tistory.com/35#entry35comment</comments>
      <pubDate>Wed, 20 May 2026 16:12:07 +0900</pubDate>
    </item>
    <item>
      <title>파인튜닝 LoRA의 확장형 QLoRA 는 무엇인가? QLoRA 이해하기</title>
      <link>https://devreco.tistory.com/34</link>
      <description>&lt;div data-turn-start-message=&quot;true&quot; data-message-model-slug=&quot;gpt-5-5-thinking&quot; data-message-id=&quot;617b57c9-33a3-407c-8a0a-880e2157c947&quot; data-message-author-role=&quot;assistant&quot;&gt;
&lt;h1 data-end=&quot;166&quot; data-start=&quot;156&quot; data-section-id=&quot;4urf4f&quot;&gt;QLoRA 개요&lt;/h1&gt;
&lt;h2 data-end=&quot;176&quot; data-start=&quot;168&quot; data-section-id=&quot;zhn8uv&quot; data-ke-size=&quot;size26&quot;&gt;1. 정의&lt;/h2&gt;
&lt;p data-end=&quot;325&quot; data-start=&quot;178&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;QLoRA(Quantized Low-Rank Adaptation)&lt;/b&gt;는 사전학습된 대형 언어 모델을 &lt;b&gt;저비트, 보통 4-bit로 양자화한 상태로 고정&lt;/b&gt;하고, 그 위에 &lt;b&gt;LoRA adapter만 추가하여 학습하는 파라미터 효율적 미세조정 방식&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-end=&quot;348&quot; data-start=&quot;327&quot; data-ke-size=&quot;size16&quot;&gt;한 문장으로 정의하면 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;QLoRA = 4-bit로 압축한 원본 LLM + 학습 가능한 LoRA adapter&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;434&quot; data-start=&quot;411&quot; data-ke-size=&quot;size16&quot;&gt;즉, QLoRA는 LoRA의 확장형입니다.&lt;/p&gt;
&lt;p data-end=&quot;544&quot; data-start=&quot;436&quot; data-ke-size=&quot;size16&quot;&gt;LoRA는 원본 모델을 고정하고 작은 low-rank adapter만 학습합니다.&lt;br /&gt;QLoRA는 여기에 &lt;b&gt;원본 모델을 4-bit로 양자화하여 메모리 사용량을 더 줄이는 방식&lt;/b&gt;을 추가합니다.&lt;/p&gt;
&lt;p data-end=&quot;560&quot; data-start=&quot;546&quot; data-ke-size=&quot;size16&quot;&gt;정리하면 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;구분설명
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;814&quot; data-start=&quot;562&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;814&quot; data-start=&quot;584&quot;&gt;
&lt;tr data-end=&quot;621&quot; data-start=&quot;584&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;591&quot; data-start=&quot;584&quot;&gt;LoRA&lt;/td&gt;
&lt;td data-end=&quot;621&quot; data-start=&quot;591&quot; data-col-size=&quot;md&quot;&gt;원본 모델을 고정하고 작은 adapter만 학습&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;666&quot; data-start=&quot;622&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;630&quot; data-start=&quot;622&quot;&gt;QLoRA&lt;/td&gt;
&lt;td data-end=&quot;666&quot; data-start=&quot;630&quot; data-col-size=&quot;md&quot;&gt;원본 모델을 4-bit로 양자화한 뒤 adapter만 학습&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;706&quot; data-start=&quot;667&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;672&quot; data-start=&quot;667&quot;&gt;목적&lt;/td&gt;
&lt;td data-end=&quot;706&quot; data-start=&quot;672&quot; data-col-size=&quot;md&quot;&gt;적은 GPU 메모리로 큰 LLM을 fine-tuning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;756&quot; data-start=&quot;707&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;712&quot; data-start=&quot;707&quot;&gt;핵심&lt;/td&gt;
&lt;td data-end=&quot;756&quot; data-start=&quot;712&quot; data-col-size=&quot;md&quot;&gt;base model은 압축하고, 학습은 LoRA adapter에서만 수행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;814&quot; data-start=&quot;757&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;768&quot; data-start=&quot;757&quot;&gt;대표 사용 상황&lt;/td&gt;
&lt;td data-end=&quot;814&quot; data-start=&quot;768&quot; data-col-size=&quot;md&quot;&gt;단일 GPU, 저메모리 GPU, Jetson 같은 edge device 환경&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;819&quot; data-start=&quot;816&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;839&quot; data-start=&quot;821&quot; data-section-id=&quot;tw7mub&quot;&gt;2. QLoRA가 필요한 이유&lt;/h1&gt;
&lt;h2 data-end=&quot;872&quot; data-start=&quot;841&quot; data-section-id=&quot;ffafrl&quot; data-ke-size=&quot;size26&quot;&gt;2.1 Full Fine-Tuning의 메모리 문제&lt;/h2&gt;
&lt;p data-end=&quot;927&quot; data-start=&quot;874&quot; data-ke-size=&quot;size16&quot;&gt;대형 언어 모델을 full fine-tuning하려면 모델 전체 파라미터를 업데이트해야 합니다.&lt;/p&gt;
&lt;p data-end=&quot;1004&quot; data-start=&quot;929&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 7B 모델을 학습한다고 하면 단순히 7B개의 weight만 필요한 것이 아닙니다. 학습 중에는 다음 항목이 모두 필요합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;lsl&quot;&gt;&lt;code&gt;1. 모델 weight
2. gradient
3. optimizer state
4. activation
5. temporary buffer&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1196&quot; data-start=&quot;1097&quot; data-ke-size=&quot;size16&quot;&gt;특히 Adam optimizer는 보통 각 파라미터마다 2개의 momentum state를 추가로 가집니다. 따라서 실제 학습 메모리는 모델 weight 크기보다 훨씬 커집니다.&lt;/p&gt;
&lt;p data-end=&quot;1241&quot; data-start=&quot;1198&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 FP16 기준으로 7B 모델의 weight만 대략 다음 정도입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;7B parameters &amp;times; 2 bytes = 약 14GB&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1374&quot; data-start=&quot;1289&quot; data-ke-size=&quot;size16&quot;&gt;하지만 학습에는 gradient, optimizer state, activation까지 필요하므로 실제로는 수십 GB 이상의 GPU 메모리가 필요합니다.&lt;/p&gt;
&lt;h2 data-end=&quot;1400&quot; data-start=&quot;1376&quot; data-section-id=&quot;rlr81q&quot; data-ke-size=&quot;size26&quot;&gt;2.2 LoRA만으로도 부족할 수 있음&lt;/h2&gt;
&lt;p data-end=&quot;1519&quot; data-start=&quot;1402&quot; data-ke-size=&quot;size16&quot;&gt;LoRA는 원본 모델을 freeze하고 adapter만 학습하므로 full fine-tuning보다 훨씬 가볍습니다. 그러나 원본 모델 자체를 FP16/BF16으로 메모리에 올려야 한다면 여전히 부담이 큽니다.&lt;/p&gt;
&lt;p data-end=&quot;1590&quot; data-start=&quot;1521&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 7B 모델을 FP16으로 올리면 weight만 약 14GB입니다. 13B 모델은 weight만 약 26GB입니다.&lt;/p&gt;
&lt;p data-end=&quot;1656&quot; data-start=&quot;1592&quot; data-ke-size=&quot;size16&quot;&gt;즉, LoRA는 학습 대상 파라미터를 줄이지만, &lt;b&gt;base model을 메모리에 올리는 비용은 여전히 큽니다.&lt;/b&gt;&lt;/p&gt;
&lt;h2 data-end=&quot;1677&quot; data-start=&quot;1658&quot; data-section-id=&quot;1piizr7&quot; data-ke-size=&quot;size26&quot;&gt;2.3 QLoRA의 해결 방식&lt;/h2&gt;
&lt;p data-end=&quot;1706&quot; data-start=&quot;1679&quot; data-ke-size=&quot;size16&quot;&gt;QLoRA는 이 문제를 다음 방식으로 해결합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;1. base model을 4-bit로 양자화한다.
2. 양자화된 base model은 freeze한다.
3. LoRA adapter만 FP16/BF16 등으로 학습한다.
4. gradient는 adapter에 대해서만 계산한다.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1915&quot; data-start=&quot;1850&quot; data-ke-size=&quot;size16&quot;&gt;따라서 base model의 메모리 사용량을 크게 줄이고, 실제 학습은 작은 adapter에서만 수행할 수 있습니다.&lt;/p&gt;
&lt;hr data-end=&quot;1920&quot; data-start=&quot;1917&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;1939&quot; data-start=&quot;1922&quot; data-section-id=&quot;65npvr&quot;&gt;3. QLoRA의 핵심 구조&lt;/h1&gt;
&lt;p data-end=&quot;1963&quot; data-start=&quot;1941&quot; data-ke-size=&quot;size16&quot;&gt;QLoRA는 다음 세 요소로 구성됩니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;1. Quantized Base Model
2. LoRA Adapter
3. Dequantization-based Forward Computation&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-end=&quot;2089&quot; data-start=&quot;2062&quot; data-section-id=&quot;1yuydz2&quot; data-ke-size=&quot;size26&quot;&gt;3.1 Quantized Base Model&lt;/h2&gt;
&lt;p data-end=&quot;2120&quot; data-start=&quot;2091&quot; data-ke-size=&quot;size16&quot;&gt;원본 LLM의 weight를 4-bit로 저장합니다.&lt;/p&gt;
&lt;p data-end=&quot;2164&quot; data-start=&quot;2122&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 원래 weight가 FP16이면 각 파라미터가 16-bit입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;FP16 = 16-bit = 2 bytes&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2232&quot; data-start=&quot;2203&quot; data-ke-size=&quot;size16&quot;&gt;4-bit 양자화하면 각 파라미터는 4-bit입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;4-bit = 0.5 bytes&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2303&quot; data-start=&quot;2265&quot; data-ke-size=&quot;size16&quot;&gt;단순 계산으로는 weight 저장량이 4분의 1 수준으로 줄어듭니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;16-bit &amp;rarr; 4-bit
메모리 약 75% 감소&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-end=&quot;2365&quot; data-start=&quot;2346&quot; data-section-id=&quot;63pyst&quot; data-ke-size=&quot;size26&quot;&gt;3.2 LoRA Adapter&lt;/h2&gt;
&lt;p data-end=&quot;2420&quot; data-start=&quot;2367&quot; data-ke-size=&quot;size16&quot;&gt;base model은 양자화되어 고정되고, 실제 학습은 LoRA adapter에서만 일어납니다.&lt;/p&gt;
&lt;p data-end=&quot;2443&quot; data-start=&quot;2422&quot; data-ke-size=&quot;size16&quot;&gt;기존 LoRA 수식은 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;sas&quot;&gt;&lt;code&gt;output = W x + B A x&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2506&quot; data-start=&quot;2479&quot; data-ke-size=&quot;size16&quot;&gt;QLoRA에서는 W가 양자화된 weight입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;sas&quot;&gt;&lt;code&gt;output = dequantize(W_4bit) x + B A x&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2563&quot; data-start=&quot;2559&quot; data-ke-size=&quot;size16&quot;&gt;여기서:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;기호의미
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;2726&quot; data-start=&quot;2565&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;2726&quot; data-start=&quot;2587&quot;&gt;
&lt;tr data-end=&quot;2623&quot; data-start=&quot;2587&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2596&quot; data-start=&quot;2587&quot;&gt;W_4bit&lt;/td&gt;
&lt;td data-end=&quot;2623&quot; data-start=&quot;2596&quot; data-col-size=&quot;sm&quot;&gt;4-bit로 저장된 원본 모델 weight&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2668&quot; data-start=&quot;2624&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2645&quot; data-start=&quot;2624&quot;&gt;dequantize(W_4bit)&lt;/td&gt;
&lt;td data-end=&quot;2668&quot; data-start=&quot;2645&quot; data-col-size=&quot;sm&quot;&gt;계산 시 임시로 복원된 weight&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2694&quot; data-start=&quot;2669&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2676&quot; data-start=&quot;2669&quot;&gt;A, B&lt;/td&gt;
&lt;td data-end=&quot;2694&quot; data-start=&quot;2676&quot; data-col-size=&quot;sm&quot;&gt;학습 가능한 LoRA 행렬&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2726&quot; data-start=&quot;2695&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2701&quot; data-start=&quot;2695&quot;&gt;BAx&lt;/td&gt;
&lt;td data-end=&quot;2726&quot; data-start=&quot;2701&quot; data-col-size=&quot;sm&quot;&gt;LoRA adapter가 만드는 보정값&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-end=&quot;2754&quot; data-start=&quot;2728&quot; data-section-id=&quot;11msykd&quot; data-ke-size=&quot;size26&quot;&gt;3.3 Forward Computation&lt;/h2&gt;
&lt;p data-end=&quot;2780&quot; data-start=&quot;2756&quot; data-ke-size=&quot;size16&quot;&gt;QLoRA에서 계산은 대략 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;1. 4-bit weight를 메모리에 저장한다.
2. forward 계산 시 필요한 부분을 dequantize한다.
3. dequantized weight로 base model 출력을 계산한다.
4. LoRA adapter 출력을 더한다.
5. loss를 계산한다.
6. backward에서 adapter만 업데이트한다.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;3023&quot; data-start=&quot;2976&quot; data-ke-size=&quot;size16&quot;&gt;중요한 점은 &lt;b&gt;4-bit base model 자체는 학습되지 않는다&lt;/b&gt;는 것입니다.&lt;/p&gt;
&lt;hr data-end=&quot;3028&quot; data-start=&quot;3025&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;3050&quot; data-start=&quot;3030&quot; data-section-id=&quot;1dc1xl5&quot;&gt;4. QLoRA와 LoRA의 차이&lt;/h1&gt;
&lt;h2 data-end=&quot;3064&quot; data-start=&quot;3052&quot; data-section-id=&quot;1u1bs2z&quot; data-ke-size=&quot;size26&quot;&gt;4.1 핵심 차이&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;항목LoRAQLoRA
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;3404&quot; data-start=&quot;3066&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;3404&quot; data-start=&quot;3102&quot;&gt;
&lt;tr data-end=&quot;3146&quot; data-start=&quot;3102&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3113&quot; data-start=&quot;3102&quot;&gt;원본 모델 상태&lt;/td&gt;
&lt;td data-end=&quot;3133&quot; data-start=&quot;3113&quot; data-col-size=&quot;sm&quot;&gt;FP16/BF16인 경우가 많음&lt;/td&gt;
&lt;td data-end=&quot;3146&quot; data-start=&quot;3133&quot; data-col-size=&quot;sm&quot;&gt;4-bit 양자화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3180&quot; data-start=&quot;3147&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3161&quot; data-start=&quot;3147&quot;&gt;원본 모델 학습 여부&lt;/td&gt;
&lt;td data-end=&quot;3170&quot; data-start=&quot;3161&quot; data-col-size=&quot;sm&quot;&gt;freeze&lt;/td&gt;
&lt;td data-end=&quot;3180&quot; data-start=&quot;3170&quot; data-col-size=&quot;sm&quot;&gt;freeze&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3220&quot; data-start=&quot;3181&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3189&quot; data-start=&quot;3181&quot;&gt;학습 대상&lt;/td&gt;
&lt;td data-end=&quot;3204&quot; data-start=&quot;3189&quot; data-col-size=&quot;sm&quot;&gt;LoRA adapter&lt;/td&gt;
&lt;td data-end=&quot;3220&quot; data-start=&quot;3204&quot; data-col-size=&quot;sm&quot;&gt;LoRA adapter&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3270&quot; data-start=&quot;3221&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3231&quot; data-start=&quot;3221&quot;&gt;메모리 사용량&lt;/td&gt;
&lt;td data-end=&quot;3255&quot; data-start=&quot;3231&quot; data-col-size=&quot;sm&quot;&gt;full fine-tuning보다 작음&lt;/td&gt;
&lt;td data-end=&quot;3270&quot; data-start=&quot;3255&quot; data-col-size=&quot;sm&quot;&gt;LoRA보다 더 작음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3309&quot; data-start=&quot;3271&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3280&quot; data-start=&quot;3271&quot;&gt;계산 복잡도&lt;/td&gt;
&lt;td data-end=&quot;3291&quot; data-start=&quot;3280&quot; data-col-size=&quot;sm&quot;&gt;상대적으로 단순&lt;/td&gt;
&lt;td data-end=&quot;3309&quot; data-start=&quot;3291&quot; data-col-size=&quot;sm&quot;&gt;양자화/역양자화 처리 필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3356&quot; data-start=&quot;3310&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3318&quot; data-start=&quot;3310&quot;&gt;적합 환경&lt;/td&gt;
&lt;td data-end=&quot;3340&quot; data-start=&quot;3318&quot; data-col-size=&quot;sm&quot;&gt;GPU 메모리가 어느 정도 있을 때&lt;/td&gt;
&lt;td data-end=&quot;3356&quot; data-start=&quot;3340&quot; data-col-size=&quot;sm&quot;&gt;메모리 제약이 큰 환경&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3404&quot; data-start=&quot;3357&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3365&quot; data-start=&quot;3357&quot;&gt;대표 목적&lt;/td&gt;
&lt;td data-end=&quot;3383&quot; data-start=&quot;3365&quot; data-col-size=&quot;sm&quot;&gt;효율적 fine-tuning&lt;/td&gt;
&lt;td data-end=&quot;3404&quot; data-start=&quot;3383&quot; data-col-size=&quot;sm&quot;&gt;초저메모리 fine-tuning&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-end=&quot;3419&quot; data-start=&quot;3406&quot; data-section-id=&quot;1gvyqe1&quot; data-ke-size=&quot;size26&quot;&gt;4.2 직관적 비교&lt;/h2&gt;
&lt;p data-end=&quot;3436&quot; data-start=&quot;3421&quot; data-ke-size=&quot;size16&quot;&gt;LoRA는 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;큰 모델은 그대로 메모리에 올림
큰 모델은 학습하지 않음
작은 adapter만 학습&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;3514&quot; data-start=&quot;3498&quot; data-ke-size=&quot;size16&quot;&gt;QLoRA는 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;큰 모델을 4-bit로 압축해서 메모리에 올림
큰 모델은 학습하지 않음
작은 adapter만 학습&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;3637&quot; data-start=&quot;3584&quot; data-ke-size=&quot;size16&quot;&gt;즉, QLoRA는 LoRA의 장점에 &lt;b&gt;base model 메모리 절약&lt;/b&gt;을 추가한 방식입니다.&lt;/p&gt;
&lt;hr data-end=&quot;3642&quot; data-start=&quot;3639&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;3658&quot; data-start=&quot;3644&quot; data-section-id=&quot;q6fvvl&quot;&gt;5. QLoRA의 수식&lt;/h1&gt;
&lt;h2 data-end=&quot;3677&quot; data-start=&quot;3660&quot; data-section-id=&quot;iuwr3y&quot; data-ke-size=&quot;size26&quot;&gt;5.1 일반 LoRA 수식&lt;/h2&gt;
&lt;p data-end=&quot;3699&quot; data-start=&quot;3679&quot; data-ke-size=&quot;size16&quot;&gt;기존 선형 레이어는 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;h = W x&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;3732&quot; data-start=&quot;3722&quot; data-ke-size=&quot;size16&quot;&gt;LoRA 적용 후:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;gml&quot;&gt;&lt;code&gt;h = W x + &amp;Delta;W x&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;3766&quot; data-start=&quot;3762&quot; data-ke-size=&quot;size16&quot;&gt;여기서:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;armasm&quot;&gt;&lt;code&gt;&amp;Delta;W = B A&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;3794&quot; data-start=&quot;3790&quot; data-ke-size=&quot;size16&quot;&gt;따라서:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;gml&quot;&gt;&lt;code&gt;h = W x + B A x&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-end=&quot;3840&quot; data-start=&quot;3825&quot; data-section-id=&quot;9hjanc&quot; data-ke-size=&quot;size26&quot;&gt;5.2 QLoRA 수식&lt;/h2&gt;
&lt;p data-end=&quot;3871&quot; data-start=&quot;3842&quot; data-ke-size=&quot;size16&quot;&gt;QLoRA에서는 W가 4-bit로 저장되어 있습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;W_q = Quantize(W)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;3922&quot; data-start=&quot;3904&quot; data-ke-size=&quot;size16&quot;&gt;계산 시에는 다음처럼 사용합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;gml&quot;&gt;&lt;code&gt;h = Dequantize(W_q) x + B A x&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;3971&quot; data-start=&quot;3967&quot; data-ke-size=&quot;size16&quot;&gt;여기서:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;기호의미
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;4158&quot; data-start=&quot;3973&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;4158&quot; data-start=&quot;3995&quot;&gt;
&lt;tr data-end=&quot;4027&quot; data-start=&quot;3995&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3999&quot; data-start=&quot;3995&quot;&gt;W&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4027&quot; data-start=&quot;3999&quot;&gt;원래 FP16/BF16/FP32 weight&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;4056&quot; data-start=&quot;4028&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4034&quot; data-start=&quot;4028&quot;&gt;W_q&lt;/td&gt;
&lt;td data-end=&quot;4056&quot; data-start=&quot;4034&quot; data-col-size=&quot;sm&quot;&gt;4-bit로 양자화된 weight&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;4099&quot; data-start=&quot;4057&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4075&quot; data-start=&quot;4057&quot;&gt;Dequantize(W_q)&lt;/td&gt;
&lt;td data-end=&quot;4099&quot; data-start=&quot;4075&quot; data-col-size=&quot;sm&quot;&gt;계산을 위해 임시 복원한 weight&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;4128&quot; data-start=&quot;4100&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4107&quot; data-start=&quot;4100&quot;&gt;A, B&lt;/td&gt;
&lt;td data-end=&quot;4128&quot; data-start=&quot;4107&quot; data-col-size=&quot;sm&quot;&gt;학습되는 LoRA adapter&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;4158&quot; data-start=&quot;4129&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4137&quot; data-start=&quot;4129&quot;&gt;B A x&lt;/td&gt;
&lt;td data-end=&quot;4158&quot; data-start=&quot;4137&quot; data-col-size=&quot;sm&quot;&gt;task-specific 보정값&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;4173&quot; data-start=&quot;4160&quot; data-ke-size=&quot;size16&quot;&gt;중요한 점은 다음입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;erlang&quot;&gt;&lt;code&gt;W_q는 업데이트하지 않는다.
A와 B만 업데이트한다.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;4222&quot; data-start=&quot;4219&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;4248&quot; data-start=&quot;4224&quot; data-section-id=&quot;10hmx9s&quot;&gt;6. Quantization이란 무엇인가&lt;/h1&gt;
&lt;p data-end=&quot;4293&quot; data-start=&quot;4250&quot; data-ke-size=&quot;size16&quot;&gt;QLoRA를 이해하려면 quantization, 즉 양자화를 이해해야 합니다.&lt;/p&gt;
&lt;h2 data-end=&quot;4317&quot; data-start=&quot;4295&quot; data-section-id=&quot;1l5szw0&quot; data-ke-size=&quot;size26&quot;&gt;6.1 Quantization 정의&lt;/h2&gt;
&lt;p data-end=&quot;4387&quot; data-start=&quot;4319&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Quantization&lt;/b&gt;은 모델의 weight를 고정밀 숫자 형식에서 저정밀 숫자 형식으로 변환하는 압축 기법입니다.&lt;/p&gt;
&lt;p data-end=&quot;4395&quot; data-start=&quot;4389&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;FP32 &amp;rarr; FP16
FP16 &amp;rarr; INT8
FP16 &amp;rarr; INT4&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;4488&quot; data-start=&quot;4446&quot; data-ke-size=&quot;size16&quot;&gt;LLM에서 QLoRA는 보통 4-bit quantization을 사용합니다.&lt;/p&gt;
&lt;h2 data-end=&quot;4505&quot; data-start=&quot;4490&quot; data-section-id=&quot;xyc9wq&quot; data-ke-size=&quot;size26&quot;&gt;6.2 왜 양자화하는가&lt;/h2&gt;
&lt;p data-end=&quot;4520&quot; data-start=&quot;4507&quot; data-ke-size=&quot;size16&quot;&gt;목적은 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;1. 메모리 사용량 감소
2. 큰 모델을 작은 GPU에 올리기
3. 학습 또는 추론 비용 감소
4. edge device 배포 가능성 증가&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-end=&quot;4630&quot; data-start=&quot;4613&quot; data-section-id=&quot;uavfx3&quot; data-ke-size=&quot;size26&quot;&gt;6.3 양자화의 기본 원리&lt;/h2&gt;
&lt;p data-end=&quot;4653&quot; data-start=&quot;4632&quot; data-ke-size=&quot;size16&quot;&gt;실수 weight가 있다고 하겠습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;json&quot;&gt;&lt;code&gt;[-1.2, -0.8, 0.0, 0.3, 0.9, 1.4]&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;4736&quot; data-start=&quot;4701&quot; data-ke-size=&quot;size16&quot;&gt;이 값을 4-bit로 표현하려면 가능한 값의 개수가 제한됩니다.&lt;/p&gt;
&lt;p data-end=&quot;4766&quot; data-start=&quot;4738&quot; data-ke-size=&quot;size16&quot;&gt;4-bit는 다음 개수의 값을 표현할 수 있습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;2^4 = 16개 값&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;4826&quot; data-start=&quot;4793&quot; data-ke-size=&quot;size16&quot;&gt;즉, 연속적인 실수를 16개의 대표값 중 하나로 근사합니다.&lt;/p&gt;
&lt;p data-end=&quot;4830&quot; data-start=&quot;4828&quot; data-ke-size=&quot;size16&quot;&gt;예:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;-1.2 &amp;rarr; code 0
-0.8 &amp;rarr; code 2
0.0  &amp;rarr; code 8
0.3  &amp;rarr; code 10
0.9  &amp;rarr; code 13
1.4  &amp;rarr; code 15&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;4983&quot; data-start=&quot;4932&quot; data-ke-size=&quot;size16&quot;&gt;저장할 때는 code만 저장하고, 계산할 때는 scale 등을 이용해 실수값으로 복원합니다.&lt;/p&gt;
&lt;hr data-end=&quot;4988&quot; data-start=&quot;4985&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;5008&quot; data-start=&quot;4990&quot; data-section-id=&quot;1e5bx4k&quot;&gt;7. 4-bit 양자화의 의미&lt;/h1&gt;
&lt;h2 data-end=&quot;5025&quot; data-start=&quot;5010&quot; data-section-id=&quot;1o2ml0e&quot; data-ke-size=&quot;size26&quot;&gt;7.1 bit 수 비교&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;형식bitbyte설명
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;5274&quot; data-start=&quot;5027&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;5274&quot; data-start=&quot;5072&quot;&gt;
&lt;tr data-end=&quot;5105&quot; data-start=&quot;5072&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;5079&quot; data-start=&quot;5072&quot;&gt;FP32&lt;/td&gt;
&lt;td data-end=&quot;5088&quot; data-start=&quot;5079&quot; data-col-size=&quot;sm&quot;&gt;32-bit&lt;/td&gt;
&lt;td data-end=&quot;5098&quot; data-start=&quot;5088&quot; data-col-size=&quot;sm&quot;&gt;4 bytes&lt;/td&gt;
&lt;td data-end=&quot;5105&quot; data-start=&quot;5098&quot; data-col-size=&quot;sm&quot;&gt;고정밀&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;5146&quot; data-start=&quot;5106&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;5113&quot; data-start=&quot;5106&quot;&gt;FP16&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;5122&quot; data-start=&quot;5113&quot;&gt;16-bit&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;5132&quot; data-start=&quot;5122&quot;&gt;2 bytes&lt;/td&gt;
&lt;td data-end=&quot;5146&quot; data-start=&quot;5132&quot; data-col-size=&quot;sm&quot;&gt;일반적인 학습/추론&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;5186&quot; data-start=&quot;5147&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;5154&quot; data-start=&quot;5147&quot;&gt;BF16&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;5163&quot; data-start=&quot;5154&quot;&gt;16-bit&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;5173&quot; data-start=&quot;5163&quot;&gt;2 bytes&lt;/td&gt;
&lt;td data-end=&quot;5186&quot; data-start=&quot;5173&quot; data-col-size=&quot;sm&quot;&gt;학습 안정성 좋음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;5221&quot; data-start=&quot;5187&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;5194&quot; data-start=&quot;5187&quot;&gt;INT8&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;5202&quot; data-start=&quot;5194&quot;&gt;8-bit&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;5211&quot; data-start=&quot;5202&quot;&gt;1 byte&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;5221&quot; data-start=&quot;5211&quot;&gt;양자화 추론&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;5274&quot; data-start=&quot;5222&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;5237&quot; data-start=&quot;5222&quot;&gt;INT4 / 4-bit&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;5245&quot; data-start=&quot;5237&quot;&gt;4-bit&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;5257&quot; data-start=&quot;5245&quot;&gt;0.5 bytes&lt;/td&gt;
&lt;td data-end=&quot;5274&quot; data-start=&quot;5257&quot; data-col-size=&quot;sm&quot;&gt;QLoRA에서 많이 사용&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;5320&quot; data-start=&quot;5276&quot; data-ke-size=&quot;size16&quot;&gt;FP16에서 4-bit로 줄이면 weight 저장량은 대략 4분의 1이 됩니다.&lt;/p&gt;
&lt;h2 data-end=&quot;5334&quot; data-start=&quot;5322&quot; data-section-id=&quot;c2uqha&quot; data-ke-size=&quot;size26&quot;&gt;7.2 예시 계산&lt;/h2&gt;
&lt;p data-end=&quot;5351&quot; data-start=&quot;5336&quot; data-ke-size=&quot;size16&quot;&gt;7B 모델을 기준으로 보면:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;FP16 weight 크기:
7B &amp;times; 2 bytes = 약 14GB&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;5416&quot; data-start=&quot;5404&quot; data-ke-size=&quot;size16&quot;&gt;4-bit로 저장하면:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;7B &amp;times; 0.5 bytes = 약 3.5GB&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;5557&quot; data-start=&quot;5456&quot; data-ke-size=&quot;size16&quot;&gt;물론 실제로는 scale, zero-point, quantization metadata 등이 추가되므로 정확히 3.5GB만 쓰는 것은 아닙니다. 하지만 FP16보다 훨씬 작아집니다.&lt;/p&gt;
&lt;hr data-end=&quot;6758&quot; data-start=&quot;6755&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;6779&quot; data-start=&quot;6760&quot; data-section-id=&quot;e8ekz0&quot;&gt;9. QLoRA 전체 학습 절차&lt;/h1&gt;
&lt;h2 data-end=&quot;6793&quot; data-start=&quot;6781&quot; data-section-id=&quot;9urfe2&quot; data-ke-size=&quot;size26&quot;&gt;9.1 절차 요약&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;1. base model 선택
2. 4-bit quantization으로 모델 로드
3. 원본 모델 freeze
4. LoRA adapter 삽입
5. 학습 데이터 준비
6. forward 시 4-bit weight를 dequantize하여 계산
7. loss 계산
8. backward에서 LoRA adapter만 업데이트
9. validation 평가
10. adapter 저장&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;12848&quot; data-start=&quot;12845&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;12881&quot; data-start=&quot;12850&quot; data-section-id=&quot;10m99x0&quot;&gt;16. QLoRA에서 학습되는 것과 학습되지 않는 것&lt;/h1&gt;
&lt;h2 data-end=&quot;12897&quot; data-start=&quot;12883&quot; data-section-id=&quot;uiay0u&quot; data-ke-size=&quot;size26&quot;&gt;16.1 학습되는 것&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;stata&quot;&gt;&lt;code&gt;LoRA A matrix
LoRA B matrix
필요 시 일부 bias
필요 시 task-specific head&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-end=&quot;12994&quot; data-start=&quot;12977&quot; data-section-id=&quot;djlhbr&quot; data-ke-size=&quot;size26&quot;&gt;16.2 학습되지 않는 것&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;armasm&quot;&gt;&lt;code&gt;4-bit base model weight
원본 attention weight
원본 MLP weight
원본 embedding 대부분&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-end=&quot;13099&quot; data-start=&quot;13084&quot; data-section-id=&quot;6h5m6q&quot; data-ke-size=&quot;size26&quot;&gt;16.3 프로젝트 기준&lt;/h2&gt;
&lt;p data-end=&quot;13135&quot; data-start=&quot;13101&quot; data-ke-size=&quot;size16&quot;&gt;Agenda LLM에서 QLoRA가 학습하는 것은 다음입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;발화가 clinically relevant인지 판단
type을 agenda_item/detail/medication/social_history/follow_up/question_unanswered 중 하나로 분류
한 문장 summary 생성
지정된 JSON 형식 유지
pipe-delimited context 활용&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;13360&quot; data-start=&quot;13326&quot; data-ke-size=&quot;size16&quot;&gt;반대로 QLoRA 모델이 직접 학습하지 않는 것은 다음입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;linking
first-mention detection
resolution tracking
context buffer eviction&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;13552&quot; data-start=&quot;13451&quot; data-ke-size=&quot;size16&quot;&gt;프로젝트 문서에서는 이 기능들을 system tracker와 context manager가 처리하도록 분리합니다.&lt;/p&gt;
&lt;hr data-end=&quot;13557&quot; data-start=&quot;13554&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-end=&quot;17738&quot; data-start=&quot;17532&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-end=&quot;17743&quot; data-start=&quot;17740&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;17760&quot; data-start=&quot;17745&quot; data-section-id=&quot;ejj6ck&quot;&gt;22. QLoRA의 장점&lt;/h1&gt;
&lt;h2 data-end=&quot;17783&quot; data-start=&quot;17762&quot; data-section-id=&quot;4j21z0&quot; data-ke-size=&quot;size26&quot;&gt;22.1 매우 낮은 메모리 사용량&lt;/h2&gt;
&lt;p data-end=&quot;17803&quot; data-start=&quot;17785&quot; data-ke-size=&quot;size16&quot;&gt;QLoRA의 가장 큰 장점입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;armasm&quot;&gt;&lt;code&gt;base model은 4-bit로 저장
학습은 adapter만 수행&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;17904&quot; data-start=&quot;17856&quot; data-ke-size=&quot;size16&quot;&gt;따라서 큰 모델을 단일 GPU나 제한된 환경에서도 fine-tuning할 수 있습니다.&lt;/p&gt;
&lt;h2 data-end=&quot;17922&quot; data-start=&quot;17906&quot; data-section-id=&quot;1w4csrc&quot; data-ke-size=&quot;size26&quot;&gt;22.2 저장 공간 절약&lt;/h2&gt;
&lt;p data-end=&quot;17947&quot; data-start=&quot;17924&quot; data-ke-size=&quot;size16&quot;&gt;학습 후 저장할 것은 adapter입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;excel&quot;&gt;&lt;code&gt;base model: 한 번만 저장
task adapter: 작업별 저장&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;18005&quot; data-start=&quot;18003&quot; data-ke-size=&quot;size16&quot;&gt;예:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;lsl&quot;&gt;&lt;code&gt;llama-3.2-3b-base
adapter-clinical-agenda
adapter-medication-summary
adapter-dialogue-state&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-end=&quot;18134&quot; data-start=&quot;18112&quot; data-section-id=&quot;1b0foi8&quot; data-ke-size=&quot;size26&quot;&gt;22.3 여러 작업에 유연하게 적용&lt;/h2&gt;
&lt;p data-end=&quot;18173&quot; data-start=&quot;18136&quot; data-ke-size=&quot;size16&quot;&gt;같은 base model에 여러 adapter를 붙일 수 있습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;armasm&quot;&gt;&lt;code&gt;base model + adapter A
base model + adapter B
base model + adapter C&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;18557&quot; data-start=&quot;18554&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;18574&quot; data-start=&quot;18559&quot; data-section-id=&quot;65j4yw&quot;&gt;23. QLoRA의 단점&lt;/h1&gt;
&lt;h2 data-end=&quot;18590&quot; data-start=&quot;18576&quot; data-section-id=&quot;1h6vtui&quot; data-ke-size=&quot;size26&quot;&gt;23.1 양자화 손실&lt;/h2&gt;
&lt;p data-end=&quot;18632&quot; data-start=&quot;18592&quot; data-ke-size=&quot;size16&quot;&gt;4-bit로 줄이면 원래 weight 정보를 완벽하게 보존하지 못합니다.&lt;/p&gt;
&lt;p data-end=&quot;18641&quot; data-start=&quot;18634&quot; data-ke-size=&quot;size16&quot;&gt;가능한 문제:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;ada&quot;&gt;&lt;code&gt;미세한 표현력 손실
특정 task에서 성능 하락
수치 안정성 문제&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-end=&quot;18710&quot; data-start=&quot;18693&quot; data-section-id=&quot;1a6gdz1&quot; data-ke-size=&quot;size26&quot;&gt;23.2 구현 복잡도 증가&lt;/h2&gt;
&lt;p data-end=&quot;18738&quot; data-start=&quot;18712&quot; data-ke-size=&quot;size16&quot;&gt;LoRA보다 QLoRA는 설정이 더 복잡합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;bitsandbytes 설정
compute dtype 설정
NF4/FP4 선택
double quantization 선택
device_map 관리&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;27692&quot; data-start=&quot;27689&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;27718&quot; data-start=&quot;27694&quot; data-section-id=&quot;n9dlrs&quot;&gt;37. QLoRA를 한 문장으로 이해하기&lt;/h1&gt;
&lt;p data-end=&quot;27744&quot; data-start=&quot;27720&quot; data-ke-size=&quot;size16&quot;&gt;QLoRA는 다음 문장으로 이해하면 됩니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;mipsasm&quot;&gt;&lt;code&gt;큰 LLM은 4-bit로 압축해서 메모리에 올리고, 실제 학습은 작은 LoRA adapter만 수행하는 fine-tuning 방식&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;27847&quot; data-start=&quot;27832&quot; data-ke-size=&quot;size16&quot;&gt;더 구체적으로는 다음입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;Base model:
  4-bit quantized, frozen

LoRA adapter:
  FP16/BF16, trainable

Training:
  adapter만 업데이트

Inference:
  quantized base model + trained adapter&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;28021&quot; data-start=&quot;28018&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;28042&quot; data-start=&quot;28023&quot; data-section-id=&quot;1403tdv&quot;&gt;38. QLoRA 핵심 암기 표&lt;/h1&gt;
&lt;div&gt;
&lt;div&gt;개념설명
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;28469&quot; data-start=&quot;28044&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;28469&quot; data-start=&quot;28066&quot;&gt;
&lt;tr data-end=&quot;28107&quot; data-start=&quot;28066&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;28074&quot; data-start=&quot;28066&quot;&gt;QLoRA&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;28107&quot; data-start=&quot;28074&quot;&gt;Quantized Low-Rank Adaptation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;28121&quot; data-start=&quot;28108&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;28113&quot; data-start=&quot;28108&quot;&gt;기반&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;28121&quot; data-start=&quot;28113&quot;&gt;LoRA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;28172&quot; data-start=&quot;28122&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;28127&quot; data-start=&quot;28122&quot;&gt;핵심&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;28172&quot; data-start=&quot;28127&quot;&gt;4-bit base model + trainable LoRA adapter&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;28203&quot; data-start=&quot;28173&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;28186&quot; data-start=&quot;28173&quot;&gt;base model&lt;/td&gt;
&lt;td data-end=&quot;28203&quot; data-start=&quot;28186&quot; data-col-size=&quot;md&quot;&gt;양자화되고 freeze됨&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;28227&quot; data-start=&quot;28204&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;28212&quot; data-start=&quot;28204&quot;&gt;학습 대상&lt;/td&gt;
&lt;td data-end=&quot;28227&quot; data-start=&quot;28212&quot; data-col-size=&quot;md&quot;&gt;LoRA A/B 행렬&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;28260&quot; data-start=&quot;28228&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;28236&quot; data-start=&quot;28228&quot;&gt;주요 목적&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;28260&quot; data-start=&quot;28236&quot;&gt;저메모리 LLM fine-tuning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;28314&quot; data-start=&quot;28261&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;28269&quot; data-start=&quot;28261&quot;&gt;주요 기술&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;28314&quot; data-start=&quot;28269&quot;&gt;NF4, double quantization, paged optimizer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;28344&quot; data-start=&quot;28315&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;28320&quot; data-start=&quot;28315&quot;&gt;장점&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;28344&quot; data-start=&quot;28320&quot;&gt;큰 모델을 작은 GPU에서 학습 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;28378&quot; data-start=&quot;28345&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;28350&quot; data-start=&quot;28345&quot;&gt;단점&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;28378&quot; data-start=&quot;28350&quot;&gt;양자화 손실, 구현 복잡도, 배포 변환 필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;28419&quot; data-start=&quot;28379&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;28390&quot; data-start=&quot;28379&quot;&gt;LoRA와 차이&lt;/td&gt;
&lt;td data-end=&quot;28419&quot; data-start=&quot;28390&quot; data-col-size=&quot;md&quot;&gt;base model을 4-bit로 줄인다는 점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;28469&quot; data-start=&quot;28420&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;28430&quot; data-start=&quot;28420&quot;&gt;프로젝트 적용&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;28469&quot; data-start=&quot;28430&quot;&gt;Llama 3.2 3B Agenda LLM fine-tuning&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;28474&quot; data-start=&quot;28471&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;28487&quot; data-start=&quot;28476&quot; data-section-id=&quot;1dj4hc2&quot;&gt;39. 최종 정리&lt;/h1&gt;
&lt;p data-end=&quot;28504&quot; data-start=&quot;28489&quot; data-ke-size=&quot;size16&quot;&gt;LoRA는 다음 방식입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;sas&quot;&gt;&lt;code&gt;output = W x + B A x&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;28571&quot; data-start=&quot;28540&quot; data-ke-size=&quot;size16&quot;&gt;QLoRA는 여기에 quantization을 추가합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;sas&quot;&gt;&lt;code&gt;output = Dequantize(W_4bit) x + B A x&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;28628&quot; data-start=&quot;28624&quot; data-ke-size=&quot;size16&quot;&gt;여기서:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;armasm&quot;&gt;&lt;code&gt;W_4bit = 4-bit로 압축된 base model weight
A, B = 학습 가능한 LoRA adapter&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;28729&quot; data-start=&quot;28708&quot; data-ke-size=&quot;size16&quot;&gt;따라서 QLoRA의 본질은 다음입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;erlang&quot;&gt;&lt;code&gt;원본 모델 전체를 학습하지 않는다.
원본 모델은 4-bit로 압축해서 메모리 사용량을 줄인다.
작은 adapter만 학습한다.
큰 모델을 제한된 자원에서도 task-specific하게 조정한다.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;29132&quot; data-start=&quot;28853&quot; data-ke-size=&quot;size16&quot;&gt;프로젝트 기준으로는 QLoRA가 &lt;b&gt;Agenda LLM을 clinical agenda extraction 형식에 맞게 학습시키는 방법&lt;/b&gt;입니다. 반면 system tracker, context manager, metrics는 QLoRA의 직접 대상이 아닙니다. QLoRA는 &amp;ldquo;발화를 보고 relevant/type/summary를 생성하는 LLM&amp;rdquo;을 만드는 학습 기법이고, 그 뒤의 linking, resolution tracking, buffer eviction은 별도 시스템 구성요소가 처리합니다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-message-model-slug=&quot;gpt-5-5-thinking&quot; data-message-id=&quot;9d5fc436-fe75-42f8-a346-cf2423d0396e&quot; data-message-author-role=&quot;assistant&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h1 data-end=&quot;32&quot; data-start=&quot;0&quot; data-section-id=&quot;1vqfxnj&quot;&gt;1. Base model을 4-bit로 양자화한다는 뜻&lt;/h1&gt;
&lt;p data-end=&quot;127&quot; data-start=&quot;34&quot; data-ke-size=&quot;size16&quot;&gt;**&amp;ldquo;Base model을 4-bit로 양자화한다&amp;rdquo;**는 것은 LLM 안에 들어 있는 거대한 숫자 가중치들을 &lt;b&gt;더 작은 숫자 형식으로 압축해서 저장하는 것&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-end=&quot;219&quot; data-start=&quot;129&quot; data-ke-size=&quot;size16&quot;&gt;즉, 원래 모델이 가지고 있던 weight를 그대로 고정밀 숫자로 저장하지 않고, &lt;b&gt;4-bit짜리 작은 코드값으로 바꿔서 메모리 사용량을 줄이는 과정&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-end=&quot;235&quot; data-start=&quot;221&quot; data-ke-size=&quot;size16&quot;&gt;간단히 말하면 다음입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;armasm&quot;&gt;&lt;code&gt;원래 모델 weight: FP16, BF16, FP32 같은 큰 숫자 형식
&amp;darr;
4-bit 양자화
&amp;darr;
압축된 4-bit weight&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;326&quot; data-start=&quot;323&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;345&quot; data-start=&quot;328&quot; data-section-id=&quot;1xpy11s&quot;&gt;2. 여기서 대상은 무엇인가&lt;/h1&gt;
&lt;p data-end=&quot;382&quot; data-start=&quot;347&quot; data-ke-size=&quot;size16&quot;&gt;양자화의 대상은 &lt;b&gt;base model의 weight&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-end=&quot;418&quot; data-start=&quot;384&quot; data-ke-size=&quot;size16&quot;&gt;Base model은 이미 사전학습이 끝난 원본 LLM입니다.&lt;/p&gt;
&lt;p data-end=&quot;422&quot; data-start=&quot;420&quot; data-ke-size=&quot;size16&quot;&gt;예:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Llama 3B
Llama 7B
Mistral 7B
Qwen 7B
Gemma 2B&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;522&quot; data-start=&quot;483&quot; data-ke-size=&quot;size16&quot;&gt;이 모델들은 내부에 엄청나게 많은 숫자 weight를 가지고 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;564&quot; data-start=&quot;524&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 Llama 7B라면 대략 70억 개의 weight가 있습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;7B model = 약 7,000,000,000개의 숫자 weight&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;652&quot; data-start=&quot;618&quot; data-ke-size=&quot;size16&quot;&gt;이 weight들이 모델의 지식과 계산 규칙을 담고 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;705&quot; data-start=&quot;654&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 모델이 다음을 이해할 수 있는 이유도 모두 weight에 저장된 패턴 때문입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;문법
단어 의미
의학 지식
문장 구조
추론 패턴
요약 방식
질문 응답 방식&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;787&quot; data-start=&quot;762&quot; data-ke-size=&quot;size16&quot;&gt;따라서 4-bit 양자화의 대상은 다음입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;stan&quot;&gt;&lt;code&gt;대상 = base model 내부의 weight matrix들&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;877&quot; data-start=&quot;837&quot; data-ke-size=&quot;size16&quot;&gt;예를 들면 Transformer 내부의 다음 weight들이 대상입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;Wq, Wk, Wv, Wo
MLP weight
embedding weight
output projection weight&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;963&quot; data-start=&quot;960&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;979&quot; data-start=&quot;965&quot; data-section-id=&quot;16db0i7&quot;&gt;3. bit가 무엇인가&lt;/h1&gt;
&lt;p data-end=&quot;1012&quot; data-start=&quot;981&quot; data-ke-size=&quot;size16&quot;&gt;bit는 컴퓨터가 정보를 저장하는 가장 작은 단위입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;basic&quot;&gt;&lt;code&gt;1 bit = 0 또는 1 하나&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1073&quot; data-start=&quot;1045&quot; data-ke-size=&quot;size16&quot;&gt;4-bit는 0과 1 네 개로 표현하는 숫자입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;4-bit = 0000 ~ 1111&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1140&quot; data-start=&quot;1108&quot; data-ke-size=&quot;size16&quot;&gt;4-bit로 표현할 수 있는 값의 개수는 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;2^4 = 16개&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1202&quot; data-start=&quot;1165&quot; data-ke-size=&quot;size16&quot;&gt;즉, 4-bit는 총 16개의 서로 다른 값을 표현할 수 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;1206&quot; data-start=&quot;1204&quot; data-ke-size=&quot;size16&quot;&gt;예:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;0000
0001
0010
0011
...
1111&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;1253&quot; data-start=&quot;1250&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;1281&quot; data-start=&quot;1255&quot; data-section-id=&quot;1srkn2p&quot;&gt;4. 원래 모델 weight는 어떤 형태인가&lt;/h1&gt;
&lt;p data-end=&quot;1305&quot; data-start=&quot;1283&quot; data-ke-size=&quot;size16&quot;&gt;LLM의 weight는 보통 실수입니다.&lt;/p&gt;
&lt;p data-end=&quot;1339&quot; data-start=&quot;1307&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 어떤 weight들이 다음과 같다고 하겠습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;0.18372
-0.49211
1.28491
0.00312
-2.10344&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1437&quot; data-start=&quot;1396&quot; data-ke-size=&quot;size16&quot;&gt;이런 값들은 보통 FP32, FP16, BF16 같은 형식으로 저장됩니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;형식크기설명
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1593&quot; data-start=&quot;1439&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;1593&quot; data-start=&quot;1471&quot;&gt;
&lt;tr data-end=&quot;1497&quot; data-start=&quot;1471&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1478&quot; data-start=&quot;1471&quot;&gt;FP32&lt;/td&gt;
&lt;td data-end=&quot;1487&quot; data-start=&quot;1478&quot; data-col-size=&quot;sm&quot;&gt;32-bit&lt;/td&gt;
&lt;td data-end=&quot;1497&quot; data-start=&quot;1487&quot; data-col-size=&quot;sm&quot;&gt;고정밀 실수&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1527&quot; data-start=&quot;1498&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1505&quot; data-start=&quot;1498&quot;&gt;FP16&lt;/td&gt;
&lt;td data-end=&quot;1514&quot; data-start=&quot;1505&quot; data-col-size=&quot;sm&quot;&gt;16-bit&lt;/td&gt;
&lt;td data-end=&quot;1527&quot; data-start=&quot;1514&quot; data-col-size=&quot;sm&quot;&gt;절반 정밀도 실수&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1560&quot; data-start=&quot;1528&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1535&quot; data-start=&quot;1528&quot;&gt;BF16&lt;/td&gt;
&lt;td data-end=&quot;1544&quot; data-start=&quot;1535&quot; data-col-size=&quot;sm&quot;&gt;16-bit&lt;/td&gt;
&lt;td data-end=&quot;1560&quot; data-start=&quot;1544&quot; data-col-size=&quot;sm&quot;&gt;학습에 자주 쓰는 실수&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1593&quot; data-start=&quot;1561&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1569&quot; data-start=&quot;1561&quot;&gt;4-bit&lt;/td&gt;
&lt;td data-end=&quot;1577&quot; data-start=&quot;1569&quot; data-col-size=&quot;sm&quot;&gt;4-bit&lt;/td&gt;
&lt;td data-end=&quot;1593&quot; data-start=&quot;1577&quot; data-col-size=&quot;sm&quot;&gt;매우 압축된 저정밀 값&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1670&quot; data-start=&quot;1595&quot; data-ke-size=&quot;size16&quot;&gt;FP16은 weight 하나를 저장하는 데 16-bit를 씁니다.&lt;br /&gt;4-bit는 weight 하나를 저장하는 데 4-bit만 씁니다.&lt;/p&gt;
&lt;p data-end=&quot;1694&quot; data-start=&quot;1672&quot; data-ke-size=&quot;size16&quot;&gt;따라서 단순 계산으로는 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;FP16 &amp;rarr; 4-bit
16-bit &amp;rarr; 4-bit
저장량 1/4로 감소&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;1752&quot; data-start=&quot;1749&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;1772&quot; data-start=&quot;1754&quot; data-section-id=&quot;u22wcf&quot;&gt;5. 왜 4-bit로 줄이는가&lt;/h1&gt;
&lt;p data-end=&quot;1792&quot; data-start=&quot;1774&quot; data-ke-size=&quot;size16&quot;&gt;목적은 &lt;b&gt;메모리 절약&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-end=&quot;1839&quot; data-start=&quot;1794&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 7B 모델을 FP16으로 저장하면 weight만 대략 다음 크기입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;7,000,000,000개 &amp;times; 2 bytes = 약 14GB&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1927&quot; data-start=&quot;1888&quot; data-ke-size=&quot;size16&quot;&gt;그런데 4-bit로 저장하면 weight 하나가 0.5 byte입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;7,000,000,000개 &amp;times; 0.5 bytes = 약 3.5GB&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2008&quot; data-start=&quot;1979&quot; data-ke-size=&quot;size16&quot;&gt;즉, weight 저장량만 보면 다음처럼 줄어듭니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;약 14GB &amp;rarr; 약 3.5GB&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2073&quot; data-start=&quot;2040&quot; data-ke-size=&quot;size16&quot;&gt;그래서 큰 모델을 작은 GPU 메모리에도 올릴 수 있습니다.&lt;/p&gt;
&lt;hr data-end=&quot;2078&quot; data-start=&quot;2075&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;2098&quot; data-start=&quot;2080&quot; data-section-id=&quot;1v7l0n3&quot;&gt;6. 양자화가 실제로 하는 일&lt;/h1&gt;
&lt;p data-end=&quot;2139&quot; data-start=&quot;2100&quot; data-ke-size=&quot;size16&quot;&gt;양자화는 연속적인 실수값을 제한된 개수의 대표값으로 바꾸는 과정입니다.&lt;/p&gt;
&lt;p data-end=&quot;2169&quot; data-start=&quot;2141&quot; data-ke-size=&quot;size16&quot;&gt;원래 weight는 매우 다양한 실수값을 가집니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;-1.238
-0.912
-0.305
0.047
0.286
0.731
1.502&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2258&quot; data-start=&quot;2229&quot; data-ke-size=&quot;size16&quot;&gt;하지만 4-bit는 16개 값밖에 표현하지 못합니다.&lt;/p&gt;
&lt;p data-end=&quot;2303&quot; data-start=&quot;2260&quot; data-ke-size=&quot;size16&quot;&gt;따라서 원래 weight들을 16개의 대표값 중 가장 가까운 값으로 바꿉니다.&lt;/p&gt;
&lt;p data-end=&quot;2333&quot; data-start=&quot;2305&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 16개의 대표값이 있다고 가정하겠습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;json&quot;&gt;&lt;code&gt;[-1.5, -1.3, -1.1, -0.9, -0.7, -0.5, -0.3, -0.1,
  0.1,  0.3,  0.5,  0.7,  0.9,  1.1,  1.3,  1.5]&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2472&quot; data-start=&quot;2446&quot; data-ke-size=&quot;size16&quot;&gt;그러면 원래 weight는 다음처럼 근사됩니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;원래 weight가장 가까운 대표값
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;2630&quot; data-start=&quot;2474&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;2630&quot; data-start=&quot;2513&quot;&gt;
&lt;tr data-end=&quot;2530&quot; data-start=&quot;2513&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2522&quot; data-start=&quot;2513&quot;&gt;-1.238&lt;/td&gt;
&lt;td data-end=&quot;2530&quot; data-start=&quot;2522&quot; data-col-size=&quot;sm&quot;&gt;-1.3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2548&quot; data-start=&quot;2531&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2540&quot; data-start=&quot;2531&quot;&gt;-0.912&lt;/td&gt;
&lt;td data-end=&quot;2548&quot; data-start=&quot;2540&quot; data-col-size=&quot;sm&quot;&gt;-0.9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2566&quot; data-start=&quot;2549&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2558&quot; data-start=&quot;2549&quot;&gt;-0.305&lt;/td&gt;
&lt;td data-end=&quot;2566&quot; data-start=&quot;2558&quot; data-col-size=&quot;sm&quot;&gt;-0.3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2582&quot; data-start=&quot;2567&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2575&quot; data-start=&quot;2567&quot;&gt;0.047&lt;/td&gt;
&lt;td data-end=&quot;2582&quot; data-start=&quot;2575&quot; data-col-size=&quot;sm&quot;&gt;0.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2598&quot; data-start=&quot;2583&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2591&quot; data-start=&quot;2583&quot;&gt;0.286&lt;/td&gt;
&lt;td data-end=&quot;2598&quot; data-start=&quot;2591&quot; data-col-size=&quot;sm&quot;&gt;0.3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2614&quot; data-start=&quot;2599&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2607&quot; data-start=&quot;2599&quot;&gt;0.731&lt;/td&gt;
&lt;td data-end=&quot;2614&quot; data-start=&quot;2607&quot; data-col-size=&quot;sm&quot;&gt;0.7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2630&quot; data-start=&quot;2615&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2623&quot; data-start=&quot;2615&quot;&gt;1.502&lt;/td&gt;
&lt;td data-end=&quot;2630&quot; data-start=&quot;2623&quot; data-col-size=&quot;sm&quot;&gt;1.5&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2674&quot; data-start=&quot;2632&quot; data-ke-size=&quot;size16&quot;&gt;즉, 정확한 값을 그대로 저장하지 않고, 가까운 대표값의 번호만 저장합니다.&lt;/p&gt;
&lt;hr data-end=&quot;2679&quot; data-start=&quot;2676&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;2698&quot; data-start=&quot;2681&quot; data-section-id=&quot;6pqelh&quot;&gt;7. 4-bit 양자화 과정&lt;/h1&gt;
&lt;p data-end=&quot;2727&quot; data-start=&quot;2700&quot; data-ke-size=&quot;size16&quot;&gt;4-bit 양자화는 대략 다음 순서로 진행됩니다.&lt;/p&gt;
&lt;h2 data-end=&quot;2756&quot; data-start=&quot;2729&quot; data-section-id=&quot;19l8hey&quot; data-ke-size=&quot;size26&quot;&gt;7.1 1단계: 원본 weight를 가져온다&lt;/h2&gt;
&lt;p data-end=&quot;2792&quot; data-start=&quot;2758&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 어떤 layer의 weight가 있다고 하겠습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;W = [
  0.12, -0.44, 0.87,
  1.23, -1.10, 0.05
]&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2883&quot; data-start=&quot;2856&quot; data-ke-size=&quot;size16&quot;&gt;이 값들은 원래 FP16이나 BF16 형태입니다.&lt;/p&gt;
&lt;hr data-end=&quot;2888&quot; data-start=&quot;2885&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2918&quot; data-start=&quot;2890&quot; data-section-id=&quot;12qy5or&quot; data-ke-size=&quot;size26&quot;&gt;7.2 2단계: weight의 범위를 확인한다&lt;/h2&gt;
&lt;p data-end=&quot;2949&quot; data-start=&quot;2920&quot; data-ke-size=&quot;size16&quot;&gt;먼저 이 weight들이 어느 범위에 있는지 봅니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;최솟값 = -1.10
최댓값 = 1.23&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;3043&quot; data-start=&quot;2987&quot; data-ke-size=&quot;size16&quot;&gt;모델 전체를 한 번에 양자화하지 않고, 보통은 block 또는 group 단위로 나눠서 양자화합니다.&lt;/p&gt;
&lt;p data-end=&quot;3047&quot; data-start=&quot;3045&quot; data-ke-size=&quot;size16&quot;&gt;예:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;64개 weight 단위
128개 weight 단위
256개 weight 단위&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;3148&quot; data-start=&quot;3106&quot; data-ke-size=&quot;size16&quot;&gt;이유는 layer마다, block마다 weight 분포가 다르기 때문입니다.&lt;/p&gt;
&lt;hr data-end=&quot;3153&quot; data-start=&quot;3150&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;3184&quot; data-start=&quot;3155&quot; data-section-id=&quot;1h09jwx&quot; data-ke-size=&quot;size26&quot;&gt;7.3 3단계: 대표값 또는 scale을 정한다&lt;/h2&gt;
&lt;p data-end=&quot;3237&quot; data-start=&quot;3186&quot; data-ke-size=&quot;size16&quot;&gt;4-bit는 16개 값만 표현할 수 있으므로, 원래 실수값을 16개 코드로 매핑해야 합니다.&lt;/p&gt;
&lt;p data-end=&quot;3274&quot; data-start=&quot;3239&quot; data-ke-size=&quot;size16&quot;&gt;가장 단순한 방식은 uniform quantization입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;erlang&quot;&gt;&lt;code&gt;범위를 16구간으로 나눈다.
각 weight를 가장 가까운 구간으로 보낸다.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;3376&quot; data-start=&quot;3332&quot; data-ke-size=&quot;size16&quot;&gt;하지만 QLoRA에서는 보통 더 정교한 방식인 &lt;b&gt;NF4&lt;/b&gt;를 많이 사용합니다.&lt;/p&gt;
&lt;p data-end=&quot;3404&quot; data-start=&quot;3378&quot; data-ke-size=&quot;size16&quot;&gt;NF4는 NormalFloat 4-bit입니다.&lt;/p&gt;
&lt;p data-end=&quot;3416&quot; data-start=&quot;3406&quot; data-ke-size=&quot;size16&quot;&gt;의미는 다음입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;mipsasm&quot;&gt;&lt;code&gt;LLM weight가 대체로 정규분포와 비슷하다는 점을 이용해서,
자주 나오는 값 주변을 더 정밀하게 표현하는 4-bit 방식&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;3558&quot; data-start=&quot;3502&quot; data-ke-size=&quot;size16&quot;&gt;즉, 단순히 같은 간격으로 나누는 것이 아니라, weight 분포에 맞게 16개 대표값을 배치합니다.&lt;/p&gt;
&lt;hr data-end=&quot;3563&quot; data-start=&quot;3560&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;3600&quot; data-start=&quot;3565&quot; data-section-id=&quot;wq0ybt&quot; data-ke-size=&quot;size26&quot;&gt;7.4 4단계: 각 weight를 4-bit 코드로 바꾼다&lt;/h2&gt;
&lt;p data-end=&quot;3633&quot; data-start=&quot;3602&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 원래 weight가 다음과 같다고 하겠습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;0.12
-0.44
0.87
1.23
-1.10
0.05&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;3711&quot; data-start=&quot;3680&quot; data-ke-size=&quot;size16&quot;&gt;이 값들을 각각 가장 가까운 4-bit 코드로 바꿉니다.&lt;/p&gt;
&lt;p data-end=&quot;3715&quot; data-start=&quot;3713&quot; data-ke-size=&quot;size16&quot;&gt;예:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;원래 weight4-bit 코드
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;3850&quot; data-start=&quot;3717&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;3850&quot; data-start=&quot;3753&quot;&gt;
&lt;tr data-end=&quot;3768&quot; data-start=&quot;3753&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3760&quot; data-start=&quot;3753&quot;&gt;0.12&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3768&quot; data-start=&quot;3760&quot;&gt;1001&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3785&quot; data-start=&quot;3769&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3777&quot; data-start=&quot;3769&quot;&gt;-0.44&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3785&quot; data-start=&quot;3777&quot;&gt;0101&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3801&quot; data-start=&quot;3786&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3793&quot; data-start=&quot;3786&quot;&gt;0.87&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3801&quot; data-start=&quot;3793&quot;&gt;1101&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3817&quot; data-start=&quot;3802&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3809&quot; data-start=&quot;3802&quot;&gt;1.23&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3817&quot; data-start=&quot;3809&quot;&gt;1110&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3834&quot; data-start=&quot;3818&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3826&quot; data-start=&quot;3818&quot;&gt;-1.10&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3834&quot; data-start=&quot;3826&quot;&gt;0001&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3850&quot; data-start=&quot;3835&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3842&quot; data-start=&quot;3835&quot;&gt;0.05&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3850&quot; data-start=&quot;3842&quot;&gt;1000&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;3890&quot; data-start=&quot;3852&quot; data-ke-size=&quot;size16&quot;&gt;실제로 저장되는 것은 원래 실수값이 아니라 이 4-bit 코드입니다.&lt;/p&gt;
&lt;hr data-end=&quot;3895&quot; data-start=&quot;3892&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;3931&quot; data-start=&quot;3897&quot; data-section-id=&quot;k8zjcb&quot; data-ke-size=&quot;size26&quot;&gt;7.5 5단계: 복원에 필요한 scale 정보를 저장한다&lt;/h2&gt;
&lt;p data-end=&quot;3999&quot; data-start=&quot;3933&quot; data-ke-size=&quot;size16&quot;&gt;4-bit 코드만 있으면 원래 실수값으로 다시 근사할 수 없습니다.&lt;br /&gt;따라서 scale 같은 보조 정보가 필요합니다.&lt;/p&gt;
&lt;p data-end=&quot;4007&quot; data-start=&quot;4001&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;코드 1001은 실제로 0.12 근처를 의미한다.
코드 0101은 실제로 -0.44 근처를 의미한다.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;4098&quot; data-start=&quot;4079&quot; data-ke-size=&quot;size16&quot;&gt;이런 매핑 정보를 저장해야 합니다.&lt;/p&gt;
&lt;p data-end=&quot;4165&quot; data-start=&quot;4100&quot; data-ke-size=&quot;size16&quot;&gt;QLoRA에서는 이 scale 정보도 다시 압축하는 &lt;b&gt;double quantization&lt;/b&gt;을 사용할 수 있습니다.&lt;/p&gt;
&lt;hr data-end=&quot;4170&quot; data-start=&quot;4167&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;4199&quot; data-start=&quot;4172&quot; data-section-id=&quot;1agm1en&quot; data-ke-size=&quot;size26&quot;&gt;7.6 6단계: 계산할 때는 임시로 복원한다&lt;/h2&gt;
&lt;p data-end=&quot;4242&quot; data-start=&quot;4201&quot; data-ke-size=&quot;size16&quot;&gt;모델이 실제 계산을 할 때는 4-bit 코드만으로 곱셈을 하기 어렵습니다.&lt;/p&gt;
&lt;p data-end=&quot;4266&quot; data-start=&quot;4244&quot; data-ke-size=&quot;size16&quot;&gt;그래서 계산 순간에 다음처럼 복원합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;armasm&quot;&gt;&lt;code&gt;4-bit weight code
&amp;darr;
dequantize
&amp;darr;
FP16/BF16에 가까운 계산용 weight&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;4363&quot; data-start=&quot;4340&quot; data-ke-size=&quot;size16&quot;&gt;QLoRA 수식으로 쓰면 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;sas&quot;&gt;&lt;code&gt;output = Dequantize(W_4bit) x + B A x&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;4420&quot; data-start=&quot;4416&quot; data-ke-size=&quot;size16&quot;&gt;여기서:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;항의미
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;4597&quot; data-start=&quot;4422&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;4597&quot; data-start=&quot;4443&quot;&gt;
&lt;tr data-end=&quot;4486&quot; data-start=&quot;4443&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4454&quot; data-start=&quot;4443&quot;&gt;W_4bit&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4486&quot; data-start=&quot;4454&quot;&gt;4-bit로 저장된 base model weight&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;4534&quot; data-start=&quot;4487&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4510&quot; data-start=&quot;4487&quot;&gt;Dequantize(W_4bit)&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4534&quot; data-start=&quot;4510&quot;&gt;계산할 때 임시로 복원한 weight&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;4560&quot; data-start=&quot;4535&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4541&quot; data-start=&quot;4535&quot;&gt;x&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4560&quot; data-start=&quot;4541&quot;&gt;입력 hidden state&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;4597&quot; data-start=&quot;4561&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4571&quot; data-start=&quot;4561&quot;&gt;B A x&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4597&quot; data-start=&quot;4571&quot;&gt;LoRA adapter가 추가하는 보정값&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;4602&quot; data-start=&quot;4599&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;4618&quot; data-start=&quot;4604&quot; data-section-id=&quot;16ltv25&quot;&gt;8. 양자화와 역양자화&lt;/h1&gt;
&lt;p data-end=&quot;4643&quot; data-start=&quot;4620&quot; data-ke-size=&quot;size16&quot;&gt;4-bit 양자화에는 두 방향이 있습니다.&lt;/p&gt;
&lt;h2 data-end=&quot;4664&quot; data-start=&quot;4645&quot; data-section-id=&quot;p1xtar&quot; data-ke-size=&quot;size26&quot;&gt;8.1 Quantization&lt;/h2&gt;
&lt;p data-end=&quot;4700&quot; data-start=&quot;4666&quot; data-ke-size=&quot;size16&quot;&gt;원래 실수 weight를 4-bit 코드로 바꾸는 과정입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;armasm&quot;&gt;&lt;code&gt;FP16 weight &amp;rarr; 4-bit code&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;4742&quot; data-start=&quot;4740&quot; data-ke-size=&quot;size16&quot;&gt;예:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;0.731 &amp;rarr; 1100&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-end=&quot;4791&quot; data-start=&quot;4770&quot; data-section-id=&quot;1r7ccvl&quot; data-ke-size=&quot;size26&quot;&gt;8.2 Dequantization&lt;/h2&gt;
&lt;p data-end=&quot;4834&quot; data-start=&quot;4793&quot; data-ke-size=&quot;size16&quot;&gt;4-bit code를 계산 가능한 실수 근사값으로 다시 바꾸는 과정입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;armasm&quot;&gt;&lt;code&gt;4-bit code &amp;rarr; approximate FP16/BF16 value&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;4892&quot; data-start=&quot;4890&quot; data-ke-size=&quot;size16&quot;&gt;예:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;basic&quot;&gt;&lt;code&gt;1100 &amp;rarr; 0.70&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;4971&quot; data-start=&quot;4919&quot; data-ke-size=&quot;size16&quot;&gt;중요한 점은 dequantization이 원래 값을 완벽하게 복원하는 것은 아니라는 점입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;원래 값: 0.731
복원 값: 0.70&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;5025&quot; data-start=&quot;5009&quot; data-ke-size=&quot;size16&quot;&gt;즉, 약간의 오차가 생깁니다.&lt;/p&gt;
&lt;hr data-end=&quot;5030&quot; data-start=&quot;5027&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;5043&quot; data-start=&quot;5032&quot; data-section-id=&quot;15eg0aw&quot;&gt;9. 양자화 오차&lt;/h1&gt;
&lt;p data-end=&quot;5090&quot; data-start=&quot;5045&quot; data-ke-size=&quot;size16&quot;&gt;4-bit로 줄이면 원래 weight와 복원 weight 사이에 차이가 생깁니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;원래 weight = 0.731
복원 weight = 0.70
오차 = 0.031&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;5170&quot; data-start=&quot;5151&quot; data-ke-size=&quot;size16&quot;&gt;이 차이를 양자화 오차라고 합니다.&lt;/p&gt;
&lt;p data-end=&quot;5204&quot; data-start=&quot;5172&quot; data-ke-size=&quot;size16&quot;&gt;양자화 오차가 너무 크면 모델 성능이 떨어질 수 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;5240&quot; data-start=&quot;5206&quot; data-ke-size=&quot;size16&quot;&gt;그래서 QLoRA에서는 다음 방법들을 사용해 오차를 줄입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;NF4 사용
block-wise quantization
double quantization
LoRA adapter로 task-specific 보정&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;5340&quot; data-start=&quot;5337&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;5381&quot; data-start=&quot;5342&quot; data-section-id=&quot;10anaf0&quot;&gt;10. 왜 base model을 4-bit로 줄여도 학습이 가능한가&lt;/h1&gt;
&lt;p data-end=&quot;5393&quot; data-start=&quot;5383&quot; data-ke-size=&quot;size16&quot;&gt;중요한 질문입니다.&lt;/p&gt;
&lt;p data-end=&quot;5432&quot; data-start=&quot;5395&quot; data-ke-size=&quot;size16&quot;&gt;QLoRA에서는 base model 전체를 새로 학습하지 않습니다.&lt;/p&gt;
&lt;p data-end=&quot;5446&quot; data-start=&quot;5434&quot; data-ke-size=&quot;size16&quot;&gt;대신 다음처럼 합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;armasm&quot;&gt;&lt;code&gt;base model = 4-bit로 압축하고 고정
LoRA adapter = 새로 학습&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;5604&quot; data-start=&quot;5510&quot; data-ke-size=&quot;size16&quot;&gt;즉, base model은 이미 많은 언어 지식과 일반 능력을 가지고 있습니다.&lt;br /&gt;4-bit로 줄이면 약간의 정밀도 손실은 있지만, 기본 능력은 상당 부분 유지됩니다.&lt;/p&gt;
&lt;p data-end=&quot;5643&quot; data-start=&quot;5606&quot; data-ke-size=&quot;size16&quot;&gt;그 위에 LoRA adapter가 작업에 필요한 조정을 추가합니다.&lt;/p&gt;
&lt;p data-end=&quot;5647&quot; data-start=&quot;5645&quot; data-ke-size=&quot;size16&quot;&gt;예:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;excel&quot;&gt;&lt;code&gt;base model:
일반 언어 이해, 문법, 문맥 이해, 의료 용어 일부 이해

LoRA adapter:
이 프로젝트의 출력 형식, relevant/type/summary 판단 방식, clinical agenda extraction 방식 학습&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;5856&quot; data-start=&quot;5799&quot; data-ke-size=&quot;size16&quot;&gt;따라서 base model을 4-bit로 줄여도 adapter가 특정 작업에 맞게 보정할 수 있습니다.&lt;/p&gt;
&lt;hr data-end=&quot;5861&quot; data-start=&quot;5858&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;5911&quot; data-start=&quot;5863&quot; data-section-id=&quot;1h47ga1&quot;&gt;11. QLoRA에서 &amp;ldquo;base model을 4-bit로 양자화한다&amp;rdquo;의 정확한 의미&lt;/h1&gt;
&lt;p data-end=&quot;5932&quot; data-start=&quot;5913&quot; data-ke-size=&quot;size16&quot;&gt;이 문장은 다음을 모두 포함합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;1. 사전학습된 원본 LLM을 준비한다.
2. LLM 내부의 weight들을 대상으로 한다.
3. FP16/BF16/FP32 weight를 4-bit 코드로 압축한다.
4. 코드와 scale 정보를 저장한다.
5. 학습 중 base model weight는 고정한다.
6. forward 계산 때는 필요한 weight를 dequantize해서 사용한다.
7. 실제 업데이트는 LoRA adapter에만 적용한다.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;6251&quot; data-start=&quot;6178&quot; data-ke-size=&quot;size16&quot;&gt;따라서 단순히 &amp;ldquo;파일 크기를 줄인다&amp;rdquo;가 아니라, &lt;b&gt;학습 가능한 구조를 유지하면서 원본 모델의 메모리 점유를 줄이는 절차&lt;/b&gt;입니다.&lt;/p&gt;
&lt;hr data-end=&quot;6256&quot; data-start=&quot;6253&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;6282&quot; data-start=&quot;6258&quot; data-section-id=&quot;mblfbc&quot;&gt;12. 쉬운 비유 1: 고화질 사진 압축&lt;/h1&gt;
&lt;p data-end=&quot;6315&quot; data-start=&quot;6284&quot; data-ke-size=&quot;size16&quot;&gt;Base model을 고화질 사진이라고 생각하면 됩니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;원본 모델 = 4K 고화질 사진
4-bit 양자화 = 압축된 JPG 사진&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;6400&quot; data-start=&quot;6371&quot; data-ke-size=&quot;size16&quot;&gt;고화질 사진은 정보가 아주 풍부하지만 용량이 큽니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;장점: 선명함
단점: 용량 큼&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;6448&quot; data-start=&quot;6432&quot; data-ke-size=&quot;size16&quot;&gt;압축 사진은 용량이 작습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;장점: 저장하기 쉬움
단점: 약간 흐려짐&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;6527&quot; data-start=&quot;6486&quot; data-ke-size=&quot;size16&quot;&gt;QLoRA는 이 압축 사진 위에 작은 보정 레이어를 붙이는 것과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;erlang&quot;&gt;&lt;code&gt;압축된 사진은 그대로 둔다.
사진 전체를 다시 그리지 않는다.
필요한 부분만 작은 보정 스티커로 수정한다.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;6605&quot; data-start=&quot;6602&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;6633&quot; data-start=&quot;6607&quot; data-section-id=&quot;1eupu2v&quot;&gt;13. 쉬운 비유 2: 두꺼운 교과서 요약본&lt;/h1&gt;
&lt;p data-end=&quot;6658&quot; data-start=&quot;6635&quot; data-ke-size=&quot;size16&quot;&gt;Base model은 두꺼운 교과서입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;base model = 1000페이지짜리 교과서&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;6740&quot; data-start=&quot;6700&quot; data-ke-size=&quot;size16&quot;&gt;4-bit 양자화는 이 교과서를 압축 요약본으로 만드는 것과 비슷합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;erlang&quot;&gt;&lt;code&gt;원본 교과서 = 자세하고 무겁다.
압축 요약본 = 가볍고 들고 다니기 쉽다.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;6822&quot; data-start=&quot;6798&quot; data-ke-size=&quot;size16&quot;&gt;하지만 요약본은 일부 세부사항이 줄어듭니다.&lt;/p&gt;
&lt;p data-end=&quot;6872&quot; data-start=&quot;6824&quot; data-ke-size=&quot;size16&quot;&gt;QLoRA에서는 이 요약본을 직접 고치지 않습니다.&lt;br /&gt;대신 옆에 포스트잇을 붙입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;armasm&quot;&gt;&lt;code&gt;요약본 = 4-bit base model
포스트잇 = LoRA adapter&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;6965&quot; data-start=&quot;6930&quot; data-ke-size=&quot;size16&quot;&gt;포스트잇에는 특정 과목의 시험에 필요한 내용을 추가로 적습니다.&lt;/p&gt;
&lt;p data-end=&quot;6969&quot; data-start=&quot;6967&quot; data-ke-size=&quot;size16&quot;&gt;예:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;elm&quot;&gt;&lt;code&gt;이 프로젝트에서는 relevant/type/summary 형식으로 답해야 함
medication은 약물, 용량, 복약순응도 정보일 때 사용
follow_up은 검사, 처방, 재방문 계획일 때 사용&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;7155&quot; data-start=&quot;7094&quot; data-ke-size=&quot;size16&quot;&gt;즉, 교과서 전체를 다시 쓰는 것이 아니라, &lt;b&gt;압축된 교과서 + 시험용 포스트잇&lt;/b&gt;으로 학습하는 방식입니다.&lt;/p&gt;
&lt;hr data-end=&quot;7160&quot; data-start=&quot;7157&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;7192&quot; data-start=&quot;7162&quot; data-section-id=&quot;x2mg9x&quot;&gt;14. 쉬운 비유 3: 큰 기계를 압축 모드로 실행&lt;/h1&gt;
&lt;p data-end=&quot;7223&quot; data-start=&quot;7194&quot; data-ke-size=&quot;size16&quot;&gt;Base model을 거대한 기계라고 생각하겠습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;armasm&quot;&gt;&lt;code&gt;base model = 거대한 언어 처리 기계&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;7283&quot; data-start=&quot;7264&quot; data-ke-size=&quot;size16&quot;&gt;원래는 고성능 부품으로 움직입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;armasm&quot;&gt;&lt;code&gt;FP16/BF16 weight = 정밀한 고성능 부품&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;7366&quot; data-start=&quot;7328&quot; data-ke-size=&quot;size16&quot;&gt;4-bit 양자화는 부품을 더 작고 가벼운 버전으로 바꾸는 것입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;4-bit weight = 작고 가벼운 부품&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;7436&quot; data-start=&quot;7406&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 하면 기계가 차지하는 공간과 무게가 줄어듭니다.&lt;/p&gt;
&lt;p data-end=&quot;7463&quot; data-start=&quot;7438&quot; data-ke-size=&quot;size16&quot;&gt;하지만 기계 전체를 새로 제작하지는 않습니다.&lt;/p&gt;
&lt;p data-end=&quot;7491&quot; data-start=&quot;7465&quot; data-ke-size=&quot;size16&quot;&gt;QLoRA는 여기에 작은 조절 장치를 붙입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;ebnf&quot;&gt;&lt;code&gt;LoRA adapter = 작은 조절 장치&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;7582&quot; data-start=&quot;7530&quot; data-ke-size=&quot;size16&quot;&gt;기계 본체는 그대로 쓰고, 조절 장치만 학습해서 특정 작업에 맞게 작동하도록 만드는 것입니다.&lt;/p&gt;
&lt;hr data-end=&quot;7587&quot; data-start=&quot;7584&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;7600&quot; data-start=&quot;7589&quot; data-section-id=&quot;knpdss&quot;&gt;15. 핵심 요약&lt;/h1&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;armasm&quot;&gt;&lt;code&gt;base model을 4-bit로 양자화한다&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;7653&quot; data-start=&quot;7640&quot; data-ke-size=&quot;size16&quot;&gt;는 말은 다음 뜻입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;mipsasm&quot;&gt;&lt;code&gt;LLM 내부의 거대한 weight 숫자들을 4-bit 코드로 압축해서,
모델을 훨씬 적은 메모리로 저장하고 실행할 수 있게 만드는 과정&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;7754&quot; data-start=&quot;7744&quot; data-ke-size=&quot;size16&quot;&gt;대상은 다음입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;stan&quot;&gt;&lt;code&gt;base model 내부의 weight matrix&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;7808&quot; data-start=&quot;7798&quot; data-ke-size=&quot;size16&quot;&gt;과정은 다음입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;armasm&quot;&gt;&lt;code&gt;FP16/BF16 weight 준비
&amp;rarr; weight 분포 확인
&amp;rarr; 4-bit 대표값 또는 codebook 설정
&amp;rarr; 각 weight를 4-bit code로 변환
&amp;rarr; scale 정보 저장
&amp;rarr; 계산 시 dequantize해서 사용&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;7968&quot; data-start=&quot;7949&quot; data-ke-size=&quot;size16&quot;&gt;QLoRA에서의 목적은 다음입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;큰 모델을 작은 메모리에 올리고,
원본 모델은 고정한 채,
LoRA adapter만 학습하기 위해&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;8054&quot; data-start=&quot;8038&quot; data-ke-size=&quot;size16&quot;&gt;가장 쉬운 비유는 다음입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;원본 모델 = 두꺼운 교과서
4-bit 양자화 = 가벼운 요약본
LoRA adapter = 시험에 맞춘 포스트잇
QLoRA = 요약본은 그대로 두고, 포스트잇만 학습하는 방식&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>AL,ML 학부연구생/공부 기록</category>
      <category>qlora</category>
      <author>김형준</author>
      <guid isPermaLink="true">https://devreco.tistory.com/34</guid>
      <comments>https://devreco.tistory.com/34#entry34comment</comments>
      <pubDate>Tue, 19 May 2026 18:18:42 +0900</pubDate>
    </item>
    <item>
      <title>metrics.py 평가 지표들 (ROUGE-1/2/L, BERT Score, BELU Score, P/R/F1, Agenda Completeness, Linking/Mentioned/Resolution Accuracy)</title>
      <link>https://devreco.tistory.com/33</link>
      <description>&lt;h1 data-end=&quot;246&quot; data-start=&quot;214&quot; data-section-id=&quot;7pdvxt&quot;&gt;1. ROUGE-1 / ROUGE-2 / ROUGE-L&lt;/h1&gt;
&lt;p data-end=&quot;307&quot; data-start=&quot;248&quot; data-ke-size=&quot;size16&quot;&gt;구현:&lt;br /&gt;compute_rouge()&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;scorer = rouge_scorer.RougeScorer(
    [&quot;rouge1&quot;, &quot;rouge2&quot;, &quot;rougeL&quot;],
    use_stemmer=True
)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-end=&quot;423&quot; data-start=&quot;418&quot; data-section-id=&quot;1me8w8&quot; data-ke-size=&quot;size26&quot;&gt;정의&lt;/h2&gt;
&lt;p data-end=&quot;505&quot; data-start=&quot;425&quot; data-ke-size=&quot;size16&quot;&gt;모델이 생성한 summary(prediction)와 정답 summary(reference)가 얼마나 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;단어 수준에서 겹치는지&lt;/span&gt; 측정하는 지표입니다.&lt;/p&gt;
&lt;p data-end=&quot;551&quot; data-start=&quot;507&quot; data-ke-size=&quot;size16&quot;&gt;Clinical summarization에서 가장 전통적으로 쓰이는 평가입니다.&lt;/p&gt;
&lt;hr data-end=&quot;556&quot; data-start=&quot;553&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;567&quot; data-start=&quot;558&quot; data-section-id=&quot;mtw0wg&quot;&gt;ROUGE-1&lt;/h1&gt;
&lt;h2 data-end=&quot;574&quot; data-start=&quot;569&quot; data-section-id=&quot;1mbsn9&quot; data-ke-size=&quot;size26&quot;&gt;의미&lt;/h2&gt;
&lt;p data-end=&quot;600&quot; data-start=&quot;576&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;1-gram(단어 1개 단위) overlap&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;610&quot; data-start=&quot;607&quot; data-ke-size=&quot;size16&quot;&gt;정답:&lt;/p&gt;
&lt;blockquote data-end=&quot;647&quot; data-start=&quot;611&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;647&quot; data-start=&quot;613&quot; data-ke-size=&quot;size16&quot;&gt;&quot;persistent cough for three weeks&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;652&quot; data-start=&quot;649&quot; data-ke-size=&quot;size16&quot;&gt;예측:&lt;/p&gt;
&lt;blockquote data-end=&quot;682&quot; data-start=&quot;653&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;682&quot; data-start=&quot;655&quot; data-ke-size=&quot;size16&quot;&gt;&quot;cough lasting three weeks&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;690&quot; data-start=&quot;684&quot; data-ke-size=&quot;size16&quot;&gt;공통 단어:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;714&quot; data-start=&quot;691&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;698&quot; data-start=&quot;691&quot; data-section-id=&quot;16c04da&quot;&gt;cough&lt;/li&gt;
&lt;li data-end=&quot;706&quot; data-start=&quot;699&quot; data-section-id=&quot;16mn486&quot;&gt;three&lt;/li&gt;
&lt;li data-end=&quot;714&quot; data-start=&quot;707&quot; data-section-id=&quot;16q8tl3&quot;&gt;weeks&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;741&quot; data-start=&quot;716&quot; data-ke-size=&quot;size16&quot;&gt;같은 단어가 얼마나 많이 겹치는지 평가합니다.&lt;/p&gt;
&lt;h2 data-end=&quot;757&quot; data-start=&quot;748&quot; data-section-id=&quot;8cw63n&quot; data-ke-size=&quot;size26&quot;&gt;평가하는 것&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;799&quot; data-start=&quot;759&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;773&quot; data-start=&quot;759&quot; data-section-id=&quot;1tyg6g9&quot;&gt;핵심 키워드 보존 여부&lt;/li&gt;
&lt;li data-end=&quot;799&quot; data-start=&quot;774&quot; data-section-id=&quot;1plcawo&quot;&gt;중요한 clinical term 포함 여부&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;803&quot; data-start=&quot;801&quot; data-ke-size=&quot;size16&quot;&gt;즉:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;848&quot; data-start=&quot;804&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;811&quot; data-start=&quot;804&quot; data-section-id=&quot;16c04da&quot;&gt;cough&lt;/li&gt;
&lt;li data-end=&quot;822&quot; data-start=&quot;812&quot; data-section-id=&quot;10uh3cx&quot;&gt;diabetes&lt;/li&gt;
&lt;li data-end=&quot;835&quot; data-start=&quot;823&quot; data-section-id=&quot;mytlp3&quot;&gt;chest pain&lt;/li&gt;
&lt;li data-end=&quot;848&quot; data-start=&quot;836&quot; data-section-id=&quot;1js7f75&quot;&gt;lisinopril&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;876&quot; data-start=&quot;850&quot; data-ke-size=&quot;size16&quot;&gt;같은 의료 핵심 단어를 잘 잡았는지 평가합니다.&lt;/p&gt;
&lt;hr data-end=&quot;881&quot; data-start=&quot;878&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;892&quot; data-start=&quot;883&quot; data-section-id=&quot;mtw0wj&quot;&gt;ROUGE-2&lt;/h1&gt;
&lt;h2 data-end=&quot;899&quot; data-start=&quot;894&quot; data-section-id=&quot;1mbsn9&quot; data-ke-size=&quot;size26&quot;&gt;의미&lt;/h2&gt;
&lt;p data-end=&quot;925&quot; data-start=&quot;901&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;2-gram(연속된 두 단어) overlap&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;930&quot; data-start=&quot;927&quot; data-ke-size=&quot;size16&quot;&gt;예시:&lt;/p&gt;
&lt;p data-end=&quot;935&quot; data-start=&quot;932&quot; data-ke-size=&quot;size16&quot;&gt;정답:&lt;/p&gt;
&lt;blockquote data-end=&quot;960&quot; data-start=&quot;936&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;960&quot; data-start=&quot;938&quot; data-ke-size=&quot;size16&quot;&gt;&quot;chest pain worsening&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;965&quot; data-start=&quot;962&quot; data-ke-size=&quot;size16&quot;&gt;예측:&lt;/p&gt;
&lt;blockquote data-end=&quot;991&quot; data-start=&quot;966&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;991&quot; data-start=&quot;968&quot; data-ke-size=&quot;size16&quot;&gt;&quot;chest pain increasing&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;1003&quot; data-start=&quot;993&quot; data-ke-size=&quot;size16&quot;&gt;공통 bigram:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1016&quot; data-start=&quot;1004&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1016&quot; data-start=&quot;1004&quot; data-section-id=&quot;mytlp3&quot;&gt;chest pain&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-end=&quot;1032&quot; data-start=&quot;1023&quot; data-section-id=&quot;8cw63n&quot; data-ke-size=&quot;size26&quot;&gt;평가하는 것&lt;/h2&gt;
&lt;p data-end=&quot;1073&quot; data-start=&quot;1034&quot; data-ke-size=&quot;size16&quot;&gt;단순 단어가 아니라 문장 구조와 phrase 수준 일치성을 평가합니다.&lt;/p&gt;
&lt;p data-end=&quot;1093&quot; data-start=&quot;1075&quot; data-ke-size=&quot;size16&quot;&gt;ROUGE-1보다 더 엄격합니다.&lt;/p&gt;
&lt;p data-end=&quot;1111&quot; data-start=&quot;1095&quot; data-ke-size=&quot;size16&quot;&gt;clinical phrase:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1163&quot; data-start=&quot;1112&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1124&quot; data-start=&quot;1112&quot; data-section-id=&quot;mytlp3&quot;&gt;chest pain&lt;/li&gt;
&lt;li data-end=&quot;1146&quot; data-start=&quot;1125&quot; data-section-id=&quot;1xi70y8&quot;&gt;shortness of breath&lt;/li&gt;
&lt;li data-end=&quot;1163&quot; data-start=&quot;1147&quot; data-section-id=&quot;xkcgsn&quot;&gt;blood pressure&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1186&quot; data-start=&quot;1165&quot; data-ke-size=&quot;size16&quot;&gt;같은 표현을 정확히 재현했는지 봅니다.&lt;/p&gt;
&lt;hr data-end=&quot;1191&quot; data-start=&quot;1188&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;1202&quot; data-start=&quot;1193&quot; data-section-id=&quot;mtw0z1&quot;&gt;ROUGE-L&lt;/h1&gt;
&lt;h2 data-end=&quot;1209&quot; data-start=&quot;1204&quot; data-section-id=&quot;1mbsn9&quot; data-ke-size=&quot;size26&quot;&gt;의미&lt;/h2&gt;
&lt;p data-end=&quot;1240&quot; data-start=&quot;1211&quot; data-ke-size=&quot;size16&quot;&gt;Longest Common Subsequence 기반&lt;/p&gt;
&lt;p data-end=&quot;1289&quot; data-start=&quot;1242&quot; data-ke-size=&quot;size16&quot;&gt;즉:&lt;br /&gt;문장 순서를 유지하면서 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;얼마나 긴 공통 sequence&lt;/span&gt;가 존재하는지 평가합니다.&lt;/p&gt;
&lt;h2 data-end=&quot;1305&quot; data-start=&quot;1296&quot; data-section-id=&quot;8cw63n&quot; data-ke-size=&quot;size26&quot;&gt;평가하는 것&lt;/h2&gt;
&lt;p data-end=&quot;1319&quot; data-start=&quot;1307&quot; data-ke-size=&quot;size16&quot;&gt;문장 전체 구조 유사성&lt;/p&gt;
&lt;p data-end=&quot;1324&quot; data-start=&quot;1321&quot; data-ke-size=&quot;size16&quot;&gt;예시:&lt;/p&gt;
&lt;p data-end=&quot;1329&quot; data-start=&quot;1326&quot; data-ke-size=&quot;size16&quot;&gt;정답:&lt;/p&gt;
&lt;blockquote data-end=&quot;1369&quot; data-start=&quot;1330&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;1369&quot; data-start=&quot;1332&quot; data-ke-size=&quot;size16&quot;&gt;patient reports cough for three weeks&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;1374&quot; data-start=&quot;1371&quot; data-ke-size=&quot;size16&quot;&gt;예측:&lt;/p&gt;
&lt;blockquote data-end=&quot;1421&quot; data-start=&quot;1375&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;1421&quot; data-start=&quot;1377&quot; data-ke-size=&quot;size16&quot;&gt;patient reports severe cough for three weeks&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;1438&quot; data-start=&quot;1423&quot; data-ke-size=&quot;size16&quot;&gt;공통 subsequence:&lt;/p&gt;
&lt;blockquote data-end=&quot;1478&quot; data-start=&quot;1439&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;1478&quot; data-start=&quot;1441&quot; data-ke-size=&quot;size16&quot;&gt;patient reports cough for three weeks&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;1500&quot; data-start=&quot;1480&quot; data-ke-size=&quot;size16&quot;&gt;길이가 길기 때문에 점수가 높습니다.&lt;/p&gt;
&lt;h1 data-end=&quot;1513&quot; data-start=&quot;1507&quot; data-section-id=&quot;1y89ric&quot;&gt;값 범위&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1537&quot; data-start=&quot;1520&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1527&quot; data-start=&quot;1520&quot; data-section-id=&quot;15c5zkn&quot;&gt;0 ~ 1&lt;/li&gt;
&lt;li data-end=&quot;1537&quot; data-start=&quot;1528&quot; data-section-id=&quot;11mm2vw&quot;&gt;높을수록 좋음&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 data-end=&quot;1588&quot; data-start=&quot;1575&quot; data-section-id=&quot;lvj48z&quot;&gt;이 프로젝트에서 의미&lt;/h1&gt;
&lt;p data-end=&quot;1606&quot; data-start=&quot;1590&quot; data-ke-size=&quot;size16&quot;&gt;Agenda summary가:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1654&quot; data-start=&quot;1607&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1633&quot; data-start=&quot;1607&quot; data-section-id=&quot;u6lme1&quot;&gt;ground truth annotation과&lt;/li&gt;
&lt;li data-end=&quot;1654&quot; data-start=&quot;1634&quot; data-section-id=&quot;lyetrd&quot;&gt;lexical하게 얼마나 비슷한지&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1662&quot; data-start=&quot;1656&quot; data-ke-size=&quot;size16&quot;&gt;평가합니다.&lt;/p&gt;
&lt;p data-end=&quot;1685&quot; data-start=&quot;1664&quot; data-ke-size=&quot;size16&quot;&gt;즉: &lt;span style=&quot;background-color: #f6e199;&quot;&gt;&quot;문장을 얼마나 비슷하게 썼는가&quot;&lt;/span&gt;&lt;/p&gt;
&lt;hr data-end=&quot;1690&quot; data-start=&quot;1687&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;1706&quot; data-start=&quot;1692&quot; data-section-id=&quot;1v13doz&quot;&gt;2. BERTScore&lt;/h1&gt;
&lt;p data-end=&quot;1771&quot; data-start=&quot;1708&quot; data-ke-size=&quot;size16&quot;&gt;구현: compute_bertscore()&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;score(... model_type=&quot;microsoft/deberta-xlarge-mnli&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h1 data-end=&quot;1851&quot; data-start=&quot;1847&quot; data-section-id=&quot;yilubv&quot;&gt;정의&lt;/h1&gt;
&lt;p data-end=&quot;1927&quot; data-start=&quot;1853&quot; data-ke-size=&quot;size16&quot;&gt;ROUGE는 단어가 정확히 같아야 높은 점수가 나오지만,&lt;br /&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;BERTScore는 의미(semantic similarity)를 평가&lt;/span&gt;합니다.&lt;/p&gt;
&lt;p data-end=&quot;1981&quot; data-start=&quot;1929&quot; data-ke-size=&quot;size16&quot;&gt;Transformer embedding 공간에서 cosine similarity를 계산합니다.&lt;/p&gt;
&lt;h1 data-end=&quot;1992&quot; data-start=&quot;1988&quot; data-section-id=&quot;yik08i&quot;&gt;예시&lt;/h1&gt;
&lt;p data-end=&quot;1997&quot; data-start=&quot;1994&quot; data-ke-size=&quot;size16&quot;&gt;정답:&lt;/p&gt;
&lt;blockquote data-end=&quot;2022&quot; data-start=&quot;1998&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;2022&quot; data-start=&quot;2000&quot; data-ke-size=&quot;size16&quot;&gt;patient has chest pain&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;2027&quot; data-start=&quot;2024&quot; data-ke-size=&quot;size16&quot;&gt;예측:&lt;/p&gt;
&lt;blockquote data-end=&quot;2065&quot; data-start=&quot;2028&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;2065&quot; data-start=&quot;2030&quot; data-ke-size=&quot;size16&quot;&gt;patient reports thoracic discomfort&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;2073&quot; data-start=&quot;2067&quot; data-ke-size=&quot;size16&quot;&gt;ROUGE:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2081&quot; data-start=&quot;2074&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2081&quot; data-start=&quot;2074&quot; data-section-id=&quot;1wyffcy&quot;&gt;거의 낮음&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;2093&quot; data-start=&quot;2083&quot; data-ke-size=&quot;size16&quot;&gt;BERTScore:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2108&quot; data-start=&quot;2094&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2108&quot; data-start=&quot;2094&quot; data-section-id=&quot;s26foh&quot;&gt;의미가 비슷하므로 높음&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 data-end=&quot;2123&quot; data-start=&quot;2115&quot; data-section-id=&quot;16hrbz4&quot;&gt;평가하는 것&lt;/h1&gt;
&lt;p data-end=&quot;2145&quot; data-start=&quot;2125&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;Semantic correctness&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2185&quot; data-start=&quot;2150&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2157&quot; data-start=&quot;2150&quot; data-section-id=&quot;1y4e8mg&quot;&gt;의미 보존&lt;/li&gt;
&lt;li data-end=&quot;2173&quot; data-start=&quot;2158&quot; data-section-id=&quot;1xb5unq&quot;&gt;paraphrase 허용&lt;/li&gt;
&lt;li data-end=&quot;2185&quot; data-start=&quot;2174&quot; data-section-id=&quot;1lxojik&quot;&gt;의학적 의미 일치&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;2195&quot; data-start=&quot;2187&quot; data-ke-size=&quot;size16&quot;&gt;를 평가합니다.&lt;/p&gt;
&lt;h1 data-end=&quot;2209&quot; data-start=&quot;2202&quot; data-section-id=&quot;11ymtuu&quot;&gt;계산 방식&lt;/h1&gt;
&lt;p data-end=&quot;2217&quot; data-start=&quot;2211&quot; data-ke-size=&quot;size16&quot;&gt;대략적으로:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;2311&quot; data-start=&quot;2219&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;2235&quot; data-start=&quot;2219&quot; data-section-id=&quot;1ehunzg&quot;&gt;문장을 embedding&lt;/li&gt;
&lt;li data-end=&quot;2267&quot; data-start=&quot;2236&quot; data-section-id=&quot;13bua8a&quot;&gt;token 간 cosine similarity 계산&lt;/li&gt;
&lt;li data-end=&quot;2285&quot; data-start=&quot;2268&quot; data-section-id=&quot;18i3zpj&quot;&gt;최적 matching 수행&lt;/li&gt;
&lt;li data-end=&quot;2311&quot; data-start=&quot;2286&quot; data-section-id=&quot;16t7icf&quot;&gt;precision/recall/F1 계산&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 data-end=&quot;2323&quot; data-start=&quot;2318&quot; data-section-id=&quot;2jy4dp&quot;&gt;출력값&lt;/h1&gt;
&lt;p data-end=&quot;2329&quot; data-start=&quot;2325&quot; data-ke-size=&quot;size16&quot;&gt;원래는:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2355&quot; data-start=&quot;2330&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2341&quot; data-start=&quot;2330&quot; data-section-id=&quot;1s5h3ha&quot;&gt;Precision&lt;/li&gt;
&lt;li data-end=&quot;2350&quot; data-start=&quot;2342&quot; data-section-id=&quot;72gs3h&quot;&gt;Recall&lt;/li&gt;
&lt;li data-end=&quot;2355&quot; data-start=&quot;2351&quot; data-section-id=&quot;yhmtun&quot;&gt;F1&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;2366&quot; data-start=&quot;2357&quot; data-ke-size=&quot;size16&quot;&gt;하지만 현재는&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;return F1.mean().item()&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2468&quot; data-start=&quot;2422&quot; data-ke-size=&quot;size16&quot;&gt;semantic similarity F1 하나만 반환합니다.&lt;/p&gt;
&lt;h1 data-end=&quot;2527&quot; data-start=&quot;2521&quot; data-section-id=&quot;1y89ric&quot;&gt;값 범위&lt;/h1&gt;
&lt;p data-end=&quot;2532&quot; data-start=&quot;2529&quot; data-ke-size=&quot;size16&quot;&gt;보통:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2574&quot; data-start=&quot;2533&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2540&quot; data-start=&quot;2533&quot; data-section-id=&quot;15c5zkn&quot;&gt;0 ~ 1&lt;/li&gt;
&lt;li data-end=&quot;2574&quot; data-start=&quot;2541&quot; data-section-id=&quot;kua67f&quot;&gt;clinical task에서는 0.80 이상이면 꽤 높음&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 data-end=&quot;2594&quot; data-start=&quot;2581&quot; data-section-id=&quot;lvj48z&quot;&gt;이 프로젝트에서 의미&lt;/h1&gt;
&lt;p data-end=&quot;2600&quot; data-start=&quot;2596&quot; data-ke-size=&quot;size16&quot;&gt;모델이:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2630&quot; data-start=&quot;2601&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2615&quot; data-start=&quot;2601&quot; data-section-id=&quot;1jd930y&quot;&gt;wording은 달라도&lt;/li&gt;
&lt;li data-end=&quot;2630&quot; data-start=&quot;2616&quot; data-section-id=&quot;rtt4wd&quot;&gt;임상 의미를 유지했는지&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;2638&quot; data-start=&quot;2632&quot; data-ke-size=&quot;size16&quot;&gt;평가합니다.&lt;/p&gt;
&lt;p data-end=&quot;2680&quot; data-start=&quot;2640&quot; data-ke-size=&quot;size16&quot;&gt;ROUGE보다 clinical summarization에 더 중요합니다.&lt;/p&gt;
&lt;hr data-end=&quot;2685&quot; data-start=&quot;2682&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;2735&quot; data-start=&quot;2687&quot; data-section-id=&quot;161upp2&quot;&gt;3. BLEU Score&lt;/h1&gt;
&lt;h2 data-end=&quot;19&quot; data-start=&quot;14&quot; data-section-id=&quot;1me8w8&quot; data-ke-size=&quot;size26&quot;&gt;정의&lt;/h2&gt;
&lt;p data-end=&quot;132&quot; data-start=&quot;21&quot; data-ke-size=&quot;size16&quot;&gt;BLEU(BiLingual Evaluation Understudy)는&lt;br /&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;모델이 생성한 문장이 정답 문장과 얼마나 정확하게 n-gram 수준에서 일치하는지 평가하는 precision 기반 지표&lt;/span&gt;입니다.&lt;/p&gt;
&lt;h1 data-end=&quot;257&quot; data-start=&quot;253&quot; data-section-id=&quot;yijveu&quot;&gt;의미&lt;/h1&gt;
&lt;p data-end=&quot;266&quot; data-start=&quot;259&quot; data-ke-size=&quot;size16&quot;&gt;모델 출력이:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;307&quot; data-start=&quot;268&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;276&quot; data-start=&quot;268&quot; data-section-id=&quot;115rris&quot;&gt;정답 표현을&lt;/li&gt;
&lt;li data-end=&quot;287&quot; data-start=&quot;277&quot; data-section-id=&quot;1hw9uds&quot;&gt;얼마나 정확하게&lt;/li&gt;
&lt;li data-end=&quot;307&quot; data-start=&quot;288&quot; data-section-id=&quot;3ie6ks&quot;&gt;같은 단어 순서와 phrase로&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;322&quot; data-start=&quot;309&quot; data-ke-size=&quot;size16&quot;&gt;재현했는가를 평가합니다.&lt;/p&gt;
&lt;h1 data-end=&quot;336&quot; data-start=&quot;329&quot; data-section-id=&quot;1rz7p7n&quot;&gt;평가 단위&lt;/h1&gt;
&lt;p data-end=&quot;347&quot; data-start=&quot;338&quot; data-ke-size=&quot;size16&quot;&gt;BLEU는 보통:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;413&quot; data-start=&quot;349&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;367&quot; data-start=&quot;349&quot; data-section-id=&quot;12iw8cn&quot;&gt;unigram (1-gram)&lt;/li&gt;
&lt;li data-end=&quot;385&quot; data-start=&quot;368&quot; data-section-id=&quot;1afk04d&quot;&gt;bigram (2-gram)&lt;/li&gt;
&lt;li data-end=&quot;404&quot; data-start=&quot;386&quot; data-section-id=&quot;h216go&quot;&gt;trigram (3-gram)&lt;/li&gt;
&lt;li data-end=&quot;413&quot; data-start=&quot;405&quot; data-section-id=&quot;gwtaaw&quot;&gt;4-gram&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;437&quot; data-start=&quot;415&quot; data-ke-size=&quot;size16&quot;&gt;precision을 조합해서 계산합니다.&lt;/p&gt;
&lt;h1 data-end=&quot;451&quot; data-start=&quot;444&quot; data-section-id=&quot;11ymtuu&quot;&gt;계산 방식&lt;/h1&gt;
&lt;h2 data-end=&quot;478&quot; data-start=&quot;453&quot; data-section-id=&quot;j0yo76&quot; data-ke-size=&quot;size26&quot;&gt;1. n-gram precision 계산&lt;/h2&gt;
&lt;p data-end=&quot;488&quot; data-start=&quot;485&quot; data-ke-size=&quot;size16&quot;&gt;정답:&lt;/p&gt;
&lt;blockquote data-end=&quot;531&quot; data-start=&quot;489&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;531&quot; data-start=&quot;491&quot; data-ke-size=&quot;size16&quot;&gt;patient reports chest pain for two weeks&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;536&quot; data-start=&quot;533&quot; data-ke-size=&quot;size16&quot;&gt;예측:&lt;/p&gt;
&lt;blockquote data-end=&quot;585&quot; data-start=&quot;537&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;585&quot; data-start=&quot;539&quot; data-ke-size=&quot;size16&quot;&gt;patient reports chest discomfort for two weeks&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;598&quot; data-start=&quot;587&quot; data-ke-size=&quot;size16&quot;&gt;공통 unigram:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;646&quot; data-start=&quot;599&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;608&quot; data-start=&quot;599&quot; data-section-id=&quot;tvbxgb&quot;&gt;patient&lt;/li&gt;
&lt;li data-end=&quot;618&quot; data-start=&quot;609&quot; data-section-id=&quot;fy9hn9&quot;&gt;reports&lt;/li&gt;
&lt;li data-end=&quot;626&quot; data-start=&quot;619&quot; data-section-id=&quot;16c0pnl&quot;&gt;chest&lt;/li&gt;
&lt;li data-end=&quot;632&quot; data-start=&quot;627&quot; data-section-id=&quot;1o3t6b&quot;&gt;for&lt;/li&gt;
&lt;li data-end=&quot;638&quot; data-start=&quot;633&quot; data-section-id=&quot;1o41k4&quot;&gt;two&lt;/li&gt;
&lt;li data-end=&quot;646&quot; data-start=&quot;639&quot; data-section-id=&quot;16q8tl3&quot;&gt;weeks&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;658&quot; data-start=&quot;648&quot; data-ke-size=&quot;size16&quot;&gt;공통 bigram:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;698&quot; data-start=&quot;659&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;676&quot; data-start=&quot;659&quot; data-section-id=&quot;1idnsp2&quot;&gt;patient reports&lt;/li&gt;
&lt;li data-end=&quot;686&quot; data-start=&quot;677&quot; data-section-id=&quot;z9sffj&quot;&gt;for two&lt;/li&gt;
&lt;li data-end=&quot;698&quot; data-start=&quot;687&quot; data-section-id=&quot;fw2wff&quot;&gt;two weeks&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-end=&quot;741&quot; data-start=&quot;716&quot; data-section-id=&quot;1idigm&quot; data-ke-size=&quot;size26&quot;&gt;2. Brevity Penalty(BP)&lt;/h2&gt;
&lt;p data-end=&quot;773&quot; data-start=&quot;743&quot; data-ke-size=&quot;size16&quot;&gt;모델이 너무 짧은 문장을 출력하면 패널티를 부여합니다.&lt;/p&gt;
&lt;p data-end=&quot;778&quot; data-start=&quot;775&quot; data-ke-size=&quot;size16&quot;&gt;예시:&lt;/p&gt;
&lt;p data-end=&quot;783&quot; data-start=&quot;780&quot; data-ke-size=&quot;size16&quot;&gt;정답:&lt;/p&gt;
&lt;blockquote data-end=&quot;833&quot; data-start=&quot;784&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;833&quot; data-start=&quot;786&quot; data-ke-size=&quot;size16&quot;&gt;patient reports severe chest pain for two weeks&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;838&quot; data-start=&quot;835&quot; data-ke-size=&quot;size16&quot;&gt;예측:&lt;/p&gt;
&lt;blockquote data-end=&quot;851&quot; data-start=&quot;839&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;851&quot; data-start=&quot;841&quot; data-ke-size=&quot;size16&quot;&gt;chest pain&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;903&quot; data-start=&quot;853&quot; data-ke-size=&quot;size16&quot;&gt;precision만 보면 높을 수 있지만,&lt;br /&gt;정보를 과도하게 생략했으므로 penalty 적용&lt;/p&gt;
&lt;h1 data-end=&quot;968&quot; data-start=&quot;960&quot; data-section-id=&quot;16hrbz4&quot;&gt;평가하는 것&lt;/h1&gt;
&lt;div&gt;
&lt;div&gt;평가 요소설명
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1165&quot; data-start=&quot;970&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;1165&quot; data-start=&quot;995&quot;&gt;
&lt;tr data-end=&quot;1041&quot; data-start=&quot;995&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1004&quot; data-start=&quot;995&quot;&gt;표현 정확성&lt;/td&gt;
&lt;td data-end=&quot;1041&quot; data-start=&quot;1004&quot; data-col-size=&quot;sm&quot;&gt;annotation wording을 얼마나 정확히 따라했는가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1093&quot; data-start=&quot;1042&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1063&quot; data-start=&quot;1042&quot;&gt;phrase consistency&lt;/td&gt;
&lt;td data-end=&quot;1093&quot; data-start=&quot;1063&quot; data-col-size=&quot;sm&quot;&gt;clinical phrase를 제대로 재현했는가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1125&quot; data-start=&quot;1094&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1106&quot; data-start=&quot;1094&quot;&gt;문장 구조 유사성&lt;/td&gt;
&lt;td data-end=&quot;1125&quot; data-start=&quot;1106&quot; data-col-size=&quot;sm&quot;&gt;단어 순서와 연결이 유사한가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1165&quot; data-start=&quot;1126&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1146&quot; data-start=&quot;1126&quot;&gt;lexical precision&lt;/td&gt;
&lt;td data-end=&quot;1165&quot; data-start=&quot;1146&quot; data-col-size=&quot;sm&quot;&gt;불필요한 단어 생성이 적은가&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h1 data-end=&quot;1437&quot; data-start=&quot;1431&quot; data-section-id=&quot;1y89ric&quot;&gt;값 범위&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1461&quot; data-start=&quot;1444&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1451&quot; data-start=&quot;1444&quot; data-section-id=&quot;15c5zkn&quot;&gt;0 ~ 1&lt;/li&gt;
&lt;li data-end=&quot;1461&quot; data-start=&quot;1452&quot; data-section-id=&quot;11mm2vw&quot;&gt;높을수록 좋음&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 data-end=&quot;1566&quot; data-start=&quot;1553&quot; data-section-id=&quot;lvj48z&quot;&gt;이 프로젝트에서 의미&lt;/h1&gt;
&lt;p data-end=&quot;1584&quot; data-start=&quot;1568&quot; data-ke-size=&quot;size16&quot;&gt;Agenda summary가:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1630&quot; data-start=&quot;1586&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1613&quot; data-start=&quot;1586&quot; data-section-id=&quot;dzdveq&quot;&gt;human annotation wording과&lt;/li&gt;
&lt;li data-end=&quot;1630&quot; data-start=&quot;1614&quot; data-section-id=&quot;4us0ns&quot;&gt;얼마나 정확하게 일치하는가&lt;/li&gt;
&lt;li data-end=&quot;1673&quot; data-start=&quot;1643&quot; data-section-id=&quot;1kebh06&quot;&gt;annotation style consistency&lt;/li&gt;
&lt;li data-end=&quot;1682&quot; data-start=&quot;1674&quot; data-section-id=&quot;4481hd&quot;&gt;표현 정확성&lt;/li&gt;
&lt;li data-end=&quot;1706&quot; data-start=&quot;1683&quot; data-section-id=&quot;vui03s&quot;&gt;phrase-level fidelity&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 data-end=&quot;1750&quot; data-start=&quot;1726&quot; data-section-id=&quot;1ivm192&quot;&gt;ROUGE / BERTScore/ BELUScore&amp;nbsp; 차이&lt;/h1&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;정식 이름&lt;/td&gt;
&lt;td&gt;Recall-Oriented Understudy for Gisting Evaluation&lt;/td&gt;
&lt;td&gt;BERTScore&lt;/td&gt;
&lt;td&gt;BiLingual Evaluation Understudy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;핵심 목적&lt;/td&gt;
&lt;td&gt;정답 내용을 얼마나 많이 포함했는가&lt;/td&gt;
&lt;td&gt;의미가 얼마나 비슷한가&lt;/td&gt;
&lt;td&gt;정답 표현을 얼마나 정확히 따라했는가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;평가 중심&lt;/td&gt;
&lt;td&gt;Recall 중심&lt;/td&gt;
&lt;td&gt;Semantic similarity 중심&lt;/td&gt;
&lt;td&gt;Precision 중심&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;비교 방식&lt;/td&gt;
&lt;td&gt;단어 overlap&lt;/td&gt;
&lt;td&gt;embedding similarity&lt;/td&gt;
&lt;td&gt;n-gram precision&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;기반 기술&lt;/td&gt;
&lt;td&gt;문자열 비교&lt;/td&gt;
&lt;td&gt;Transformer/BERT embedding&lt;/td&gt;
&lt;td&gt;문자열 n-gram&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;의미 이해 가능?&lt;/td&gt;
&lt;td&gt;거의 불가능&lt;/td&gt;
&lt;td&gt;가능&lt;/td&gt;
&lt;td&gt;거의 불가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;단어가 달라도 의미 같으면?&lt;/td&gt;
&lt;td&gt;낮게 나옴&lt;/td&gt;
&lt;td&gt;높게 나옴&lt;/td&gt;
&lt;td&gt;낮게 나옴&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;문장 순서 영향&lt;/td&gt;
&lt;td&gt;있음&lt;/td&gt;
&lt;td&gt;상대적으로 적음&lt;/td&gt;
&lt;td&gt;매우 큼&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;paraphrase 허용&lt;/td&gt;
&lt;td&gt;약함&lt;/td&gt;
&lt;td&gt;강함&lt;/td&gt;
&lt;td&gt;매우 약함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;clinical NLP 적합성&lt;/td&gt;
&lt;td&gt;중간&lt;/td&gt;
&lt;td&gt;매우 높음&lt;/td&gt;
&lt;td&gt;낮은 편&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;summarization 적합성&lt;/td&gt;
&lt;td&gt;매우 많이 사용&lt;/td&gt;
&lt;td&gt;최근 가장 중요&lt;/td&gt;
&lt;td&gt;상대적으로 덜 사용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;translation 적합성&lt;/td&gt;
&lt;td&gt;중간&lt;/td&gt;
&lt;td&gt;중간&lt;/td&gt;
&lt;td&gt;매우 강함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;평가 대상&lt;/td&gt;
&lt;td&gt;정보 누락 여부&lt;/td&gt;
&lt;td&gt;의미 보존 여부&lt;/td&gt;
&lt;td&gt;표현 정확성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;잘 보는 것&lt;/td&gt;
&lt;td&gt;핵심 키워드 포함&lt;/td&gt;
&lt;td&gt;semantic correctness&lt;/td&gt;
&lt;td&gt;wording fidelity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;못 보는 것&lt;/td&gt;
&lt;td&gt;의미 유사성&lt;/td&gt;
&lt;td&gt;exact wording&lt;/td&gt;
&lt;td&gt;semantic paraphrase&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;계산 단위&lt;/td&gt;
&lt;td&gt;unigram/bigram/LCS&lt;/td&gt;
&lt;td&gt;contextual embedding&lt;/td&gt;
&lt;td&gt;1~4gram precision&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;대표 세부 지표&lt;/td&gt;
&lt;td&gt;ROUGE-1/2/L&lt;/td&gt;
&lt;td&gt;Precision/Recall/F1&lt;/td&gt;
&lt;td&gt;BLEU-1~4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;출력 범위&lt;/td&gt;
&lt;td&gt;0~1&lt;/td&gt;
&lt;td&gt;0~1&lt;/td&gt;
&lt;td&gt;0~1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;높을수록&lt;/td&gt;
&lt;td&gt;정답 내용을 많이 포함&lt;/td&gt;
&lt;td&gt;의미가 유사&lt;/td&gt;
&lt;td&gt;표현이 정확&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;계산 비용&lt;/td&gt;
&lt;td&gt;낮음&lt;/td&gt;
&lt;td&gt;높음&lt;/td&gt;
&lt;td&gt;낮음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;속도&lt;/td&gt;
&lt;td&gt;빠름&lt;/td&gt;
&lt;td&gt;느림&lt;/td&gt;
&lt;td&gt;빠름&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LLM 평가 적합성&lt;/td&gt;
&lt;td&gt;보통&lt;/td&gt;
&lt;td&gt;매우 높음&lt;/td&gt;
&lt;td&gt;제한적&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;hallucination 탐지&lt;/td&gt;
&lt;td&gt;어려움&lt;/td&gt;
&lt;td&gt;일부 가능&lt;/td&gt;
&lt;td&gt;어려움&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;semantic paraphrase 평가&lt;/td&gt;
&lt;td&gt;거의 불가&lt;/td&gt;
&lt;td&gt;매우 강함&lt;/td&gt;
&lt;td&gt;약함&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h1 data-end=&quot;2735&quot; data-start=&quot;2687&quot; data-section-id=&quot;161upp2&quot;&gt;4. Precision / Recall / F1 (Detection Metrics)&lt;/h1&gt;
&lt;p data-end=&quot;2808&quot; data-start=&quot;2737&quot; data-ke-size=&quot;size16&quot;&gt;구현: compute_detection_metrics()&lt;/p&gt;
&lt;h1 data-end=&quot;2824&quot; data-start=&quot;2815&quot; data-section-id=&quot;co3ehz&quot;&gt;무엇을 평가?&lt;/h1&gt;
&lt;p data-end=&quot;2845&quot; data-start=&quot;2826&quot; data-ke-size=&quot;size16&quot;&gt;이건 summary 품질이 아니라:&lt;/p&gt;
&lt;p data-end=&quot;2878&quot; data-start=&quot;2847&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&quot;이 utterance를 올바른 type으로 분류했는가&quot;&lt;/span&gt; 평가합니다.&lt;/p&gt;
&lt;h1 data-end=&quot;2899&quot; data-start=&quot;2893&quot; data-section-id=&quot;adgrbe&quot;&gt;클래스들&lt;/h1&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;ALL_CLASSES = [
    &quot;agenda_item&quot;,
    &quot;detail&quot;,
    &quot;medication&quot;,
    &quot;social_history&quot;,
    &quot;follow_up&quot;,
    &quot;question&quot;,
    &quot;question_unanswered&quot;,
    &quot;irrelevant&quot;
]&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;3126&quot; data-start=&quot;3123&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;3139&quot; data-start=&quot;3128&quot; data-section-id=&quot;1ifacls&quot;&gt;Precision&lt;/h1&gt;
&lt;h2 data-end=&quot;3146&quot; data-start=&quot;3141&quot; data-section-id=&quot;1me8w8&quot; data-ke-size=&quot;size26&quot;&gt;정의&lt;/h2&gt;
&lt;p data-end=&quot;3177&quot; data-start=&quot;3148&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;모델이 어떤 클래스로 예측한 것 중 실제로 맞은 비율&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;3182&quot; data-start=&quot;3179&quot; data-ke-size=&quot;size16&quot;&gt;수식: &lt;span&gt;&lt;span&gt;&lt;span&gt;Precision=TP / TP + FP&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 data-end=&quot;3233&quot; data-start=&quot;3228&quot; data-section-id=&quot;1maz01&quot; data-ke-size=&quot;size26&quot;&gt;예시&lt;/h2&gt;
&lt;p data-end=&quot;3239&quot; data-start=&quot;3235&quot; data-ke-size=&quot;size16&quot;&gt;모델이:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;3259&quot; data-start=&quot;3240&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;3259&quot; data-start=&quot;3240&quot; data-section-id=&quot;1tp147&quot;&gt;medication 10개 예측&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;3265&quot; data-start=&quot;3261&quot; data-ke-size=&quot;size16&quot;&gt;실제로:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;3282&quot; data-start=&quot;3266&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;3282&quot; data-start=&quot;3266&quot; data-section-id=&quot;h2mpkk&quot;&gt;7개만 medication&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;3306&quot; data-start=&quot;3284&quot; data-ke-size=&quot;size16&quot;&gt;Precision = 7/10 = 0.7&lt;/p&gt;
&lt;h2 data-end=&quot;3318&quot; data-start=&quot;3313&quot; data-section-id=&quot;1mbsn9&quot; data-ke-size=&quot;size26&quot;&gt;의미&lt;/h2&gt;
&lt;p data-end=&quot;3347&quot; data-start=&quot;3320&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;거짓 탐지(false positive)가 적은가?&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;3378&quot; data-start=&quot;3349&quot; data-ke-size=&quot;size16&quot;&gt;즉: &quot;쓸데없는 agenda를 얼마나 덜 만들었는가&quot;&lt;/p&gt;
&lt;hr data-end=&quot;3383&quot; data-start=&quot;3380&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;3393&quot; data-start=&quot;3385&quot; data-section-id=&quot;crtjw3&quot;&gt;Recall&lt;/h1&gt;
&lt;h2 data-end=&quot;3400&quot; data-start=&quot;3395&quot; data-section-id=&quot;1me8w8&quot; data-ke-size=&quot;size26&quot;&gt;정의&lt;/h2&gt;
&lt;p data-end=&quot;3425&quot; data-start=&quot;3402&quot; data-ke-size=&quot;size16&quot;&gt;실제 존재하는 항목 중&lt;br /&gt;모델이 찾아낸 비율&lt;/p&gt;
&lt;p data-end=&quot;3464&quot; data-start=&quot;3427&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;Recall = TP / TP + FN&lt;/span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 data-end=&quot;3476&quot; data-start=&quot;3471&quot; data-section-id=&quot;1maz01&quot; data-ke-size=&quot;size26&quot;&gt;예시&lt;/h2&gt;
&lt;p data-end=&quot;3492&quot; data-start=&quot;3478&quot; data-ke-size=&quot;size16&quot;&gt;실제 medication:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;3501&quot; data-start=&quot;3493&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;3501&quot; data-start=&quot;3493&quot; data-section-id=&quot;1y65tam&quot;&gt;20개 존재&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;3507&quot; data-start=&quot;3503&quot; data-ke-size=&quot;size16&quot;&gt;모델이:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;3516&quot; data-start=&quot;3508&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;3516&quot; data-start=&quot;3508&quot; data-section-id=&quot;xdips&quot;&gt;15개 발견&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;3539&quot; data-start=&quot;3518&quot; data-ke-size=&quot;size16&quot;&gt;Recall = 15/20 = 0.75&lt;/p&gt;
&lt;h2 data-end=&quot;3551&quot; data-start=&quot;3546&quot; data-section-id=&quot;1mbsn9&quot; data-ke-size=&quot;size26&quot;&gt;의미&lt;/h2&gt;
&lt;p data-end=&quot;3568&quot; data-start=&quot;3553&quot; data-ke-size=&quot;size16&quot;&gt;놓친 정보(FN)가 적은가?&lt;/p&gt;
&lt;p data-end=&quot;3591&quot; data-start=&quot;3570&quot; data-ke-size=&quot;size16&quot;&gt;clinical에서는 매우 중요합니다.&lt;/p&gt;
&lt;hr data-end=&quot;3596&quot; data-start=&quot;3593&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;3602&quot; data-start=&quot;3598&quot; data-section-id=&quot;yhla35&quot;&gt;F1&lt;/h1&gt;
&lt;h2 data-end=&quot;3609&quot; data-start=&quot;3604&quot; data-section-id=&quot;1me8w8&quot; data-ke-size=&quot;size26&quot;&gt;정의&lt;/h2&gt;
&lt;p data-end=&quot;3634&quot; data-start=&quot;3611&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;Precision과 Recall의 조화평균&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;3673&quot; data-start=&quot;3636&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;F1=2PR / P + R&lt;/span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 data-end=&quot;3685&quot; data-start=&quot;3680&quot; data-section-id=&quot;1mbsn9&quot; data-ke-size=&quot;size26&quot;&gt;의미&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;3725&quot; data-start=&quot;3687&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;3707&quot; data-start=&quot;3687&quot; data-section-id=&quot;196es4g&quot;&gt;precision만 높아도 안 됨&lt;/li&gt;
&lt;li data-end=&quot;3725&quot; data-start=&quot;3708&quot; data-section-id=&quot;1c10xlv&quot;&gt;recall만 높아도 안 됨&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;3735&quot; data-start=&quot;3727&quot; data-ke-size=&quot;size16&quot;&gt;둘의 균형 평가&lt;/p&gt;
&lt;hr data-end=&quot;3920&quot; data-start=&quot;3917&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;3946&quot; data-start=&quot;3922&quot; data-section-id=&quot;ppgsd2&quot;&gt;5. Agenda Completeness&lt;/h1&gt;
&lt;p data-end=&quot;4023&quot; data-start=&quot;3948&quot; data-ke-size=&quot;size16&quot;&gt;구현:&lt;br /&gt;compute_agenda_completeness()&lt;/p&gt;
&lt;h1 data-end=&quot;4034&quot; data-start=&quot;4030&quot; data-section-id=&quot;yilubv&quot;&gt;정의&lt;/h1&gt;
&lt;p data-end=&quot;4072&quot; data-start=&quot;4036&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;실제 존재하는 agenda item 중&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;시스템이 얼마나 발견했는가&lt;/span&gt;&lt;/p&gt;
&lt;h1 data-end=&quot;4086&quot; data-start=&quot;4079&quot; data-section-id=&quot;11ymtuu&quot;&gt;계산 방식&lt;/h1&gt;
&lt;p data-end=&quot;4119&quot; data-start=&quot;4088&quot; data-ke-size=&quot;size16&quot;&gt;각 ground truth agenda item에 대해:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;BERTScore(system_summary, reference_item)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;4185&quot; data-start=&quot;4178&quot; data-ke-size=&quot;size16&quot;&gt;를 계산하고,&lt;/p&gt;
&lt;p data-end=&quot;4197&quot; data-start=&quot;4187&quot; data-ke-size=&quot;size16&quot;&gt;threshold:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;&amp;gt; 0.85&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;4274&quot; data-start=&quot;4220&quot; data-ke-size=&quot;size16&quot;&gt;면 발견했다고 간주합니다.&lt;/p&gt;
&lt;h1 data-end=&quot;4285&quot; data-start=&quot;4281&quot; data-section-id=&quot;yik08i&quot;&gt;예시&lt;/h1&gt;
&lt;p data-end=&quot;4297&quot; data-start=&quot;4287&quot; data-ke-size=&quot;size16&quot;&gt;실제 agenda:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;4351&quot; data-start=&quot;4298&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;4305&quot; data-start=&quot;4298&quot; data-section-id=&quot;16c04da&quot;&gt;cough&lt;/li&gt;
&lt;li data-end=&quot;4318&quot; data-start=&quot;4306&quot; data-section-id=&quot;mytlp3&quot;&gt;chest pain&lt;/li&gt;
&lt;li data-end=&quot;4333&quot; data-start=&quot;4319&quot; data-section-id=&quot;15jxday&quot;&gt;hypertension&lt;/li&gt;
&lt;li data-end=&quot;4351&quot; data-start=&quot;4334&quot; data-section-id=&quot;1tp9isw&quot;&gt;smoking history&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;4357&quot; data-start=&quot;4353&quot; data-ke-size=&quot;size16&quot;&gt;모델이:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;4390&quot; data-start=&quot;4358&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;4365&quot; data-start=&quot;4358&quot; data-section-id=&quot;16c04da&quot;&gt;cough&lt;/li&gt;
&lt;li data-end=&quot;4380&quot; data-start=&quot;4366&quot; data-section-id=&quot;15jxday&quot;&gt;hypertension&lt;/li&gt;
&lt;li data-end=&quot;4390&quot; data-start=&quot;4381&quot; data-section-id=&quot;1rc3xua&quot;&gt;smoking&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;4394&quot; data-start=&quot;4392&quot; data-ke-size=&quot;size16&quot;&gt;찾음&lt;/p&gt;
&lt;p data-end=&quot;4423&quot; data-start=&quot;4396&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; completeness = 3/4 = 0.75&lt;/p&gt;
&lt;h1 data-end=&quot;4438&quot; data-start=&quot;4430&quot; data-section-id=&quot;16hrbz4&quot;&gt;평가하는 것&lt;/h1&gt;
&lt;p data-end=&quot;4475&quot; data-start=&quot;4440&quot; data-ke-size=&quot;size16&quot;&gt;전체 visit에서:&quot;핵심 이슈를 얼마나 빠짐없이 추적했는가&quot;&lt;/p&gt;
&lt;hr data-end=&quot;4576&quot; data-start=&quot;4573&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;4599&quot; data-start=&quot;4578&quot; data-section-id=&quot;11xn3s0&quot;&gt;6. Linking Accuracy&lt;/h1&gt;
&lt;p data-end=&quot;4673&quot; data-start=&quot;4601&quot; data-ke-size=&quot;size16&quot;&gt;구현:&lt;br /&gt;compute_linking_accuracy()&lt;/p&gt;
&lt;h1 data-end=&quot;4684&quot; data-start=&quot;4680&quot; data-section-id=&quot;yilubv&quot;&gt;정의&lt;/h1&gt;
&lt;p data-end=&quot;4717&quot; data-start=&quot;4686&quot; data-ke-size=&quot;size16&quot;&gt;detail이 올바른 agenda item에 연결되었는가&lt;/p&gt;
&lt;h1 data-end=&quot;4728&quot; data-start=&quot;4724&quot; data-section-id=&quot;yik08i&quot;&gt;예시&lt;/h1&gt;
&lt;p data-end=&quot;4737&quot; data-start=&quot;4730&quot; data-ke-size=&quot;size16&quot;&gt;agenda:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;4756&quot; data-start=&quot;4738&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;4745&quot; data-start=&quot;4738&quot; data-section-id=&quot;16c04da&quot;&gt;cough&lt;/li&gt;
&lt;li data-end=&quot;4756&quot; data-start=&quot;4746&quot; data-section-id=&quot;10uh3cx&quot;&gt;diabetes&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;4765&quot; data-start=&quot;4758&quot; data-ke-size=&quot;size16&quot;&gt;detail:&lt;/p&gt;
&lt;blockquote data-end=&quot;4783&quot; data-start=&quot;4766&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;4783&quot; data-start=&quot;4768&quot; data-ke-size=&quot;size16&quot;&gt;&quot;yellow sputum&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;4788&quot; data-start=&quot;4785&quot; data-ke-size=&quot;size16&quot;&gt;정답:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;4800&quot; data-start=&quot;4789&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;4800&quot; data-start=&quot;4789&quot; data-section-id=&quot;1shyoq6&quot;&gt;cough에 연결&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;4806&quot; data-start=&quot;4802&quot; data-ke-size=&quot;size16&quot;&gt;시스템:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;4821&quot; data-start=&quot;4807&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;4821&quot; data-start=&quot;4807&quot; data-section-id=&quot;1x0jbn5&quot;&gt;diabetes에 연결&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;4827&quot; data-start=&quot;4823&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 오답&lt;/p&gt;
&lt;h1 data-end=&quot;4841&quot; data-start=&quot;4834&quot; data-section-id=&quot;1rz7vri&quot;&gt;평가 대상&lt;/h1&gt;
&lt;p data-end=&quot;4918&quot; data-start=&quot;4843&quot; data-ke-size=&quot;size16&quot;&gt;state_tracker.py의 linking 시스템입니다.&lt;/p&gt;
&lt;p data-end=&quot;4970&quot; data-start=&quot;4920&quot; data-ke-size=&quot;size16&quot;&gt;embedding similarity 기반으로 parent agenda item 찾습니다.&lt;/p&gt;
&lt;hr data-end=&quot;4975&quot; data-start=&quot;4972&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;5016&quot; data-start=&quot;4977&quot; data-section-id=&quot;fy2lw7&quot;&gt;7. Mentioned / First Mention Accuracy&lt;/h1&gt;
&lt;p data-end=&quot;5096&quot; data-start=&quot;5018&quot; data-ke-size=&quot;size16&quot;&gt;구현:&lt;br /&gt;compute_first_mention_accuracy()&lt;/p&gt;
&lt;h1 data-end=&quot;5107&quot; data-start=&quot;5103&quot; data-section-id=&quot;yilubv&quot;&gt;정의&lt;/h1&gt;
&lt;p data-end=&quot;5132&quot; data-start=&quot;5109&quot; data-ke-size=&quot;size16&quot;&gt;새로운 정보인지, 이미 나온 정보 반복인지 정확히 판별했는가&lt;/p&gt;
&lt;h1 data-end=&quot;5154&quot; data-start=&quot;5150&quot; data-section-id=&quot;yik08i&quot;&gt;예시&lt;/h1&gt;
&lt;p data-end=&quot;5159&quot; data-start=&quot;5156&quot; data-ke-size=&quot;size16&quot;&gt;처음:&lt;/p&gt;
&lt;blockquote data-end=&quot;5179&quot; data-start=&quot;5160&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;5179&quot; data-start=&quot;5162&quot; data-ke-size=&quot;size16&quot;&gt;patient has cough&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;5184&quot; data-start=&quot;5181&quot; data-ke-size=&quot;size16&quot;&gt;나중:&lt;/p&gt;
&lt;blockquote data-end=&quot;5209&quot; data-start=&quot;5185&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;5209&quot; data-start=&quot;5187&quot; data-ke-size=&quot;size16&quot;&gt;cough still persistent&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;5227&quot; data-start=&quot;5211&quot; data-ke-size=&quot;size16&quot;&gt;두 번째는 repeat입니다.&lt;/p&gt;
&lt;h1 data-end=&quot;5242&quot; data-start=&quot;5234&quot; data-section-id=&quot;16hrbz4&quot;&gt;평가하는 것&lt;/h1&gt;
&lt;p data-end=&quot;5275&quot; data-start=&quot;5244&quot; data-ke-size=&quot;size16&quot;&gt;conversation memory tracking 능력&lt;/p&gt;
&lt;h1 data-end=&quot;5289&quot; data-start=&quot;5282&quot; data-section-id=&quot;1exddmi&quot;&gt;구현 방식&lt;/h1&gt;
&lt;p data-end=&quot;5309&quot; data-start=&quot;5291&quot; data-ke-size=&quot;size16&quot;&gt;state_tracker.py&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;nginx&quot;&gt;&lt;code&gt;cosine similarity &amp;gt; threshold&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;5415&quot; data-start=&quot;5356&quot; data-ke-size=&quot;size16&quot;&gt;이면 repeated로 판단합니다.&lt;/p&gt;
&lt;hr data-end=&quot;5420&quot; data-start=&quot;5417&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;5446&quot; data-start=&quot;5422&quot; data-section-id=&quot;109tf8s&quot;&gt;8. Resolution Accuracy&lt;/h1&gt;
&lt;p data-end=&quot;5523&quot; data-start=&quot;5448&quot; data-ke-size=&quot;size16&quot;&gt;구현:&lt;br /&gt;compute_resolution_accuracy()&lt;/p&gt;
&lt;h1 data-end=&quot;5534&quot; data-start=&quot;5530&quot; data-section-id=&quot;yilubv&quot;&gt;정의&lt;/h1&gt;
&lt;p data-end=&quot;5562&quot; data-start=&quot;5536&quot; data-ke-size=&quot;size16&quot;&gt;agenda item 상태를 올바르게 추적했는가&lt;/p&gt;
&lt;p data-end=&quot;5567&quot; data-start=&quot;5564&quot; data-ke-size=&quot;size16&quot;&gt;상태:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;5615&quot; data-start=&quot;5568&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;5579&quot; data-start=&quot;5568&quot; data-section-id=&quot;1l3a4oj&quot;&gt;mentioned&lt;/li&gt;
&lt;li data-end=&quot;5591&quot; data-start=&quot;5580&quot; data-section-id=&quot;mcd801&quot;&gt;discussed&lt;/li&gt;
&lt;li data-end=&quot;5602&quot; data-start=&quot;5592&quot; data-section-id=&quot;q6q2ns&quot;&gt;resolved&lt;/li&gt;
&lt;li data-end=&quot;5615&quot; data-start=&quot;5603&quot; data-section-id=&quot;l8i0n7&quot;&gt;unresolved&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 data-end=&quot;5626&quot; data-start=&quot;5622&quot; data-section-id=&quot;yik08i&quot;&gt;예시&lt;/h1&gt;
&lt;p data-end=&quot;5632&quot; data-start=&quot;5628&quot; data-ke-size=&quot;size16&quot;&gt;환자가:&lt;/p&gt;
&lt;blockquote data-end=&quot;5649&quot; data-start=&quot;5633&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;5649&quot; data-start=&quot;5635&quot; data-ke-size=&quot;size16&quot;&gt;chest pain 있어요&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;5655&quot; data-start=&quot;5651&quot; data-ke-size=&quot;size16&quot;&gt;의사가:&lt;/p&gt;
&lt;blockquote data-end=&quot;5663&quot; data-start=&quot;5656&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;5663&quot; data-start=&quot;5658&quot; data-ke-size=&quot;size16&quot;&gt;검사합시다&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;5675&quot; data-start=&quot;5665&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; resolved&lt;/p&gt;
&lt;p data-end=&quot;5685&quot; data-start=&quot;5677&quot; data-ke-size=&quot;size16&quot;&gt;근데 시스템이:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;5701&quot; data-start=&quot;5686&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;5701&quot; data-start=&quot;5686&quot; data-section-id=&quot;3oq5g5&quot;&gt;discussed로 남김&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;5707&quot; data-start=&quot;5703&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 오답&lt;/p&gt;</description>
      <category>AL,ML 학부연구생/공부 기록</category>
      <author>김형준</author>
      <guid isPermaLink="true">https://devreco.tistory.com/33</guid>
      <comments>https://devreco.tistory.com/33#entry33comment</comments>
      <pubDate>Mon, 18 May 2026 16:14:49 +0900</pubDate>
    </item>
    <item>
      <title>PEFT 중 LoRA 파인튜닝은 무엇인가? LoRA 이해하기</title>
      <link>https://devreco.tistory.com/32</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000; letter-spacing: -1px;&quot;&gt;LoRA 개요&lt;/span&gt;&lt;/h2&gt;
&lt;div&gt;
&lt;div data-message-model-slug=&quot;gpt-5-5-thinking&quot; data-turn-start-message=&quot;true&quot; data-message-id=&quot;db8f7dda-49cd-4ba4-b5db-a47465454abc&quot; data-message-author-role=&quot;assistant&quot;&gt;
&lt;h2 data-end=&quot;119&quot; data-start=&quot;111&quot; data-section-id=&quot;zhn8uv&quot; data-ke-size=&quot;size26&quot;&gt;1. 정의&lt;/h2&gt;
&lt;p data-end=&quot;286&quot; data-start=&quot;121&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;LoRA(Low-Rank Adaptation)&lt;/b&gt;는 대형 언어 모델(LLM)의 전체 가중치를 직접 학습하지 않고, 기존 가중치는 고정한 상태에서 작은 추가 학습 모듈만 학습하는 &lt;b&gt;파라미터 효율적 미세조정(Parameter-Efficient Fine-Tuning, PEFT)&lt;/b&gt; 기법입니다.&lt;/p&gt;
&lt;p data-end=&quot;444&quot; data-start=&quot;288&quot; data-ke-size=&quot;size16&quot;&gt;일반적인 full fine-tuning은 모델의 모든 파라미터를 업데이트합니다. 예를 들어 7B 모델이면 약 70억 개 파라미터 전체가 학습 대상입니다. LoRA는 모델의 가중치 대부분을 그대로 두고, 일부 레이어에 작은 행렬 두 개를 추가한 뒤 그 행렬만 학습합니다.&lt;/p&gt;
&lt;p data-end=&quot;460&quot; data-start=&quot;446&quot; data-ke-size=&quot;size16&quot;&gt;정리하면 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;659&quot; data-start=&quot;462&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;659&quot; data-start=&quot;484&quot;&gt;
&lt;tr data-end=&quot;525&quot; data-start=&quot;484&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;501&quot; data-start=&quot;484&quot;&gt;기존 fine-tuning&lt;/td&gt;
&lt;td data-end=&quot;525&quot; data-start=&quot;501&quot; data-col-size=&quot;sm&quot;&gt;모델 전체 가중치 W를 직접 업데이트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;562&quot; data-start=&quot;526&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;533&quot; data-start=&quot;526&quot;&gt;LoRA&lt;/td&gt;
&lt;td data-end=&quot;562&quot; data-start=&quot;533&quot; data-col-size=&quot;sm&quot;&gt;기존 W는 고정하고, 작은 보정값 &amp;Delta;W만 학습&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;605&quot; data-start=&quot;563&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;568&quot; data-start=&quot;563&quot;&gt;목적&lt;/td&gt;
&lt;td data-end=&quot;605&quot; data-start=&quot;568&quot; data-col-size=&quot;sm&quot;&gt;적은 메모리와 적은 학습 파라미터로 모델을 특정 작업에 적응&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;659&quot; data-start=&quot;606&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;616&quot; data-start=&quot;606&quot;&gt;핵심 아이디어&lt;/td&gt;
&lt;td data-end=&quot;659&quot; data-start=&quot;616&quot; data-col-size=&quot;sm&quot;&gt;&amp;ldquo;큰 변화도 실제로는 낮은 차원의 작은 변화로 표현할 수 있다&amp;rdquo;는 가정&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;740&quot; data-start=&quot;661&quot; data-ke-size=&quot;size16&quot;&gt;즉, LoRA는 &lt;b&gt;큰 모델을 통째로 다시 학습하지 않고, 모델 내부에 작은 조정 장치를 붙여서 원하는 작업에 맞게 조정하는 방식&lt;/b&gt;입니다.&lt;/p&gt;
&lt;hr data-end=&quot;745&quot; data-start=&quot;742&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;764&quot; data-start=&quot;747&quot; data-section-id=&quot;1sxkur6&quot;&gt;2. LoRA가 필요한 이유&lt;/h1&gt;
&lt;h2 data-end=&quot;793&quot; data-start=&quot;766&quot; data-section-id=&quot;1ux2map&quot; data-ke-size=&quot;size26&quot;&gt;2.1 Full Fine-Tuning의 문제&lt;/h2&gt;
&lt;p data-end=&quot;930&quot; data-start=&quot;795&quot; data-ke-size=&quot;size16&quot;&gt;대형 언어 모델을 특정 작업에 맞게 학습시키려면 보통 fine-tuning을 합니다. 예를 들어 의료 대화에서 agenda item을 추출하는 모델을 만들고 싶다면, Llama 같은 사전학습 모델을 의료 대화 데이터로 추가 학습시켜야 합니다.&lt;/p&gt;
&lt;p data-end=&quot;967&quot; data-start=&quot;932&quot; data-ke-size=&quot;size16&quot;&gt;그러나 full fine-tuning에는 다음 문제가 있습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;문제설명
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1221&quot; data-start=&quot;969&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;1221&quot; data-start=&quot;991&quot;&gt;
&lt;tr data-end=&quot;1055&quot; data-start=&quot;991&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1003&quot; data-start=&quot;991&quot;&gt;메모리 사용량 큼&lt;/td&gt;
&lt;td data-end=&quot;1055&quot; data-start=&quot;1003&quot; data-col-size=&quot;md&quot;&gt;모델 전체 파라미터, gradient, optimizer state를 모두 저장해야 함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1099&quot; data-start=&quot;1056&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1066&quot; data-start=&quot;1056&quot;&gt;저장 공간 큼&lt;/td&gt;
&lt;td data-end=&quot;1099&quot; data-start=&quot;1066&quot; data-col-size=&quot;md&quot;&gt;작업마다 전체 모델 checkpoint를 저장해야 함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1132&quot; data-start=&quot;1100&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1110&quot; data-start=&quot;1100&quot;&gt;학습 비용 큼&lt;/td&gt;
&lt;td data-end=&quot;1132&quot; data-start=&quot;1110&quot; data-col-size=&quot;md&quot;&gt;GPU 메모리와 시간이 많이 필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1169&quot; data-start=&quot;1133&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1142&quot; data-start=&quot;1133&quot;&gt;배포 비효율&lt;/td&gt;
&lt;td data-end=&quot;1169&quot; data-start=&quot;1142&quot; data-col-size=&quot;md&quot;&gt;작업별로 큰 모델 파일을 따로 관리해야 함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1221&quot; data-start=&quot;1170&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1179&quot; data-start=&quot;1170&quot;&gt;과적합 위험&lt;/td&gt;
&lt;td data-end=&quot;1221&quot; data-start=&quot;1179&quot; data-col-size=&quot;md&quot;&gt;데이터가 적은 경우 전체 모델을 수정하면 일반 성능이 손상될 수 있음&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1408&quot; data-start=&quot;1223&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 7B 모델을 full fine-tuning하면 단순히 모델 가중치만 필요한 것이 아닙니다. 학습 중에는 gradient, optimizer state, activation까지 필요합니다. Adam optimizer를 사용하면 optimizer state가 매우 커지므로 실제 메모리 요구량은 모델 크기보다 훨씬 커집니다.&lt;/p&gt;
&lt;h2 data-end=&quot;1428&quot; data-start=&quot;1410&quot; data-section-id=&quot;s5d7cj&quot; data-ke-size=&quot;size26&quot;&gt;2.2 LoRA의 해결 방식&lt;/h2&gt;
&lt;p data-end=&quot;1453&quot; data-start=&quot;1430&quot; data-ke-size=&quot;size16&quot;&gt;LoRA는 다음 방식으로 문제를 줄입니다.&lt;/p&gt;
&lt;p data-end=&quot;1555&quot; data-start=&quot;1455&quot; data-ke-size=&quot;size16&quot;&gt;기존 모델 파라미터는 freeze합니다.&lt;br /&gt;작은 adapter 행렬만 학습합니다.&lt;br /&gt;작업별로 adapter만 저장합니다.&lt;br /&gt;추론 시 원본 모델 + adapter를 조합합니다.&lt;/p&gt;
&lt;p data-end=&quot;1645&quot; data-start=&quot;1557&quot; data-ke-size=&quot;size16&quot;&gt;따라서 작업 A, 작업 B, 작업 C가 있어도 모델 전체를 각각 저장할 필요가 없습니다. 원본 모델 하나와 LoRA adapter 여러 개만 저장하면 됩니다.&lt;/p&gt;
&lt;hr data-end=&quot;1650&quot; data-start=&quot;1647&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;1668&quot; data-start=&quot;1652&quot; data-section-id=&quot;5l4ssv&quot;&gt;3. LoRA의 핵심 수식&lt;/h1&gt;
&lt;h2 data-end=&quot;1686&quot; data-start=&quot;1670&quot; data-section-id=&quot;1r91t18&quot; data-ke-size=&quot;size26&quot;&gt;3.1 기본 선형 레이어&lt;/h2&gt;
&lt;p data-end=&quot;1768&quot; data-start=&quot;1688&quot; data-ke-size=&quot;size16&quot;&gt;Transformer 내부에는 많은 선형 변환이 있습니다. 예를 들어 어떤 레이어의 weight를 W라고 하면 일반적인 계산은 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;h = W x&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1795&quot; data-start=&quot;1791&quot; data-ke-size=&quot;size16&quot;&gt;여기서:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;기호의미
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1875&quot; data-start=&quot;1797&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;1875&quot; data-start=&quot;1819&quot;&gt;
&lt;tr data-end=&quot;1832&quot; data-start=&quot;1819&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1823&quot; data-start=&quot;1819&quot;&gt;x&lt;/td&gt;
&lt;td data-end=&quot;1832&quot; data-start=&quot;1823&quot; data-col-size=&quot;sm&quot;&gt;입력 벡터&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1861&quot; data-start=&quot;1833&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1837&quot; data-start=&quot;1833&quot;&gt;W&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1861&quot; data-start=&quot;1837&quot;&gt;원래 모델의 weight matrix&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1875&quot; data-start=&quot;1862&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1866&quot; data-start=&quot;1862&quot;&gt;h&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1875&quot; data-start=&quot;1866&quot;&gt;출력 벡터&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1911&quot; data-start=&quot;1877&quot; data-ke-size=&quot;size16&quot;&gt;Full fine-tuning에서는 W 자체를 업데이트합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;tp&quot;&gt;&lt;code&gt;W &amp;larr; W + update&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-end=&quot;1957&quot; data-start=&quot;1941&quot; data-section-id=&quot;40at4m&quot; data-ke-size=&quot;size26&quot;&gt;3.2 LoRA 적용 후&lt;/h2&gt;
&lt;p data-end=&quot;2008&quot; data-start=&quot;1959&quot; data-ke-size=&quot;size16&quot;&gt;LoRA에서는 W를 직접 바꾸지 않습니다. 대신 W 옆에 작은 보정값 &amp;Delta;W를 추가합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;gml&quot;&gt;&lt;code&gt;h = W x + &amp;Delta;W x&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2074&quot; data-start=&quot;2038&quot; data-ke-size=&quot;size16&quot;&gt;여기서 &amp;Delta;W는 다음과 같이 두 개의 작은 행렬 곱으로 표현됩니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;armasm&quot;&gt;&lt;code&gt;&amp;Delta;W = B A&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2118&quot; data-start=&quot;2098&quot; data-ke-size=&quot;size16&quot;&gt;따라서 전체 계산은 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;gml&quot;&gt;&lt;code&gt;h = W x + B A x&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2153&quot; data-start=&quot;2149&quot; data-ke-size=&quot;size16&quot;&gt;여기서:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;기호의미
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;2328&quot; data-start=&quot;2155&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;2328&quot; data-start=&quot;2177&quot;&gt;
&lt;tr data-end=&quot;2207&quot; data-start=&quot;2177&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2181&quot; data-start=&quot;2177&quot;&gt;W&lt;/td&gt;
&lt;td data-end=&quot;2207&quot; data-start=&quot;2181&quot; data-col-size=&quot;sm&quot;&gt;기존 모델의 원래 가중치, 학습하지 않음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2242&quot; data-start=&quot;2208&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2212&quot; data-start=&quot;2208&quot;&gt;A&lt;/td&gt;
&lt;td data-end=&quot;2242&quot; data-start=&quot;2212&quot; data-col-size=&quot;sm&quot;&gt;작은 down-projection 행렬, 학습함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2275&quot; data-start=&quot;2243&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2247&quot; data-start=&quot;2243&quot;&gt;B&lt;/td&gt;
&lt;td data-end=&quot;2275&quot; data-start=&quot;2247&quot; data-col-size=&quot;sm&quot;&gt;작은 up-projection 행렬, 학습함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2303&quot; data-start=&quot;2276&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2281&quot; data-start=&quot;2276&quot;&gt;&amp;Delta;W&lt;/td&gt;
&lt;td data-end=&quot;2303&quot; data-start=&quot;2281&quot; data-col-size=&quot;sm&quot;&gt;LoRA가 만들어내는 보정 가중치&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2328&quot; data-start=&quot;2304&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2308&quot; data-start=&quot;2304&quot;&gt;r&lt;/td&gt;
&lt;td data-end=&quot;2328&quot; data-start=&quot;2308&quot; data-col-size=&quot;sm&quot;&gt;rank, LoRA 내부 차원&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-end=&quot;2342&quot; data-start=&quot;2330&quot; data-section-id=&quot;15pmqyv&quot; data-ke-size=&quot;size26&quot;&gt;3.3 차원 예시&lt;/h2&gt;
&lt;p data-end=&quot;2375&quot; data-start=&quot;2344&quot; data-ke-size=&quot;size16&quot;&gt;원래 weight W의 크기가 다음과 같다고 하겠습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;W: 4096 &amp;times; 4096&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2429&quot; data-start=&quot;2405&quot; data-ke-size=&quot;size16&quot;&gt;그러면 W의 파라미터 수는 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;basic&quot;&gt;&lt;code&gt;4096 &amp;times; 4096 = 16,777,216&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2483&quot; data-start=&quot;2469&quot; data-ke-size=&quot;size16&quot;&gt;약 1,677만 개입니다.&lt;/p&gt;
&lt;p data-end=&quot;2525&quot; data-start=&quot;2485&quot; data-ke-size=&quot;size16&quot;&gt;LoRA rank r = 8이라면 A와 B는 보통 다음 크기를 가집니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;A: 8 &amp;times; 4096
B: 4096 &amp;times; 8&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2589&quot; data-start=&quot;2564&quot; data-ke-size=&quot;size16&quot;&gt;LoRA 학습 파라미터 수는 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;A 파라미터 수 = 8 &amp;times; 4096 = 32,768
B 파라미터 수 = 4096 &amp;times; 8 = 32,768
총합 = 65,536&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2688&quot; data-start=&quot;2674&quot; data-ke-size=&quot;size16&quot;&gt;비교하면 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;방식학습 파라미터 수
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;2769&quot; data-start=&quot;2690&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;2769&quot; data-start=&quot;2720&quot;&gt;
&lt;tr data-end=&quot;2744&quot; data-start=&quot;2720&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2730&quot; data-start=&quot;2720&quot;&gt;W 전체 학습&lt;/td&gt;
&lt;td data-end=&quot;2744&quot; data-start=&quot;2730&quot; data-col-size=&quot;sm&quot;&gt;16,777,216&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2769&quot; data-start=&quot;2745&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2759&quot; data-start=&quot;2745&quot;&gt;LoRA rank 8&lt;/td&gt;
&lt;td data-end=&quot;2769&quot; data-start=&quot;2759&quot; data-col-size=&quot;sm&quot;&gt;65,536&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2818&quot; data-start=&quot;2771&quot; data-ke-size=&quot;size16&quot;&gt;즉, 해당 레이어 기준으로 학습 파라미터 수가 약 256분의 1 수준으로 줄어듭니다.&lt;/p&gt;
&lt;hr data-end=&quot;2823&quot; data-start=&quot;2820&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;2842&quot; data-start=&quot;2825&quot; data-section-id=&quot;hrdeln&quot;&gt;4. Low-Rank의 의미&lt;/h1&gt;
&lt;h2 data-end=&quot;2861&quot; data-start=&quot;2844&quot; data-section-id=&quot;19jrb9v&quot; data-ke-size=&quot;size26&quot;&gt;4.1 Rank란 무엇인가&lt;/h2&gt;
&lt;p data-end=&quot;2954&quot; data-start=&quot;2863&quot; data-ke-size=&quot;size16&quot;&gt;행렬의 rank는 행렬이 표현할 수 있는 독립적인 정보의 차원입니다. 쉽게 말하면, 어떤 큰 행렬이 실제로는 몇 개의 핵심 방향으로 설명될 수 있는지를 나타냅니다.&lt;/p&gt;
&lt;p data-end=&quot;2975&quot; data-start=&quot;2956&quot; data-ke-size=&quot;size16&quot;&gt;LoRA의 가정은 다음과 같습니다.&lt;/p&gt;
&lt;blockquote data-end=&quot;3066&quot; data-start=&quot;2977&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;3066&quot; data-start=&quot;2979&quot; data-ke-size=&quot;size16&quot;&gt;대형 모델을 특정 작업에 맞게 조정할 때 필요한 변화량 &amp;Delta;W는 전체 차원을 모두 사용할 필요가 없고, 낮은 rank의 작은 행렬로도 충분히 표현할 수 있다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;3142&quot; data-start=&quot;3068&quot; data-ke-size=&quot;size16&quot;&gt;즉, 모델 전체를 크게 바꿔야 하는 것처럼 보이지만 실제로는 특정 작업에 필요한 변화가 비교적 저차원 구조를 가진다고 보는 것입니다.&lt;/p&gt;
&lt;h2 data-end=&quot;3157&quot; data-start=&quot;3144&quot; data-section-id=&quot;1gvzbho&quot; data-ke-size=&quot;size26&quot;&gt;4.2 직관적 설명&lt;/h2&gt;
&lt;p data-end=&quot;3270&quot; data-start=&quot;3159&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 어떤 LLM이 이미 언어 이해, 문법, 일반 지식, 추론 능력을 가지고 있다고 하겠습니다. 의료 대화 요약 작업을 추가로 학습할 때는 모델 전체 지식을 처음부터 다시 배우는 것이 아닙니다.&lt;/p&gt;
&lt;p data-end=&quot;3296&quot; data-start=&quot;3272&quot; data-ke-size=&quot;size16&quot;&gt;필요한 것은 대체로 다음과 같은 조정입니다.&lt;/p&gt;
&lt;p data-end=&quot;3415&quot; data-start=&quot;3298&quot; data-ke-size=&quot;size16&quot;&gt;의료 대화에서 어떤 발화가 중요한지 구분&lt;br /&gt;증상, 약물, 검사, follow-up을 잘 요약&lt;br /&gt;출력 형식을 JSON으로 맞춤&lt;br /&gt;불필요한 인사말은 irrelevant로 분류&lt;br /&gt;환자 발화와 의사 발화를 구분&lt;/p&gt;
&lt;p data-end=&quot;3500&quot; data-start=&quot;3417&quot; data-ke-size=&quot;size16&quot;&gt;이런 변화는 모델 전체 지식의 완전한 재학습이 아니라, 기존 능력 위에 얹는 작업별 조정에 가깝습니다. LoRA는 이 조정을 작은 행렬로 표현합니다.&lt;/p&gt;
&lt;hr data-end=&quot;3505&quot; data-start=&quot;3502&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;3525&quot; data-start=&quot;3507&quot; data-section-id=&quot;hxfz6d&quot;&gt;5. LoRA가 적용되는 위치&lt;/h1&gt;
&lt;p data-end=&quot;3598&quot; data-start=&quot;3527&quot; data-ke-size=&quot;size16&quot;&gt;LoRA는 Transformer의 모든 가중치에 붙일 수도 있지만, 일반적으로 특정 projection layer에만 붙입니다.&lt;/p&gt;
&lt;p data-end=&quot;3621&quot; data-start=&quot;3600&quot; data-ke-size=&quot;size16&quot;&gt;대표적인 적용 위치는 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;위치설명
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;3877&quot; data-start=&quot;3623&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;3877&quot; data-start=&quot;3645&quot;&gt;
&lt;tr data-end=&quot;3674&quot; data-start=&quot;3645&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3654&quot; data-start=&quot;3645&quot;&gt;q_proj&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3674&quot; data-start=&quot;3654&quot;&gt;Query projection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3702&quot; data-start=&quot;3675&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3684&quot; data-start=&quot;3675&quot;&gt;k_proj&lt;/td&gt;
&lt;td data-end=&quot;3702&quot; data-start=&quot;3684&quot; data-col-size=&quot;sm&quot;&gt;Key projection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3732&quot; data-start=&quot;3703&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3712&quot; data-start=&quot;3703&quot;&gt;v_proj&lt;/td&gt;
&lt;td data-end=&quot;3732&quot; data-start=&quot;3712&quot; data-col-size=&quot;sm&quot;&gt;Value projection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3773&quot; data-start=&quot;3733&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3742&quot; data-start=&quot;3733&quot;&gt;o_proj&lt;/td&gt;
&lt;td data-end=&quot;3773&quot; data-start=&quot;3742&quot; data-col-size=&quot;sm&quot;&gt;Attention output projection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3809&quot; data-start=&quot;3774&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3786&quot; data-start=&quot;3774&quot;&gt;gate_proj&lt;/td&gt;
&lt;td data-end=&quot;3809&quot; data-start=&quot;3786&quot; data-col-size=&quot;sm&quot;&gt;MLP gate projection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3841&quot; data-start=&quot;3810&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3820&quot; data-start=&quot;3810&quot;&gt;up_proj&lt;/td&gt;
&lt;td data-end=&quot;3841&quot; data-start=&quot;3820&quot; data-col-size=&quot;sm&quot;&gt;MLP up projection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3877&quot; data-start=&quot;3842&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3854&quot; data-start=&quot;3842&quot;&gt;down_proj&lt;/td&gt;
&lt;td data-end=&quot;3877&quot; data-start=&quot;3854&quot; data-col-size=&quot;sm&quot;&gt;MLP down projection&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-end=&quot;3901&quot; data-start=&quot;3879&quot; data-section-id=&quot;1w7l3s5&quot; data-ke-size=&quot;size26&quot;&gt;5.1 Attention 내부 적용&lt;/h2&gt;
&lt;p data-end=&quot;3960&quot; data-start=&quot;3903&quot; data-ke-size=&quot;size16&quot;&gt;Transformer attention에서는 입력 hidden state가 Q, K, V로 변환됩니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;Q = Wq x
K = Wk x
V = Wv x&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;4038&quot; data-start=&quot;4002&quot; data-ke-size=&quot;size16&quot;&gt;LoRA를 q_proj와 v_proj에 적용하면 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;gml&quot;&gt;&lt;code&gt;Q = Wq x + Bq Aq x
V = Wv x + Bv Av x&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;4159&quot; data-start=&quot;4091&quot; data-ke-size=&quot;size16&quot;&gt;즉, 원래 attention 계산 구조는 유지하되 query와 value 계산에 작은 학습 가능한 보정 경로를 추가합니다.&lt;/p&gt;
&lt;p data-end=&quot;4159&quot; data-start=&quot;4091&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1 data-end=&quot;837&quot; data-start=&quot;824&quot; data-section-id=&quot;1f2uqzf&quot;&gt;5.2 Query&lt;/h1&gt;
&lt;p data-end=&quot;897&quot; data-start=&quot;850&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q(Query)&lt;/b&gt;는 현재 토큰이 &amp;ldquo;무엇을 찾고 있는지&amp;rdquo;를 나타내는 벡터입니다.&lt;/p&gt;
&lt;p data-end=&quot;914&quot; data-start=&quot;899&quot; data-ke-size=&quot;size16&quot;&gt;수식으로는 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;Q = Wq x&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;942&quot; data-start=&quot;938&quot; data-ke-size=&quot;size16&quot;&gt;여기서:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;기호의미
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1043&quot; data-start=&quot;944&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;1043&quot; data-start=&quot;966&quot;&gt;
&lt;tr data-end=&quot;989&quot; data-start=&quot;966&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;970&quot; data-start=&quot;966&quot;&gt;x&lt;/td&gt;
&lt;td data-end=&quot;989&quot; data-start=&quot;970&quot; data-col-size=&quot;sm&quot;&gt;입력 hidden state&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1022&quot; data-start=&quot;990&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;995&quot; data-start=&quot;990&quot;&gt;Wq&lt;/td&gt;
&lt;td data-end=&quot;1022&quot; data-start=&quot;995&quot; data-col-size=&quot;sm&quot;&gt;Query projection matrix&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1043&quot; data-start=&quot;1023&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1027&quot; data-start=&quot;1023&quot;&gt;Q&lt;/td&gt;
&lt;td data-end=&quot;1043&quot; data-start=&quot;1027&quot; data-col-size=&quot;sm&quot;&gt;query vector&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1086&quot; data-start=&quot;1045&quot; data-ke-size=&quot;size16&quot;&gt;즉, 원래 입력 x를 Wq라는 행렬로 변환해서 Query 벡터를 만듭니다.&lt;/p&gt;
&lt;h2 data-end=&quot;1097&quot; data-start=&quot;1088&quot; data-section-id=&quot;123vnpi&quot; data-ke-size=&quot;size26&quot;&gt;5.2.2 역할&lt;/h2&gt;
&lt;p data-end=&quot;1121&quot; data-start=&quot;1099&quot; data-ke-size=&quot;size16&quot;&gt;Q는 현재 토큰의 관점에서 만들어집니다.&lt;/p&gt;
&lt;p data-end=&quot;1157&quot; data-start=&quot;1123&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 she라는 토큰의 Q는 다음 의미에 가깝습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;erlang&quot;&gt;&lt;code&gt;나는 내가 가리키는 대상이 누구인지 찾고 싶다.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1229&quot; data-start=&quot;1199&quot; data-ke-size=&quot;size16&quot;&gt;pain이라는 토큰의 Q는 다음 의미에 가깝습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;erlang&quot;&gt;&lt;code&gt;나는 어떤 부위의 통증인지, 누가 겪는 통증인지 알고 싶다.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1313&quot; data-start=&quot;1278&quot; data-ke-size=&quot;size16&quot;&gt;즉, Q는 &lt;b&gt;현재 토큰이 다른 토큰에게 던지는 질문&lt;/b&gt;입니다.&lt;/p&gt;
&lt;hr data-end=&quot;1318&quot; data-start=&quot;1315&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;1331&quot; data-start=&quot;1320&quot; data-section-id=&quot;s3q0rh&quot;&gt;5.3 K: Key&lt;/h1&gt;
&lt;h2 data-end=&quot;1342&quot; data-start=&quot;1333&quot; data-section-id=&quot;107ydok&quot; data-ke-size=&quot;size26&quot;&gt;5.3.1 정의&lt;/h2&gt;
&lt;p data-end=&quot;1395&quot; data-start=&quot;1344&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;K(Key)&lt;/b&gt;는 각 토큰이 &amp;ldquo;나는 이런 정보를 가지고 있다&amp;rdquo;라고 표시하는 벡터입니다.&lt;/p&gt;
&lt;p data-end=&quot;1410&quot; data-start=&quot;1397&quot; data-ke-size=&quot;size16&quot;&gt;수식은 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;K = Wk x&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1438&quot; data-start=&quot;1434&quot; data-ke-size=&quot;size16&quot;&gt;여기서:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;기호의미
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1535&quot; data-start=&quot;1440&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;1535&quot; data-start=&quot;1462&quot;&gt;
&lt;tr data-end=&quot;1485&quot; data-start=&quot;1462&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1466&quot; data-start=&quot;1462&quot;&gt;x&lt;/td&gt;
&lt;td data-end=&quot;1485&quot; data-start=&quot;1466&quot; data-col-size=&quot;sm&quot;&gt;입력 hidden state&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1516&quot; data-start=&quot;1486&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1491&quot; data-start=&quot;1486&quot;&gt;Wk&lt;/td&gt;
&lt;td data-end=&quot;1516&quot; data-start=&quot;1491&quot; data-col-size=&quot;sm&quot;&gt;Key projection matrix&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1535&quot; data-start=&quot;1517&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1521&quot; data-start=&quot;1517&quot;&gt;K&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1535&quot; data-start=&quot;1521&quot;&gt;key vector&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-end=&quot;1546&quot; data-start=&quot;1537&quot; data-section-id=&quot;107zfdz&quot; data-ke-size=&quot;size26&quot;&gt;5.3.2 역할&lt;/h2&gt;
&lt;p data-end=&quot;1587&quot; data-start=&quot;1548&quot; data-ke-size=&quot;size16&quot;&gt;K는 각 토큰의 &lt;b&gt;검색용 태그&lt;/b&gt; 또는 &lt;b&gt;주소표&lt;/b&gt; 역할을 합니다.&lt;/p&gt;
&lt;p data-end=&quot;1632&quot; data-start=&quot;1589&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 patient라는 토큰의 K는 다음 정보와 관련될 수 있습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;awk&quot;&gt;&lt;code&gt;나는 사람/환자/주어에 관한 정보다.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1703&quot; data-start=&quot;1668&quot; data-ke-size=&quot;size16&quot;&gt;chest라는 토큰의 K는 다음 정보와 관련될 수 있습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;erlang&quot;&gt;&lt;code&gt;나는 신체 부위 정보다.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1767&quot; data-start=&quot;1732&quot; data-ke-size=&quot;size16&quot;&gt;pain이라는 토큰의 K는 다음 정보와 관련될 수 있습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;erlang&quot;&gt;&lt;code&gt;나는 증상 정보다.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1808&quot; data-start=&quot;1793&quot; data-ke-size=&quot;size16&quot;&gt;Q와 K는 서로 비교됩니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;nginx&quot;&gt;&lt;code&gt;Q &amp;middot; K&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1881&quot; data-start=&quot;1829&quot; data-ke-size=&quot;size16&quot;&gt;이 값이 크면 현재 토큰이 해당 토큰을 많이 참고합니다.&lt;br /&gt;이 값이 작으면 적게 참고합니다.&lt;/p&gt;
&lt;hr data-end=&quot;1886&quot; data-start=&quot;1883&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;1901&quot; data-start=&quot;1888&quot; data-section-id=&quot;3vd1gb&quot;&gt;5.4 V: Value&lt;/h1&gt;
&lt;h2 data-end=&quot;1912&quot; data-start=&quot;1903&quot; data-section-id=&quot;yge00z&quot; data-ke-size=&quot;size26&quot;&gt;5.4.1 정의&lt;/h2&gt;
&lt;p data-end=&quot;1964&quot; data-start=&quot;1914&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;V(Value)&lt;/b&gt;는 attention으로 선택되었을 때 실제로 가져오는 정보입니다.&lt;/p&gt;
&lt;p data-end=&quot;1979&quot; data-start=&quot;1966&quot; data-ke-size=&quot;size16&quot;&gt;수식은 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;V = Wv x&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2007&quot; data-start=&quot;2003&quot; data-ke-size=&quot;size16&quot;&gt;여기서:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;기호의미
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;2108&quot; data-start=&quot;2009&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;2108&quot; data-start=&quot;2031&quot;&gt;
&lt;tr data-end=&quot;2054&quot; data-start=&quot;2031&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2035&quot; data-start=&quot;2031&quot;&gt;x&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2054&quot; data-start=&quot;2035&quot;&gt;입력 hidden state&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2087&quot; data-start=&quot;2055&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2060&quot; data-start=&quot;2055&quot;&gt;Wv&lt;/td&gt;
&lt;td data-end=&quot;2087&quot; data-start=&quot;2060&quot; data-col-size=&quot;sm&quot;&gt;Value projection matrix&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2108&quot; data-start=&quot;2088&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2092&quot; data-start=&quot;2088&quot;&gt;V&lt;/td&gt;
&lt;td data-end=&quot;2108&quot; data-start=&quot;2092&quot; data-col-size=&quot;sm&quot;&gt;value vector&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-end=&quot;2119&quot; data-start=&quot;2110&quot; data-section-id=&quot;ygegw0&quot; data-ke-size=&quot;size26&quot;&gt;5.4.2 역할&lt;/h2&gt;
&lt;p data-end=&quot;2179&quot; data-start=&quot;2121&quot; data-ke-size=&quot;size16&quot;&gt;Q와 K는 &amp;ldquo;얼마나 참고할지&amp;rdquo;를 정하는 데 사용됩니다.&lt;br /&gt;V는 &amp;ldquo;참고한 뒤 실제로 가져올 내용&amp;rdquo;입니다.&lt;/p&gt;
&lt;p data-end=&quot;2183&quot; data-start=&quot;2181&quot; data-ke-size=&quot;size16&quot;&gt;즉:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;Q와 K = 관련도 계산용
V = 실제 정보 전달용&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2335&quot; data-start=&quot;2227&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 she가 patient를 강하게 참고한다고 하면, 모델은 patient의 V를 많이 가져옵니다. 그 결과 she의 표현에는 &amp;ldquo;patient와 관련된 정보&amp;rdquo;가 반영됩니다.&lt;/p&gt;
&lt;hr data-end=&quot;2340&quot; data-start=&quot;2337&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;2360&quot; data-start=&quot;2342&quot; data-section-id=&quot;mwwit1&quot;&gt;5.5 Q, K, V 전체 흐름&lt;/h1&gt;
&lt;p data-end=&quot;2401&quot; data-start=&quot;2362&quot; data-ke-size=&quot;size16&quot;&gt;Transformer attention의 전체 흐름은 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;lsl&quot;&gt;&lt;code&gt;1. 각 토큰의 hidden state x에서 Q, K, V를 만든다.

2. 현재 토큰의 Q와 모든 토큰의 K를 비교한다.

3. 비교 점수에 softmax를 적용해서 attention weight를 만든다.

4. attention weight를 이용해 각 토큰의 V를 가중합한다.

5. 그 결과가 현재 토큰의 새로운 표현이 된다.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2620&quot; data-start=&quot;2605&quot; data-ke-size=&quot;size16&quot;&gt;수식으로는 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;lisp&quot;&gt;&lt;code&gt;Attention(Q, K, V) = softmax(QKᵀ / &amp;radic;d) V&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2695&quot; data-start=&quot;2676&quot; data-ke-size=&quot;size16&quot;&gt;각 부분의 의미는 다음과 같습니다.&lt;/p&gt;
&lt;h2 data-end=&quot;4182&quot; data-start=&quot;4161&quot; data-section-id=&quot;1qegae1&quot; data-ke-size=&quot;size26&quot;&gt;5.6 어디에 붙이는 것이 좋은가&lt;/h2&gt;
&lt;p data-end=&quot;4202&quot; data-start=&quot;4184&quot; data-ke-size=&quot;size16&quot;&gt;일반적으로 다음 기준을 따릅니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;설정특징
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;4414&quot; data-start=&quot;4204&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;4414&quot; data-start=&quot;4226&quot;&gt;
&lt;tr data-end=&quot;4267&quot; data-start=&quot;4226&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4247&quot; data-start=&quot;4226&quot;&gt;q_proj, v_proj만 적용&lt;/td&gt;
&lt;td data-end=&quot;4267&quot; data-start=&quot;4247&quot; data-col-size=&quot;sm&quot;&gt;가장 가벼움. 메모리 절약 큼&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;4326&quot; data-start=&quot;4268&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4304&quot; data-start=&quot;4268&quot;&gt;q_proj, k_proj, v_proj, o_proj 적용&lt;/td&gt;
&lt;td data-end=&quot;4326&quot; data-start=&quot;4304&quot; data-col-size=&quot;sm&quot;&gt;attention 전체 조정 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;4379&quot; data-start=&quot;4327&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4351&quot; data-start=&quot;4327&quot;&gt;attention + MLP 전체 적용&lt;/td&gt;
&lt;td data-end=&quot;4379&quot; data-start=&quot;4351&quot; data-col-size=&quot;sm&quot;&gt;성능은 좋아질 수 있으나 학습 파라미터 증가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;4414&quot; data-start=&quot;4380&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4396&quot; data-start=&quot;4380&quot;&gt;all linear 적용&lt;/td&gt;
&lt;td data-end=&quot;4414&quot; data-start=&quot;4396&quot; data-col-size=&quot;sm&quot;&gt;가장 강력하지만 비용 증가&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;4508&quot; data-start=&quot;4416&quot; data-ke-size=&quot;size16&quot;&gt;작은 데이터셋에서는 너무 많은 레이어에 LoRA를 붙이면 과적합이 발생할 수 있습니다. 반대로 복잡한 작업에서는 q_proj, v_proj만으로 부족할 수 있습니다.&lt;/p&gt;
&lt;hr data-end=&quot;4513&quot; data-start=&quot;4510&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;4530&quot; data-start=&quot;4515&quot; data-section-id=&quot;n9rs76&quot;&gt;6. LoRA 학습 절차&lt;/h1&gt;
&lt;h2 data-end=&quot;4544&quot; data-start=&quot;4532&quot; data-section-id=&quot;yxq3b0&quot; data-ke-size=&quot;size26&quot;&gt;6.1 전체 절차&lt;/h2&gt;
&lt;p data-end=&quot;4568&quot; data-start=&quot;4546&quot; data-ke-size=&quot;size16&quot;&gt;LoRA 학습은 다음 순서로 진행됩니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;4716&quot; data-start=&quot;4570&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;4585&quot; data-start=&quot;4570&quot; data-section-id=&quot;4aryr2&quot;&gt;사전학습 모델 로드&lt;/li&gt;
&lt;li data-end=&quot;4605&quot; data-start=&quot;4586&quot; data-section-id=&quot;s74lzu&quot;&gt;모델 파라미터 freeze&lt;/li&gt;
&lt;li data-end=&quot;4626&quot; data-start=&quot;4606&quot; data-section-id=&quot;3d2hc7&quot;&gt;LoRA adapter 삽입&lt;/li&gt;
&lt;li data-end=&quot;4641&quot; data-start=&quot;4627&quot; data-section-id=&quot;1wjyawz&quot;&gt;학습 데이터 준비&lt;/li&gt;
&lt;li data-end=&quot;4658&quot; data-start=&quot;4642&quot; data-section-id=&quot;1lrk9ux&quot;&gt;adapter만 학습&lt;/li&gt;
&lt;li data-end=&quot;4674&quot; data-start=&quot;4659&quot; data-section-id=&quot;3wtt1d&quot;&gt;검증 데이터로 평가&lt;/li&gt;
&lt;li data-end=&quot;4690&quot; data-start=&quot;4675&quot; data-section-id=&quot;87nq9a&quot;&gt;adapter 저장&lt;/li&gt;
&lt;li data-end=&quot;4716&quot; data-start=&quot;4691&quot; data-section-id=&quot;u11ofl&quot;&gt;추론 시 원본 모델과 adapter 결합&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-end=&quot;4731&quot; data-start=&quot;4718&quot; data-section-id=&quot;usveyu&quot; data-ke-size=&quot;size26&quot;&gt;6.2 단계별 설명&lt;/h2&gt;
&lt;h3 data-end=&quot;4755&quot; data-start=&quot;4733&quot; data-section-id=&quot;1l6edw2&quot; data-ke-size=&quot;size23&quot;&gt;1단계. Base Model 선택&lt;/h3&gt;
&lt;p data-end=&quot;4760&quot; data-start=&quot;4757&quot; data-ke-size=&quot;size16&quot;&gt;예시:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;Llama 3.2 3B
Mistral 7B
Qwen 계열 모델
Gemma 계열 모델&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;4950&quot; data-start=&quot;4822&quot; data-ke-size=&quot;size16&quot;&gt;프로젝트 문서 기준으로는 Llama 3.2 3B를 primary model로 사용하고, fine-tuning은 QLoRA rank 32&amp;ndash;64로 계획되어 있습니다.&lt;/p&gt;
&lt;h3 data-end=&quot;4970&quot; data-start=&quot;4952&quot; data-section-id=&quot;15wj50n&quot; data-ke-size=&quot;size23&quot;&gt;2단계. 데이터 형식 정의&lt;/h3&gt;
&lt;p data-end=&quot;5030&quot; data-start=&quot;4972&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 agenda extraction 모델을 학습한다면 입력과 출력은 다음처럼 구성할 수 있습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;tex&quot;&gt;&lt;code&gt;{
  &quot;input&quot;: &quot;[Context]: Patient presents with chronic cough | Cough produces yellow mucus\n[Utterance]: [Patient] Night sweats too, maybe for a week.&quot;,
  &quot;output&quot;: &quot;{\&quot;relevant\&quot;: true, \&quot;type\&quot;: \&quot;detail\&quot;, \&quot;summary\&quot;: \&quot;Patient reports night sweats for approximately one week\&quot;}&quot;
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;5465&quot; data-start=&quot;5331&quot; data-ke-size=&quot;size16&quot;&gt;프로젝트 문서에서도 모델 입력은 [Context]와 [Utterance]이고, 출력은 relevant, type, summary의 3개 필드로 제한됩니다.&lt;/p&gt;
&lt;h3 data-end=&quot;5488&quot; data-start=&quot;5467&quot; data-section-id=&quot;1l5ze3m&quot; data-ke-size=&quot;size23&quot;&gt;3단계. Tokenization&lt;/h3&gt;
&lt;p data-end=&quot;5515&quot; data-start=&quot;5490&quot; data-ke-size=&quot;size16&quot;&gt;입출력 문장을 tokenizer로 변환합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;문자열 &amp;rarr; token id sequence&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;5629&quot; data-start=&quot;5554&quot; data-ke-size=&quot;size16&quot;&gt;학습에서는 보통 instruction 부분은 loss에서 제외하고, output 부분에 대해서만 loss를 계산하는 방식을 사용합니다.&lt;/p&gt;
&lt;p data-end=&quot;5633&quot; data-start=&quot;5631&quot; data-ke-size=&quot;size16&quot;&gt;예:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;jboss-cli&quot;&gt;&lt;code&gt;입력: [Context] ... [Utterance] ...
정답: {&quot;relevant&quot;: true, ...}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;5735&quot; data-start=&quot;5710&quot; data-ke-size=&quot;size16&quot;&gt;모델이 정답 JSON을 생성하도록 학습합니다.&lt;/p&gt;
&lt;h3 data-end=&quot;5753&quot; data-start=&quot;5737&quot; data-section-id=&quot;1ngj5yp&quot; data-ke-size=&quot;size23&quot;&gt;4단계. LoRA 설정&lt;/h3&gt;
&lt;p data-end=&quot;5774&quot; data-start=&quot;5755&quot; data-ke-size=&quot;size16&quot;&gt;대표적인 설정값은 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;항목의미
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;5983&quot; data-start=&quot;5776&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;5983&quot; data-start=&quot;5798&quot;&gt;
&lt;tr data-end=&quot;5815&quot; data-start=&quot;5798&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;5802&quot; data-start=&quot;5798&quot;&gt;r&lt;/td&gt;
&lt;td data-end=&quot;5815&quot; data-start=&quot;5802&quot; data-col-size=&quot;sm&quot;&gt;LoRA rank&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;5852&quot; data-start=&quot;5816&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;5829&quot; data-start=&quot;5816&quot;&gt;lora_alpha&lt;/td&gt;
&lt;td data-end=&quot;5852&quot; data-start=&quot;5829&quot; data-col-size=&quot;sm&quot;&gt;LoRA scaling factor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;5890&quot; data-start=&quot;5853&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;5868&quot; data-start=&quot;5853&quot;&gt;lora_dropout&lt;/td&gt;
&lt;td data-end=&quot;5890&quot; data-start=&quot;5868&quot; data-col-size=&quot;sm&quot;&gt;adapter 경로 dropout&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;5924&quot; data-start=&quot;5891&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;5908&quot; data-start=&quot;5891&quot;&gt;target_modules&lt;/td&gt;
&lt;td data-end=&quot;5924&quot; data-start=&quot;5908&quot; data-col-size=&quot;sm&quot;&gt;LoRA를 붙일 레이어&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;5946&quot; data-start=&quot;5925&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;5932&quot; data-start=&quot;5925&quot;&gt;bias&lt;/td&gt;
&lt;td data-end=&quot;5946&quot; data-start=&quot;5932&quot; data-col-size=&quot;sm&quot;&gt;bias 학습 여부&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;5983&quot; data-start=&quot;5947&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;5959&quot; data-start=&quot;5947&quot;&gt;task_type&lt;/td&gt;
&lt;td data-end=&quot;5983&quot; data-start=&quot;5959&quot; data-col-size=&quot;sm&quot;&gt;causal LM, seq2seq 등&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;5991&quot; data-start=&quot;5985&quot; data-ke-size=&quot;size16&quot;&gt;예시 설정:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;r = 16
lora_alpha = 32
lora_dropout = 0.05
target_modules = [&quot;q_proj&quot;, &quot;v_proj&quot;]&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-end=&quot;6100&quot; data-start=&quot;6089&quot; data-section-id=&quot;nx64yl&quot; data-ke-size=&quot;size23&quot;&gt;5단계. 학습&lt;/h3&gt;
&lt;p data-end=&quot;6143&quot; data-start=&quot;6102&quot; data-ke-size=&quot;size16&quot;&gt;학습 중 업데이트되는 것은 LoRA adapter의 A, B 행렬뿐입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;groovy&quot;&gt;&lt;code&gt;원본 모델 W: 고정
LoRA A: 학습
LoRA B: 학습&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-end=&quot;6203&quot; data-start=&quot;6192&quot; data-section-id=&quot;rlvwc7&quot; data-ke-size=&quot;size23&quot;&gt;6단계. 저장&lt;/h3&gt;
&lt;p data-end=&quot;6239&quot; data-start=&quot;6205&quot; data-ke-size=&quot;size16&quot;&gt;학습 후 저장되는 것은 보통 adapter weight입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;css&quot;&gt;&lt;code&gt;adapter_model.safetensors
adapter_config.json&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;6323&quot; data-start=&quot;6300&quot; data-ke-size=&quot;size16&quot;&gt;원본 모델을 다시 저장할 필요가 없습니다.&lt;/p&gt;
&lt;h3 data-end=&quot;6336&quot; data-start=&quot;6325&quot; data-section-id=&quot;1bo8vvr&quot; data-ke-size=&quot;size23&quot;&gt;7단계. 추론&lt;/h3&gt;
&lt;p data-end=&quot;6358&quot; data-start=&quot;6338&quot; data-ke-size=&quot;size16&quot;&gt;추론 시에는 다음 구조로 사용합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;armasm&quot;&gt;&lt;code&gt;Base Model + LoRA Adapter&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;6442&quot; data-start=&quot;6399&quot; data-ke-size=&quot;size16&quot;&gt;또는 adapter를 base model에 merge하여 사용할 수 있습니다.&lt;/p&gt;
&lt;hr data-end=&quot;6447&quot; data-start=&quot;6444&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;6470&quot; data-start=&quot;6449&quot; data-section-id=&quot;pkcvnb&quot;&gt;7. LoRA의 주요 하이퍼파라미터&lt;/h1&gt;
&lt;h2 data-end=&quot;6486&quot; data-start=&quot;6472&quot; data-section-id=&quot;uzg2n9&quot; data-ke-size=&quot;size26&quot;&gt;7.1 r, rank&lt;/h2&gt;
&lt;p data-end=&quot;6508&quot; data-start=&quot;6488&quot; data-ke-size=&quot;size16&quot;&gt;r은 LoRA의 내부 차원입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;armasm&quot;&gt;&lt;code&gt;&amp;Delta;W = B A
A: r &amp;times; input_dim
B: output_dim &amp;times; r&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;6634&quot; data-start=&quot;6567&quot; data-ke-size=&quot;size16&quot;&gt;r이 작으면 학습 파라미터가 적고 가볍습니다.&lt;br /&gt;r이 크면 표현력이 커지지만 메모리 사용량과 과적합 위험이 증가합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;r 값특징
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;6824&quot; data-start=&quot;6636&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;6824&quot; data-start=&quot;6660&quot;&gt;
&lt;tr data-end=&quot;6685&quot; data-start=&quot;6660&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;6664&quot; data-start=&quot;6660&quot;&gt;4&lt;/td&gt;
&lt;td data-end=&quot;6685&quot; data-start=&quot;6664&quot; data-col-size=&quot;sm&quot;&gt;매우 가벼움, 단순 작업에 적합&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;6705&quot; data-start=&quot;6686&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;6690&quot; data-start=&quot;6686&quot;&gt;8&lt;/td&gt;
&lt;td data-end=&quot;6705&quot; data-start=&quot;6690&quot; data-col-size=&quot;sm&quot;&gt;일반적인 저비용 설정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;6724&quot; data-start=&quot;6706&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;6711&quot; data-start=&quot;6706&quot;&gt;16&lt;/td&gt;
&lt;td data-end=&quot;6724&quot; data-start=&quot;6711&quot; data-col-size=&quot;sm&quot;&gt;성능과 비용 균형&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;6763&quot; data-start=&quot;6725&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;6730&quot; data-start=&quot;6725&quot;&gt;32&lt;/td&gt;
&lt;td data-end=&quot;6763&quot; data-start=&quot;6730&quot; data-col-size=&quot;sm&quot;&gt;복잡한 instruction tuning에 자주 사용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;6790&quot; data-start=&quot;6764&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;6769&quot; data-start=&quot;6764&quot;&gt;64&lt;/td&gt;
&lt;td data-end=&quot;6790&quot; data-start=&quot;6769&quot; data-col-size=&quot;sm&quot;&gt;더 강한 적응 가능, 비용 증가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;6824&quot; data-start=&quot;6791&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;6800&quot; data-start=&quot;6791&quot;&gt;128 이상&lt;/td&gt;
&lt;td data-end=&quot;6824&quot; data-start=&quot;6800&quot; data-col-size=&quot;sm&quot;&gt;큰 데이터 또는 고난도 작업에서 고려&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;6980&quot; data-start=&quot;6826&quot; data-ke-size=&quot;size16&quot;&gt;프로젝트 문서에서는 QLoRA rank 32&amp;ndash;64를 계획하고 있습니다. 이는 agenda extraction처럼 출력 형식과 도메인 적응이 모두 필요한 작업에서 비교적 강한 adapter를 쓰려는 설정입니다.&lt;/p&gt;
&lt;h2 data-end=&quot;6999&quot; data-start=&quot;6982&quot; data-section-id=&quot;1nj961h&quot; data-ke-size=&quot;size26&quot;&gt;7.2 lora_alpha&lt;/h2&gt;
&lt;p data-end=&quot;7038&quot; data-start=&quot;7001&quot; data-ke-size=&quot;size16&quot;&gt;lora_alpha는 LoRA 보정값의 scale을 조절합니다.&lt;/p&gt;
&lt;p data-end=&quot;7071&quot; data-start=&quot;7040&quot; data-ke-size=&quot;size16&quot;&gt;일반적으로 LoRA 출력은 다음처럼 scaling됩니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;gml&quot;&gt;&lt;code&gt;h = W x + (alpha / r) B A x&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;7149&quot; data-start=&quot;7114&quot; data-ke-size=&quot;size16&quot;&gt;여기서 alpha / r이 scaling factor입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;설정영향
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;7248&quot; data-start=&quot;7151&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;7248&quot; data-start=&quot;7173&quot;&gt;
&lt;tr data-end=&quot;7199&quot; data-start=&quot;7173&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;7185&quot; data-start=&quot;7173&quot;&gt;alpha가 작음&lt;/td&gt;
&lt;td data-end=&quot;7199&quot; data-start=&quot;7185&quot; data-col-size=&quot;sm&quot;&gt;LoRA 영향 약함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;7225&quot; data-start=&quot;7200&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;7211&quot; data-start=&quot;7200&quot;&gt;alpha가 큼&lt;/td&gt;
&lt;td data-end=&quot;7225&quot; data-start=&quot;7211&quot; data-col-size=&quot;sm&quot;&gt;LoRA 영향 강함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;7248&quot; data-start=&quot;7226&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;7236&quot; data-start=&quot;7226&quot;&gt;alpha/r&lt;/td&gt;
&lt;td data-end=&quot;7248&quot; data-start=&quot;7236&quot; data-col-size=&quot;sm&quot;&gt;실제 보정 강도&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;7252&quot; data-start=&quot;7250&quot; data-ke-size=&quot;size16&quot;&gt;예:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;r = 16
alpha = 32
alpha/r = 2&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-end=&quot;8131&quot; data-start=&quot;8111&quot; data-section-id=&quot;1xfks2n&quot; data-ke-size=&quot;size26&quot;&gt;7.3 learning rate&lt;/h2&gt;
&lt;p data-end=&quot;8212&quot; data-start=&quot;8133&quot; data-ke-size=&quot;size16&quot;&gt;LoRA는 전체 모델보다 학습 파라미터가 적기 때문에 full fine-tuning보다 learning rate를 크게 잡는 경우가 많습니다.&lt;/p&gt;
&lt;p data-end=&quot;8220&quot; data-start=&quot;8214&quot; data-ke-size=&quot;size16&quot;&gt;일반 범위:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;1e-4 ~ 2e-4: 일반 LoRA/QLoRA instruction tuning
5e-5: 안정적인 task fine-tuning
1e-5: 작은 실제 데이터로 calibration&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;8369&quot; data-start=&quot;8338&quot; data-ke-size=&quot;size16&quot;&gt;프로젝트 문서에서도 3단계 학습률을 다음처럼 설정합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;단계데이터학습률
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;8562&quot; data-start=&quot;8371&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;8562&quot; data-start=&quot;8405&quot;&gt;
&lt;tr data-end=&quot;8453&quot; data-start=&quot;8405&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;8415&quot; data-start=&quot;8405&quot;&gt;Phase 1&lt;/td&gt;
&lt;td data-end=&quot;8445&quot; data-start=&quot;8415&quot; data-col-size=&quot;sm&quot;&gt;Synthetic + NoteChat subset&lt;/td&gt;
&lt;td data-end=&quot;8453&quot; data-start=&quot;8445&quot; data-col-size=&quot;sm&quot;&gt;1e-4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;8507&quot; data-start=&quot;8454&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;8464&quot; data-start=&quot;8454&quot;&gt;Phase 2&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;8499&quot; data-start=&quot;8464&quot;&gt;MTS-Dialog + ACI + PriMock + AMI&lt;/td&gt;
&lt;td data-end=&quot;8507&quot; data-start=&quot;8499&quot; data-col-size=&quot;sm&quot;&gt;5e-5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;8562&quot; data-start=&quot;8508&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;8518&quot; data-start=&quot;8508&quot;&gt;Phase 3&lt;/td&gt;
&lt;td data-end=&quot;8554&quot; data-start=&quot;8518&quot; data-col-size=&quot;sm&quot;&gt;Penn Medicine train conversations&lt;/td&gt;
&lt;td data-end=&quot;8562&quot; data-start=&quot;8554&quot; data-col-size=&quot;sm&quot;&gt;1e-5&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;8647&quot; data-start=&quot;8564&quot; data-ke-size=&quot;size16&quot;&gt;해당 구성은 &amp;ldquo;대규모 일반 적응 &amp;rarr; 작업 적응 &amp;rarr; 실제 데이터 보정&amp;rdquo; 순서입니다.&lt;/p&gt;
&lt;hr data-end=&quot;8652&quot; data-start=&quot;8649&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;8667&quot; data-start=&quot;8654&quot; data-section-id=&quot;4kz3rh&quot;&gt;8. LoRA의 장점&lt;/h1&gt;
&lt;h2 data-end=&quot;8688&quot; data-start=&quot;8669&quot; data-section-id=&quot;15rdi4y&quot; data-ke-size=&quot;size26&quot;&gt;8.1 학습 파라미터 수 감소&lt;/h2&gt;
&lt;p data-end=&quot;8729&quot; data-start=&quot;8690&quot; data-ke-size=&quot;size16&quot;&gt;LoRA의 가장 큰 장점은 학습할 파라미터 수가 매우 적다는 점입니다.&lt;/p&gt;
&lt;p data-end=&quot;8812&quot; data-start=&quot;8731&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 전체 모델이 7B라도 실제 학습 파라미터는 수백만 개에서 수천만 개 수준일 수 있습니다. 이는 전체 대비 1% 미만인 경우가 많습니다.&lt;/p&gt;
&lt;h2 data-end=&quot;8831&quot; data-start=&quot;8814&quot; data-section-id=&quot;79zoxy&quot; data-ke-size=&quot;size26&quot;&gt;8.2 GPU 메모리 절약&lt;/h2&gt;
&lt;p data-end=&quot;8904&quot; data-start=&quot;8833&quot; data-ke-size=&quot;size16&quot;&gt;원본 모델을 업데이트하지 않으므로 gradient와 optimizer state를 전체 파라미터에 대해 저장할 필요가 없습니다.&lt;/p&gt;
&lt;p data-end=&quot;8933&quot; data-start=&quot;8906&quot; data-ke-size=&quot;size16&quot;&gt;메모리 측면에서 대략 다음과 같이 차이가 납니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;방식메모리 부담
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;9022&quot; data-start=&quot;8935&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;9022&quot; data-start=&quot;8961&quot;&gt;
&lt;tr data-end=&quot;8988&quot; data-start=&quot;8961&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;8980&quot; data-start=&quot;8961&quot;&gt;Full fine-tuning&lt;/td&gt;
&lt;td data-end=&quot;8988&quot; data-start=&quot;8980&quot; data-col-size=&quot;sm&quot;&gt;매우 큼&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;9005&quot; data-start=&quot;8989&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;8996&quot; data-start=&quot;8989&quot;&gt;LoRA&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;9005&quot; data-start=&quot;8996&quot;&gt;중간 이하&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;9022&quot; data-start=&quot;9006&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;9014&quot; data-start=&quot;9006&quot;&gt;QLoRA&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;9022&quot; data-start=&quot;9014&quot;&gt;더 작음&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-end=&quot;9039&quot; data-start=&quot;9024&quot; data-section-id=&quot;qg7i1t&quot; data-ke-size=&quot;size26&quot;&gt;8.3 저장 공간 절약&lt;/h2&gt;
&lt;p data-end=&quot;9087&quot; data-start=&quot;9041&quot; data-ke-size=&quot;size16&quot;&gt;작업별로 전체 모델 checkpoint를 저장하지 않고 adapter만 저장합니다.&lt;/p&gt;
&lt;p data-end=&quot;9091&quot; data-start=&quot;9089&quot; data-ke-size=&quot;size16&quot;&gt;예:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;armasm&quot;&gt;&lt;code&gt;base_model/
adapter_medical_summary/
adapter_code_generation/
adapter_clinical_agenda/
adapter_customer_service/&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;9270&quot; data-start=&quot;9219&quot; data-ke-size=&quot;size16&quot;&gt;작업별 adapter만 교체하면 같은 base model을 여러 용도로 사용할 수 있습니다.&lt;/p&gt;
&lt;h2 data-end=&quot;9285&quot; data-start=&quot;9272&quot; data-section-id=&quot;sg2916&quot; data-ke-size=&quot;size26&quot;&gt;8.4 배포 유연성&lt;/h2&gt;
&lt;p data-end=&quot;9325&quot; data-start=&quot;9287&quot; data-ke-size=&quot;size16&quot;&gt;하나의 base model에 여러 adapter를 붙일 수 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;9329&quot; data-start=&quot;9327&quot; data-ke-size=&quot;size16&quot;&gt;예:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;Adapter목적
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;9494&quot; data-start=&quot;9331&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;9494&quot; data-start=&quot;9358&quot;&gt;
&lt;tr data-end=&quot;9400&quot; data-start=&quot;9358&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;9381&quot; data-start=&quot;9358&quot;&gt;clinical_agenda_lora&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;9400&quot; data-start=&quot;9381&quot;&gt;의료 대화 agenda 추출&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;9431&quot; data-start=&quot;9401&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;9422&quot; data-start=&quot;9401&quot;&gt;summarization_lora&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;9431&quot; data-start=&quot;9422&quot;&gt;문서 요약&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;9457&quot; data-start=&quot;9432&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;9445&quot; data-start=&quot;9432&quot;&gt;legal_lora&lt;/td&gt;
&lt;td data-end=&quot;9457&quot; data-start=&quot;9445&quot; data-col-size=&quot;sm&quot;&gt;법률 문서 분석&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;9494&quot; data-start=&quot;9458&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;9482&quot; data-start=&quot;9458&quot;&gt;customer_support_lora&lt;/td&gt;
&lt;td data-end=&quot;9494&quot; data-start=&quot;9482&quot; data-col-size=&quot;sm&quot;&gt;고객 상담 응답&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-end=&quot;9509&quot; data-start=&quot;9496&quot; data-section-id=&quot;1te05j6&quot; data-ke-size=&quot;size26&quot;&gt;8.5 과적합 완화&lt;/h2&gt;
&lt;p data-end=&quot;9599&quot; data-start=&quot;9511&quot; data-ke-size=&quot;size16&quot;&gt;작은 데이터셋에서 전체 모델을 업데이트하면 모델의 일반 능력이 손상될 수 있습니다. LoRA는 변경 가능한 부분을 제한하므로 과도한 변형을 줄일 수 있습니다.&lt;/p&gt;
&lt;hr data-end=&quot;9604&quot; data-start=&quot;9601&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;9619&quot; data-start=&quot;9606&quot; data-section-id=&quot;ga9s81&quot;&gt;9. LoRA의 단점&lt;/h1&gt;
&lt;h2 data-end=&quot;9634&quot; data-start=&quot;9621&quot; data-section-id=&quot;bui72&quot; data-ke-size=&quot;size26&quot;&gt;9.1 표현력 제한&lt;/h2&gt;
&lt;p data-end=&quot;9735&quot; data-start=&quot;9636&quot; data-ke-size=&quot;size16&quot;&gt;LoRA는 low-rank 업데이트만 허용합니다. 따라서 작업이 매우 복잡하거나 기존 모델 능력과 크게 다른 경우에는 full fine-tuning보다 성능이 낮을 수 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;9739&quot; data-start=&quot;9737&quot; data-ke-size=&quot;size16&quot;&gt;예:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;기존 모델이 거의 모르는 언어 학습
매우 특수한 수학/코드 도메인
새로운 modality 처리
기존 tokenizer로 표현이 어려운 도메인&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;10787&quot; data-start=&quot;10708&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-end=&quot;10792&quot; data-start=&quot;10789&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;10823&quot; data-start=&quot;10794&quot; data-section-id=&quot;10fzjp3&quot;&gt;10. LoRA와 Prompt Tuning의 차이&lt;/h1&gt;
&lt;p data-end=&quot;10878&quot; data-start=&quot;10825&quot; data-ke-size=&quot;size16&quot;&gt;Prompt tuning은 모델 앞에 학습 가능한 virtual token을 붙이는 방식입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;구분Prompt TuningLoRA
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;11090&quot; data-start=&quot;10880&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;11090&quot; data-start=&quot;10924&quot;&gt;
&lt;tr data-end=&quot;10966&quot; data-start=&quot;10924&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;10932&quot; data-start=&quot;10924&quot;&gt;학습 대상&lt;/td&gt;
&lt;td data-end=&quot;10966&quot; data-start=&quot;10932&quot; data-col-size=&quot;sm&quot;&gt;입력 앞의 virtual prompt embedding&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;10987&quot; data-start=&quot;10967&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;10978&quot; data-start=&quot;10967&quot;&gt;모델 내부 수정&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;10987&quot; data-start=&quot;10978&quot;&gt;거의 없음&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;11015&quot; data-start=&quot;10988&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;10993&quot; data-start=&quot;10988&quot;&gt;성능&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;11015&quot; data-start=&quot;10993&quot;&gt;작은 모델에서는 제한적일 수 있음&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;11064&quot; data-start=&quot;11016&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;11023&quot; data-start=&quot;11016&quot;&gt;LoRA&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;11064&quot; data-start=&quot;11023&quot;&gt;모델 내부 projection에 low-rank adapter 삽입&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;11090&quot; data-start=&quot;11065&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;11071&quot; data-start=&quot;11065&quot;&gt;표현력&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;11090&quot; data-start=&quot;11071&quot;&gt;LoRA가 일반적으로 더 큼&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;11157&quot; data-start=&quot;11092&quot; data-ke-size=&quot;size16&quot;&gt;Prompt tuning은 매우 가볍지만, 모델 내부 계산 자체를 조정하는 능력은 LoRA보다 약한 경우가 많습니다.&lt;/p&gt;
&lt;hr data-end=&quot;11162&quot; data-start=&quot;11159&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;11195&quot; data-start=&quot;11164&quot; data-section-id=&quot;1umr0re&quot;&gt;12. LoRA와 Full Fine-Tuning 비교&lt;/h1&gt;
&lt;div&gt;
&lt;div&gt;항목Full Fine-TuningLoRA
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;11502&quot; data-start=&quot;11197&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;11502&quot; data-start=&quot;11244&quot;&gt;
&lt;tr data-end=&quot;11261&quot; data-start=&quot;11244&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;11252&quot; data-start=&quot;11244&quot;&gt;학습 대상&lt;/td&gt;
&lt;td data-end=&quot;11261&quot; data-start=&quot;11252&quot; data-col-size=&quot;sm&quot;&gt;전체 모델&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;11279&quot; data-start=&quot;11262&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;11271&quot; data-start=&quot;11262&quot;&gt;메모리 사용&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;11279&quot; data-start=&quot;11271&quot;&gt;매우 큼&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;11308&quot; data-start=&quot;11280&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;11288&quot; data-start=&quot;11280&quot;&gt;저장 파일&lt;/td&gt;
&lt;td data-end=&quot;11308&quot; data-start=&quot;11288&quot; data-col-size=&quot;sm&quot;&gt;전체 모델 checkpoint&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;11323&quot; data-start=&quot;11309&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;11317&quot; data-start=&quot;11309&quot;&gt;성능 상한&lt;/td&gt;
&lt;td data-end=&quot;11323&quot; data-start=&quot;11317&quot; data-col-size=&quot;sm&quot;&gt;높음&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;11347&quot; data-start=&quot;11324&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;11333&quot; data-start=&quot;11324&quot;&gt;과적합 위험&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;11347&quot; data-start=&quot;11333&quot;&gt;데이터 적으면 높음&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;11365&quot; data-start=&quot;11348&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;11357&quot; data-start=&quot;11348&quot;&gt;작업별 관리&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;11365&quot; data-start=&quot;11357&quot;&gt;비효율적&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;11391&quot; data-start=&quot;11366&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;11379&quot; data-start=&quot;11366&quot;&gt;LoRA 학습 대상&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;11391&quot; data-start=&quot;11379&quot;&gt;adapter만&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;11409&quot; data-start=&quot;11392&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;11403&quot; data-start=&quot;11392&quot;&gt;LoRA 메모리&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;11409&quot; data-start=&quot;11403&quot;&gt;작음&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;11435&quot; data-start=&quot;11410&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;11423&quot; data-start=&quot;11410&quot;&gt;LoRA 저장 파일&lt;/td&gt;
&lt;td data-end=&quot;11435&quot; data-start=&quot;11423&quot; data-col-size=&quot;sm&quot;&gt;adapter만&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;11467&quot; data-start=&quot;11436&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;11446&quot; data-start=&quot;11436&quot;&gt;LoRA 성능&lt;/td&gt;
&lt;td data-end=&quot;11467&quot; data-start=&quot;11446&quot; data-col-size=&quot;sm&quot;&gt;대부분 작업에서 효율 대비 우수&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;11502&quot; data-start=&quot;11468&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;11478&quot; data-start=&quot;11468&quot;&gt;LoRA 배포&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;11502&quot; data-start=&quot;11478&quot;&gt;base model + adapter&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;11590&quot; data-start=&quot;11504&quot; data-ke-size=&quot;size16&quot;&gt;정리하면 full fine-tuning은 가장 직접적이고 강력하지만 비용이 큽니다. LoRA는 약간의 성능 손실을 감수할 수 있는 대신 훨씬 효율적입니다.&lt;/p&gt;
&lt;hr data-end=&quot;11595&quot; data-start=&quot;11592&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;11618&quot; data-start=&quot;11597&quot; data-section-id=&quot;1yo4iiv&quot;&gt;13. LoRA와 QLoRA의 관계&lt;/h1&gt;
&lt;h2 data-end=&quot;11636&quot; data-start=&quot;11620&quot; data-section-id=&quot;z0yx84&quot; data-ke-size=&quot;size26&quot;&gt;13.1 QLoRA 정의&lt;/h2&gt;
&lt;p data-end=&quot;11667&quot; data-start=&quot;11638&quot; data-ke-size=&quot;size16&quot;&gt;QLoRA는 &lt;b&gt;Quantized LoRA&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-end=&quot;11769&quot; data-start=&quot;11669&quot; data-ke-size=&quot;size16&quot;&gt;LoRA는 원본 모델을 보통 FP16 또는 BF16 상태로 두고 adapter만 학습합니다.&lt;br /&gt;QLoRA는 원본 모델을 4-bit로 양자화한 상태에서 adapter만 학습합니다.&lt;/p&gt;
&lt;p data-end=&quot;11773&quot; data-start=&quot;11771&quot; data-ke-size=&quot;size16&quot;&gt;즉:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;LoRA = 원본 모델 고정 + low-rank adapter 학습
QLoRA = 4-bit 원본 모델 고정 + low-rank adapter 학습&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-end=&quot;11881&quot; data-start=&quot;11871&quot; data-section-id=&quot;546vm7&quot; data-ke-size=&quot;size26&quot;&gt;13.2 비교&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;항목LoRAQLoRA
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;12183&quot; data-start=&quot;11883&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;12183&quot; data-start=&quot;11919&quot;&gt;
&lt;tr data-end=&quot;11955&quot; data-start=&quot;11919&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;11937&quot; data-start=&quot;11919&quot;&gt;원본 모델 precision&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;11955&quot; data-start=&quot;11937&quot;&gt;FP16/BF16이 일반적&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;11989&quot; data-start=&quot;11956&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;11980&quot; data-start=&quot;11956&quot;&gt;QLoRA 원본 모델 precision&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;11989&quot; data-start=&quot;11980&quot;&gt;4-bit&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;12009&quot; data-start=&quot;11990&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;11998&quot; data-start=&quot;11990&quot;&gt;학습 대상&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;12009&quot; data-start=&quot;11998&quot;&gt;adapter&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;12035&quot; data-start=&quot;12010&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;12024&quot; data-start=&quot;12010&quot;&gt;QLoRA 학습 대상&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;12035&quot; data-start=&quot;12024&quot;&gt;adapter&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;12051&quot; data-start=&quot;12036&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;12045&quot; data-start=&quot;12036&quot;&gt;메모리 사용&lt;/td&gt;
&lt;td data-end=&quot;12051&quot; data-start=&quot;12045&quot; data-col-size=&quot;sm&quot;&gt;작음&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;12075&quot; data-start=&quot;12052&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;12067&quot; data-start=&quot;12052&quot;&gt;QLoRA 메모리 사용&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;12075&quot; data-start=&quot;12067&quot;&gt;더 작음&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;12095&quot; data-start=&quot;12076&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;12081&quot; data-start=&quot;12076&quot;&gt;장점&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;12095&quot; data-start=&quot;12081&quot;&gt;안정적, 구현 단순&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;12131&quot; data-start=&quot;12096&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;12107&quot; data-start=&quot;12096&quot;&gt;QLoRA 장점&lt;/td&gt;
&lt;td data-end=&quot;12131&quot; data-start=&quot;12107&quot; data-col-size=&quot;sm&quot;&gt;저메모리 환경에서 큰 모델 학습 가능&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;12154&quot; data-start=&quot;12132&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;12137&quot; data-start=&quot;12132&quot;&gt;단점&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;12154&quot; data-start=&quot;12137&quot;&gt;QLoRA보다 메모리 큼&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;12183&quot; data-start=&quot;12155&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;12166&quot; data-start=&quot;12155&quot;&gt;QLoRA 단점&lt;/td&gt;
&lt;td data-end=&quot;12183&quot; data-start=&quot;12166&quot; data-col-size=&quot;sm&quot;&gt;양자화 관련 복잡성 증가&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;12362&quot; data-start=&quot;12185&quot; data-ke-size=&quot;size16&quot;&gt;프로젝트처럼 Jetson AGX Orin 환경에서 Llama 3.2 3B를 다루는 경우, QLoRA가 더 현실적입니다. 문서에서도 Llama 3.2 3B는 GGUF Q4_K_M 형태로 운용되고, fine-tuning은 QLoRA로 계획되어 있습니다.&lt;/p&gt;
&lt;hr data-end=&quot;12367&quot; data-start=&quot;12364&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;12389&quot; data-start=&quot;12369&quot; data-section-id=&quot;1bnhdvk&quot;&gt;14. LoRA의 내부 동작 상세&lt;/h1&gt;
&lt;h2 data-end=&quot;12418&quot; data-start=&quot;12391&quot; data-section-id=&quot;gdespm&quot; data-ke-size=&quot;size26&quot;&gt;14.1 기존 weight update 관점&lt;/h2&gt;
&lt;p data-end=&quot;12466&quot; data-start=&quot;12420&quot; data-ke-size=&quot;size16&quot;&gt;Full fine-tuning에서는 어떤 레이어의 weight가 다음처럼 바뀝니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;fix&quot;&gt;&lt;code&gt;W' = W + &amp;Delta;W&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;12519&quot; data-start=&quot;12493&quot; data-ke-size=&quot;size16&quot;&gt;여기서 &amp;Delta;W는 W와 같은 크기의 큰 행렬입니다.&lt;/p&gt;
&lt;p data-end=&quot;12566&quot; data-start=&quot;12521&quot; data-ke-size=&quot;size16&quot;&gt;LoRA는 이 &amp;Delta;W를 직접 학습하지 않고, 낮은 rank 행렬 곱으로 근사합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;armasm&quot;&gt;&lt;code&gt;&amp;Delta;W &amp;asymp; B A&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;12594&quot; data-start=&quot;12590&quot; data-ke-size=&quot;size16&quot;&gt;따라서:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;vbnet&quot;&gt;&lt;code&gt;W' = W + B A&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;12673&quot; data-start=&quot;12622&quot; data-ke-size=&quot;size16&quot;&gt;그러나 실제 학습 중에는 W'를 직접 만들지 않고 forward 계산에서 다음처럼 더합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;sas&quot;&gt;&lt;code&gt;output = W x + B A x&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-end=&quot;12723&quot; data-start=&quot;12709&quot; data-section-id=&quot;8m2nqc&quot; data-ke-size=&quot;size26&quot;&gt;14.2 초기화 방식&lt;/h2&gt;
&lt;p data-end=&quot;12795&quot; data-start=&quot;12725&quot; data-ke-size=&quot;size16&quot;&gt;일반적으로 LoRA에서는 A는 random initialization, B는 zero initialization을 사용합니다.&lt;/p&gt;
&lt;p data-end=&quot;12840&quot; data-start=&quot;12797&quot; data-ke-size=&quot;size16&quot;&gt;이유는 학습 시작 시 모델 출력이 원본 모델과 동일하도록 만들기 위해서입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;nix&quot;&gt;&lt;code&gt;B = 0이면
B A x = 0
따라서 output = W x&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;12971&quot; data-start=&quot;12890&quot; data-ke-size=&quot;size16&quot;&gt;즉, 학습 시작 시점에는 LoRA가 모델 행동을 바꾸지 않습니다. 이후 학습이 진행되면서 B와 A가 업데이트되어 점진적으로 보정 효과를 만듭니다.&lt;/p&gt;
&lt;h2 data-end=&quot;12988&quot; data-start=&quot;12973&quot; data-section-id=&quot;j4kgu8&quot; data-ke-size=&quot;size26&quot;&gt;14.3 Scaling&lt;/h2&gt;
&lt;p data-end=&quot;13018&quot; data-start=&quot;12990&quot; data-ke-size=&quot;size16&quot;&gt;LoRA 출력은 보통 다음처럼 scaling됩니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;sas&quot;&gt;&lt;code&gt;output = W x + (alpha / r) B A x&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;13110&quot; data-start=&quot;13066&quot; data-ke-size=&quot;size16&quot;&gt;이 scaling은 LoRA 보정값이 너무 작거나 너무 커지는 것을 조절합니다.&lt;/p&gt;
&lt;hr data-end=&quot;13115&quot; data-start=&quot;13112&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;13138&quot; data-start=&quot;13117&quot; data-section-id=&quot;o8lmu5&quot;&gt;15. LoRA 파라미터 수 계산법&lt;/h1&gt;
&lt;p data-end=&quot;13178&quot; data-start=&quot;13140&quot; data-ke-size=&quot;size16&quot;&gt;어떤 linear layer가 다음 shape을 가진다고 하겠습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;avrasm&quot;&gt;&lt;code&gt;W: d_out &amp;times; d_in&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;13224&quot; data-start=&quot;13209&quot; data-ke-size=&quot;size16&quot;&gt;LoRA rank가 r이면:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;avrasm&quot;&gt;&lt;code&gt;A: r &amp;times; d_in
B: d_out &amp;times; r&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;13276&quot; data-start=&quot;13264&quot; data-ke-size=&quot;size16&quot;&gt;LoRA 파라미터 수:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;asciidoc&quot;&gt;&lt;code&gt;r &amp;times; d_in + d_out &amp;times; r
= r(d_in + d_out)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;13333&quot; data-start=&quot;13330&quot; data-ke-size=&quot;size16&quot;&gt;예시:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;d_in = 4096
d_out = 4096
r = 16&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;LoRA params = 16 &amp;times; (4096 + 4096)
            = 16 &amp;times; 8192
            = 131,072&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;13478&quot; data-start=&quot;13472&quot; data-ke-size=&quot;size16&quot;&gt;원래 W는:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;basic&quot;&gt;&lt;code&gt;4096 &amp;times; 4096 = 16,777,216&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;13521&quot; data-start=&quot;13518&quot; data-ke-size=&quot;size16&quot;&gt;비율:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;131,072 / 16,777,216 = 0.0078125&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;13583&quot; data-start=&quot;13569&quot; data-ke-size=&quot;size16&quot;&gt;즉, 약 0.78%입니다.&lt;/p&gt;
&lt;hr data-end=&quot;13588&quot; data-start=&quot;13585&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;13608&quot; data-start=&quot;13590&quot; data-section-id=&quot;1rpj5x8&quot;&gt;16. LoRA가 학습하는 것&lt;/h1&gt;
&lt;p data-end=&quot;13673&quot; data-start=&quot;13610&quot; data-ke-size=&quot;size16&quot;&gt;LoRA가 학습하는 것은 &amp;ldquo;새로운 지식 전체&amp;rdquo;라기보다, 기존 모델의 특정 표현을 작업에 맞게 조정하는 방향입니다.&lt;/p&gt;
&lt;p data-end=&quot;13723&quot; data-start=&quot;13675&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 의료 대화 agenda extraction에서 LoRA는 다음을 학습합니다.&lt;/p&gt;
&lt;p data-end=&quot;13932&quot; data-start=&quot;13725&quot; data-ke-size=&quot;size16&quot;&gt;환자의 주호소를 agenda_item으로 분류&lt;br /&gt;증상 기간, 강도, 위치를 detail로 분류&lt;br /&gt;약물 이름과 복용량을 medication으로 분류&lt;br /&gt;검사, 처방, referral을 follow_up으로 분류&lt;br /&gt;질문이 미해결이면 question_unanswered로 분류&lt;br /&gt;출력을 지정된 JSON 형식으로 생성&lt;br /&gt;불필요한 발화는 relevant=false로 처리&lt;/p&gt;
&lt;p data-end=&quot;14115&quot; data-start=&quot;13934&quot; data-ke-size=&quot;size16&quot;&gt;프로젝트 문서에서도 모델 출력은 relevant, type, summary 세 필드로 제한되며, linking이나 resolution tracking은 모델이 아니라 deterministic system tracker의 역할로 분리되어 있습니다.&lt;/p&gt;
&lt;hr data-end=&quot;23899&quot; data-start=&quot;23896&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;23925&quot; data-start=&quot;23901&quot; data-section-id=&quot;dw3thk&quot;&gt;17. LoRA와 Quantization&lt;/h1&gt;
&lt;h2 data-end=&quot;23949&quot; data-start=&quot;23927&quot; data-section-id=&quot;10s6ji6&quot; data-ke-size=&quot;size26&quot;&gt;17.1 Quantization이란&lt;/h2&gt;
&lt;p data-end=&quot;24032&quot; data-start=&quot;23951&quot; data-ke-size=&quot;size16&quot;&gt;Quantization은 모델 weight를 FP16, BF16 같은 고정밀 형식에서 INT8, INT4 같은 저정밀 형식으로 줄이는 방법입니다.&lt;/p&gt;
&lt;p data-end=&quot;24037&quot; data-start=&quot;24034&quot; data-ke-size=&quot;size16&quot;&gt;목적:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;메모리 감소
추론 속도 향상 가능
저사양 장비 배포&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-end=&quot;24110&quot; data-start=&quot;24081&quot; data-section-id=&quot;xmfops&quot; data-ke-size=&quot;size26&quot;&gt;17.2 LoRA와 Quantization 조합&lt;/h2&gt;
&lt;p data-end=&quot;24131&quot; data-start=&quot;24112&quot; data-ke-size=&quot;size16&quot;&gt;LoRA는 양자화와 잘 결합됩니다.&lt;/p&gt;
&lt;p data-end=&quot;24139&quot; data-start=&quot;24133&quot; data-ke-size=&quot;size16&quot;&gt;대표 조합:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;armasm&quot;&gt;&lt;code&gt;8-bit base model + LoRA
4-bit base model + LoRA = QLoRA&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;24362&quot; data-start=&quot;24210&quot; data-ke-size=&quot;size16&quot;&gt;프로젝트에서는 Jetson 환경에서 GGUF Q4_K_M 형식을 사용합니다. 문서상 Llama 3.2 3B Q4_K_M의 예상 메모리는 약 2GB, 속도는 약 40&amp;ndash;60 tok/s로 제시되어 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;26829&quot; data-start=&quot;26681&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-end=&quot;26834&quot; data-start=&quot;26831&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;26857&quot; data-start=&quot;26836&quot; data-section-id=&quot;1ldox5z&quot;&gt;18. LoRA를 한 문장으로 요약&lt;/h1&gt;
&lt;p data-end=&quot;26962&quot; data-start=&quot;26859&quot; data-ke-size=&quot;size16&quot;&gt;LoRA는 &lt;b&gt;거대한 LLM 전체를 다시 학습하지 않고, 기존 모델을 고정한 채 작은 low-rank 보정 행렬만 학습하여 특정 작업에 맞게 모델을 효율적으로 조정하는 방법&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-end=&quot;26982&quot; data-start=&quot;26964&quot; data-ke-size=&quot;size16&quot;&gt;더 짧게 말하면 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;LoRA = 원본 모델은 그대로 두고, 작은 adapter만 학습하는 fine-tuning 방식&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;27073&quot; data-start=&quot;27051&quot; data-ke-size=&quot;size16&quot;&gt;QLoRA까지 포함하면 다음과 같습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;QLoRA = 4-bit로 줄인 원본 모델 위에 LoRA adapter만 학습하는 저메모리 fine-tuning 방식&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;27157&quot; data-start=&quot;27154&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;27172&quot; data-start=&quot;27159&quot; data-section-id=&quot;1kfe9k3&quot;&gt;19. 핵심 암기 표&lt;/h1&gt;
&lt;div&gt;
&lt;div&gt;개념설명
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;27616&quot; data-start=&quot;27174&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;27616&quot; data-start=&quot;27196&quot;&gt;
&lt;tr data-end=&quot;27226&quot; data-start=&quot;27196&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;27203&quot; data-start=&quot;27196&quot;&gt;LoRA&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;27226&quot; data-start=&quot;27203&quot;&gt;Low-Rank Adaptation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;27262&quot; data-start=&quot;27227&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;27232&quot; data-start=&quot;27227&quot;&gt;목적&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;27262&quot; data-start=&quot;27232&quot;&gt;대형 모델을 적은 비용으로 fine-tuning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;27285&quot; data-start=&quot;27263&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;27268&quot; data-start=&quot;27263&quot;&gt;핵심&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;27285&quot; data-start=&quot;27268&quot;&gt;W는 고정, &amp;Delta;W만 학습&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;27306&quot; data-start=&quot;27286&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;27291&quot; data-start=&quot;27286&quot;&gt;수식&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;27306&quot; data-start=&quot;27291&quot;&gt;W' = W + BA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;27326&quot; data-start=&quot;27307&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;27315&quot; data-start=&quot;27307&quot;&gt;학습 대상&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;27326&quot; data-start=&quot;27315&quot;&gt;A, B 행렬&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;27359&quot; data-start=&quot;27327&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;27331&quot; data-start=&quot;27327&quot;&gt;r&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;27359&quot; data-start=&quot;27331&quot;&gt;LoRA rank, adapter 내부 차원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;27386&quot; data-start=&quot;27360&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;27368&quot; data-start=&quot;27360&quot;&gt;alpha&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;27386&quot; data-start=&quot;27368&quot;&gt;LoRA 보정값 scale&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;27426&quot; data-start=&quot;27387&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;27397&quot; data-start=&quot;27387&quot;&gt;dropout&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;27426&quot; data-start=&quot;27397&quot;&gt;adapter 경로 regularization&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;27460&quot; data-start=&quot;27427&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;27444&quot; data-start=&quot;27427&quot;&gt;target_modules&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;27460&quot; data-start=&quot;27444&quot;&gt;LoRA를 붙일 레이어&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;27493&quot; data-start=&quot;27461&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;27466&quot; data-start=&quot;27461&quot;&gt;장점&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;27493&quot; data-start=&quot;27466&quot;&gt;메모리 절약, 저장 공간 절약, 빠른 학습&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;27517&quot; data-start=&quot;27494&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;27499&quot; data-start=&quot;27494&quot;&gt;단점&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;27517&quot; data-start=&quot;27499&quot;&gt;표현력 제한, 설정 민감도&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;27549&quot; data-start=&quot;27518&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;27526&quot; data-start=&quot;27518&quot;&gt;QLoRA&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;27549&quot; data-start=&quot;27526&quot;&gt;4-bit 양자화 모델 + LoRA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;27616&quot; data-start=&quot;27550&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;27560&quot; data-start=&quot;27550&quot;&gt;프로젝트 적용&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;27616&quot; data-start=&quot;27560&quot;&gt;Llama 3.2 3B를 agenda extraction용으로 QLoRA fine-tuning&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;27621&quot; data-start=&quot;27618&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;27634&quot; data-start=&quot;27623&quot; data-section-id=&quot;wfzyp8&quot;&gt;20. 최종 정리&lt;/h1&gt;
&lt;p data-end=&quot;27668&quot; data-start=&quot;27636&quot; data-ke-size=&quot;size16&quot;&gt;LoRA를 이해할 때 가장 중요한 구조는 다음 하나입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;sas&quot;&gt;&lt;code&gt;기존 모델:
output = W x

LoRA 적용:
output = W x + B A x&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;27826&quot; data-start=&quot;27734&quot; data-ke-size=&quot;size16&quot;&gt;여기서 W는 학습하지 않습니다.&lt;br /&gt;A와 B만 학습합니다.&lt;br /&gt;A와 B는 작습니다.&lt;br /&gt;그래서 학습이 가볍습니다.&lt;br /&gt;하지만 W에 대한 보정 효과를 낼 수 있습니다.&lt;/p&gt;
&lt;p data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;27982&quot; data-start=&quot;27828&quot; data-ke-size=&quot;size16&quot;&gt;따라서 LoRA는 LLM fine-tuning에서 가장 많이 쓰이는 효율화 기법 중 하나입니다. 특히 GPU 메모리가 제한된 환경, 여러 작업별 adapter를 관리해야 하는 환경, 데이터가 아주 많지는 않지만 특정 출력 형식과 도메인 적응이 필요한 환경에서 매우 적합합니다.&lt;/p&gt;
&lt;p data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;27982&quot; data-start=&quot;27828&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;27982&quot; data-start=&quot;27828&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>AL,ML 학부연구생/공부 기록</category>
      <category>Lora</category>
      <author>김형준</author>
      <guid isPermaLink="true">https://devreco.tistory.com/32</guid>
      <comments>https://devreco.tistory.com/32#entry32comment</comments>
      <pubDate>Mon, 18 May 2026 16:10:15 +0900</pubDate>
    </item>
    <item>
      <title>처음 만나는 인공지능 연습문제 모음2 (체험인공지능 대비)</title>
      <link>https://devreco.tistory.com/30</link>
      <description>&lt;h2 data-end=&quot;2&quot; data-start=&quot;0&quot; data-ke-size=&quot;size26&quot;&gt;1장&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1289&quot; data-start=&quot;4&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;46&quot; data-start=&quot;4&quot;&gt;인공지능은 인간의 지능 활동을 컴퓨터에 접목하는 기술이다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;130&quot; data-start=&quot;48&quot;&gt;인공지능의 역사는 그리 오래되지 않았으나, 약 150년 정도의 전통을 가지고 있다.&lt;br /&gt;답: X, 인공지능 연구는 1950년대부터 시작되었다.&lt;/li&gt;
&lt;li data-end=&quot;167&quot; data-start=&quot;132&quot;&gt;4차 산업혁명은 인공지능 기술과 관련이 깊다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;273&quot; data-start=&quot;169&quot;&gt;최근 인간 두뇌를 구현하기 위한 연구가 진전되어, 이미 감정이나 의식을 가진 인공지능이 개발되어 있다.&lt;br /&gt;답: X, 인간과 같은 감정&amp;middot;의식을 가진 인공지능은 아직 개발되지 않았다.&lt;/li&gt;
&lt;li data-end=&quot;344&quot; data-start=&quot;275&quot;&gt;좌뇌는 음악과 문학 등의 예술적 사고나 추상적인 사고를 담당한다.&lt;br /&gt;답: X, 예술적&amp;middot;추상적 사고는 우뇌의 기능이다.&lt;/li&gt;
&lt;li data-end=&quot;406&quot; data-start=&quot;346&quot;&gt;민스키는 비교적 초기 인공지능 연구자에 속하는 인물로서 인공지능 연구에 큰 공헌을 하였다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;482&quot; data-start=&quot;408&quot;&gt;인공지능 바둑 프로그램인 알파고는 인공지능 초창기인 1970년대에 개발되었다.&lt;br /&gt;답: X, 알파고는 2010년대에 개발되었다.&lt;/li&gt;
&lt;li data-end=&quot;539&quot; data-start=&quot;484&quot;&gt;인공지능이 만드는 문장에서 가장 핵심적인 사항은 구문도 맞고 의미가 통해야 한다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;614&quot; data-start=&quot;541&quot;&gt;인공지능 소프트웨어 기자인 기자 로봇은 현재 미국에서 주식 시황이나 스포츠 기사를 실제로 작성하며 활동하고 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;681&quot; data-start=&quot;616&quot;&gt;자율주행 자동차는 현재 상업용으로 활발하게 이용되고 있다.&lt;br /&gt;답: X, 현재는 시범 운영 및 개발 단계이다.&lt;/li&gt;
&lt;li data-end=&quot;756&quot; data-start=&quot;683&quot;&gt;고등학생 수준의 인공지능 글쓰기는 미국에서는 이미 가능하다.&lt;br /&gt;답: X, 교재 기준으로는 미래에 가능할 것으로 전망하였다.&lt;/li&gt;
&lt;li data-end=&quot;809&quot; data-start=&quot;758&quot;&gt;인공지능이 그린 미술 작품 중 실제 5억 원 정도에 거래된 작품도 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;870&quot; data-start=&quot;811&quot;&gt;그래픽카드의 핵심 칩으로 인공지능 프로그램에서 그래픽 정보를 빠르게 처리하는 것은?&lt;br /&gt;답: GPU&lt;/li&gt;
&lt;li data-end=&quot;922&quot; data-start=&quot;872&quot;&gt;1957년 로젠블럿이 개발하여 문자를 인식할 수 있었던 시스템은?&lt;br /&gt;답: 퍼셉트론&lt;/li&gt;
&lt;li data-end=&quot;979&quot; data-start=&quot;924&quot;&gt;생각하는 기계에 대한 논리를 구상하고 튜링 테스트를 처음 제안한 사람은?&lt;br /&gt;답: 앨런 튜링&lt;/li&gt;
&lt;li data-end=&quot;1024&quot; data-start=&quot;981&quot;&gt;인간 두뇌는 수많은 무엇으로 이루어져 있는가?&lt;br /&gt;답: 뉴런(신경세포)&lt;/li&gt;
&lt;li data-end=&quot;1087&quot; data-start=&quot;1026&quot;&gt;좌뇌는 규칙 기반 인공지능과 연관이 많고, 우뇌는 ( )에 적합한 신경망과 관련이 많다.&lt;br /&gt;답: 학습&lt;/li&gt;
&lt;li data-end=&quot;1144&quot; data-start=&quot;1089&quot;&gt;1956년 다트머스 워크숍에서 인공지능이라는 용어를 처음 제안한 사람은?&lt;br /&gt;답: 존 매카시&lt;/li&gt;
&lt;li data-end=&quot;1186&quot; data-start=&quot;1146&quot;&gt;1997년 IBM이 개발한 체스 전용 컴퓨터는?&lt;br /&gt;답: 딥 블루&lt;/li&gt;
&lt;li data-end=&quot;1253&quot; data-start=&quot;1188&quot;&gt;인공지능 기술의 발달로 머지않아 상용화되면 운전사들의 일자리가 줄어들 수 있는 것은?&lt;br /&gt;답: 자율주행 자동차&lt;/li&gt;
&lt;li data-end=&quot;1289&quot; data-start=&quot;1255&quot;&gt;다음 중 인공지능 주제와 관련이 비교적 적은 것은?&lt;/li&gt;
&lt;/ol&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1391&quot; data-start=&quot;1290&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1311&quot; data-start=&quot;1290&quot;&gt;인간의 지능을 모델링하는 기술&lt;/li&gt;
&lt;li data-end=&quot;1331&quot; data-start=&quot;1312&quot;&gt;인간 두뇌에 도전하는 기술&lt;/li&gt;
&lt;li data-end=&quot;1358&quot; data-start=&quot;1332&quot;&gt;지능적인 원리를 컴퓨터에 적용하는 기술&lt;/li&gt;
&lt;li data-end=&quot;1391&quot; data-start=&quot;1359&quot;&gt;현재 대부분의 문제 해결이 가능한 기술&lt;br /&gt;답: 4번&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;22. 다음의 컴퓨터 장치 중 인간 두뇌와 관련이 가장 적은 기능은?&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1483&quot; data-start=&quot;1434&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1444&quot; data-start=&quot;1434&quot;&gt;연산 기능&lt;/li&gt;
&lt;li data-end=&quot;1455&quot; data-start=&quot;1445&quot;&gt;출력 기능&lt;/li&gt;
&lt;li data-end=&quot;1466&quot; data-start=&quot;1456&quot;&gt;제어 기능&lt;/li&gt;
&lt;li data-end=&quot;1483&quot; data-start=&quot;1467&quot;&gt;기억 기능&lt;br /&gt;답: 2번&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;23. 인공지능이 도전하여 아직은 가능성이 별로 크지 않은 분야는?&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1565&quot; data-start=&quot;1525&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1531&quot; data-start=&quot;1525&quot;&gt;시&lt;/li&gt;
&lt;li data-end=&quot;1539&quot; data-start=&quot;1532&quot;&gt;소설&lt;/li&gt;
&lt;li data-end=&quot;1551&quot; data-start=&quot;1540&quot;&gt;창의적 작품&lt;/li&gt;
&lt;li data-end=&quot;1565&quot; data-start=&quot;1552&quot;&gt;미술&lt;br /&gt;답: 2번&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-end=&quot;1570&quot; data-start=&quot;1567&quot; data-ke-size=&quot;size16&quot;&gt;주관식&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1994&quot; data-start=&quot;1572&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1644&quot; data-start=&quot;1572&quot;&gt;인공지능이란 무엇인지 설명하시오.&lt;br /&gt;답: 인간의 학습, 추론, 판단, 인식 등의 지능 활동을 컴퓨터로 구현하는 기술이다.&lt;/li&gt;
&lt;li data-end=&quot;1709&quot; data-start=&quot;1646&quot;&gt;인공지능이 인간을 완전히 따라오기 어려운 능력은 무엇인가?&lt;br /&gt;답: 감정, 의식, 창의성, 윤리적 판단 등&lt;/li&gt;
&lt;li data-end=&quot;1764&quot; data-start=&quot;1711&quot;&gt;1956년에 인공지능 연구가 시작된 계기는 무엇인가?&lt;br /&gt;답: 다트머스 대학 하계 워크숍&lt;/li&gt;
&lt;li data-end=&quot;1838&quot; data-start=&quot;1766&quot;&gt;인공지능에서 사용되는 하드웨어와 소프트웨어의 예를 쓰시오.&lt;br /&gt;답: 하드웨어: GPU, TPU, 클라우드 서버 / 소프트웨어: TensorFlow, Pytorch, Spark&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-end=&quot;1998&quot; data-start=&quot;1996&quot; data-ke-size=&quot;size26&quot;&gt;2장&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;2998&quot; data-start=&quot;2000&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;2036&quot; data-start=&quot;2000&quot;&gt;코타나는 마이크로소프트의 인공지능 도우미이다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;2110&quot; data-start=&quot;2038&quot;&gt;인공지능 관련 특허에서 한국 기업은 아직 세계 10위권에도 들지 못하고 있다.&lt;br /&gt;답: X, 한국은 세계 상위권 수준이다.&lt;/li&gt;
&lt;li data-end=&quot;2189&quot; data-start=&quot;2112&quot;&gt;인공지능 기술의 핵심인 신경망과 딥러닝 알고리즘은 소프트웨어에 속하지 않는다.&lt;br /&gt;답: X, 신경망과 딥러닝은 소프트웨어 기술이다.&lt;/li&gt;
&lt;li data-end=&quot;2240&quot; data-start=&quot;2191&quot;&gt;중국이나 일본 등에서는 국가 차원에서 인공지능 교육을 강화하고 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;2295&quot; data-start=&quot;2242&quot;&gt;얼굴인식을 바탕으로 중국의 대형마트 등에서는 얼굴인식 결제를 사용하고 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;2351&quot; data-start=&quot;2297&quot;&gt;인공지능은 로봇공학과 결합하여 인간과 교감하는 휴머노이드 개발이 진행 중이다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;2407&quot; data-start=&quot;2353&quot;&gt;인공지능 컴퓨터인 왓슨은 암 발견과 치료를 수행하는 시스템으로 발전하고 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;2463&quot; data-start=&quot;2409&quot;&gt;가사도우미 로봇인 소피아는 60여 개 감정을 표현하며 사람과 대화할 수 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;2525&quot; data-start=&quot;2465&quot;&gt;인공지능은 인문학과 법학과는 관계가 없다.&lt;br /&gt;답: X, 인공지능은 인문학&amp;middot;법학 등과 융합되고 있다.&lt;/li&gt;
&lt;li data-end=&quot;2578&quot; data-start=&quot;2527&quot;&gt;미국에서는 인공지능 변호사가 법조인의 업무를 보조하는 역할은 합법적이다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;2634&quot; data-start=&quot;2580&quot;&gt;기술의 원천인 프로그램의 소스 코드를 누구에게나 무료로 제공하는 것은?&lt;br /&gt;답: 오픈 소스&lt;/li&gt;
&lt;li data-end=&quot;2665&quot; data-start=&quot;2636&quot;&gt;삼성전자의 인공지능 도우미는?&lt;br /&gt;답: 빅스비&lt;/li&gt;
&lt;li data-end=&quot;2719&quot; data-start=&quot;2667&quot;&gt;애플의 인공지능 도우미는 시리이고, 구글의 인공지능 도우미는?&lt;br /&gt;답: 구글 어시스턴트&lt;/li&gt;
&lt;li data-end=&quot;2787&quot; data-start=&quot;2721&quot;&gt;구글은 코타나라는 인공지능 소프트웨어를 개방하였다.&lt;br /&gt;답: X, 코타나는 마이크로소프트의 인공지능 도우미이다.&lt;/li&gt;
&lt;li data-end=&quot;2845&quot; data-start=&quot;2789&quot;&gt;인공지능 스피커의 ( ) 기능을 통해 집안 기기를 목소리로 제어할 수 있다.&lt;br /&gt;답: 음성인식&lt;/li&gt;
&lt;li data-end=&quot;2901&quot; data-start=&quot;2847&quot;&gt;&amp;lsquo;칵테일 바텐더 로봇&amp;rsquo;과 &amp;lsquo;바리스타 봇&amp;rsquo;은 인공지능 ( ) 로봇에 속한다.&lt;br /&gt;답: 서비스&lt;/li&gt;
&lt;li data-end=&quot;2962&quot; data-start=&quot;2903&quot;&gt;비닐하우스 등에 인공지능과 사물인터넷을 적용하여 원격으로 농장을 관리하는 것은?&lt;br /&gt;답: 스마트 팜&lt;/li&gt;
&lt;li data-end=&quot;2998&quot; data-start=&quot;2964&quot;&gt;다음 중 인공지능 활용과 비교적 관련이 적은 것은?&lt;/li&gt;
&lt;/ol&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;3048&quot; data-start=&quot;2999&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;3009&quot; data-start=&quot;2999&quot;&gt;인물 검색&lt;/li&gt;
&lt;li data-end=&quot;3020&quot; data-start=&quot;3010&quot;&gt;법률 자문&lt;/li&gt;
&lt;li data-end=&quot;3031&quot; data-start=&quot;3021&quot;&gt;간호 업무&lt;/li&gt;
&lt;li data-end=&quot;3048&quot; data-start=&quot;3032&quot;&gt;주식 분석&lt;br /&gt;답: 1번&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;19. 다음 중 우리나라가 인공지능 강국이 되는 방법과 관련이 적은 것은?&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;3166&quot; data-start=&quot;3094&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;3111&quot; data-start=&quot;3094&quot;&gt;인공지능 제품의 상용화&lt;/li&gt;
&lt;li data-end=&quot;3128&quot; data-start=&quot;3112&quot;&gt;인공지능 연구와 개발&lt;/li&gt;
&lt;li data-end=&quot;3144&quot; data-start=&quot;3129&quot;&gt;인공지능 용어 검색&lt;/li&gt;
&lt;li data-end=&quot;3166&quot; data-start=&quot;3145&quot;&gt;인공지능 교육 강화&lt;br /&gt;답: 3번&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;20. 추천 시스템의 대상이 아닌 것은?&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;3251&quot; data-start=&quot;3193&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;3207&quot; data-start=&quot;3193&quot;&gt;자주 검색한 상품&lt;/li&gt;
&lt;li data-end=&quot;3216&quot; data-start=&quot;3208&quot;&gt;알렉사&lt;/li&gt;
&lt;li data-end=&quot;3233&quot; data-start=&quot;3217&quot;&gt;감상한 유튜브 동영상&lt;/li&gt;
&lt;li data-end=&quot;3251&quot; data-start=&quot;3234&quot;&gt;검색한 도서&lt;br /&gt;답: 2번&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-end=&quot;3256&quot; data-start=&quot;3253&quot; data-ke-size=&quot;size16&quot;&gt;주관식&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;3637&quot; data-start=&quot;3258&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;3453&quot; data-start=&quot;3383&quot;&gt;우리나라가 인공지능 강국이 되기 위해 필요한 노력은 무엇인가?&lt;br /&gt;답: 연구개발 투자, 인재 양성, 인공지능 교육 강화&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-end=&quot;3641&quot; data-start=&quot;3639&quot; data-ke-size=&quot;size26&quot;&gt;3장&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;4796&quot; data-start=&quot;3643&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;3710&quot; data-start=&quot;3643&quot;&gt;연결주의 인공지능 계열에 속하는 것은 규칙 기반 인공지능이다.&lt;br /&gt;답: X, 연결주의는 신경망 기반 인공지능이다.&lt;/li&gt;
&lt;li data-end=&quot;3761&quot; data-start=&quot;3712&quot;&gt;최초의 체스 프로그램은 인공지능이라는 단어가 나오기 전에 만들어졌다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;3817&quot; data-start=&quot;3763&quot;&gt;마이신은 혈액 감염을 진단하고 처방하기 위해 만들어진 의학 전문가 시스템이다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;3897&quot; data-start=&quot;3819&quot;&gt;데이터를 전문적으로 다루고 분석하는 데이터 과학자의 수요는 점차 감소하고 있다.&lt;br /&gt;답: X, 데이터 과학자의 수요는 증가하고 있다.&lt;/li&gt;
&lt;li data-end=&quot;3944&quot; data-start=&quot;3899&quot;&gt;인류 최초의 전자식 컴퓨터인 에니악은 1946년에 발표되었다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;3990&quot; data-start=&quot;3946&quot;&gt;왓슨은 질문을 이해할 수 있으나 음성으로 답변할 수는 없다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;4063&quot; data-start=&quot;3992&quot;&gt;엘리자는 앨런 튜링에 의해 만들어진 초기 자연어 처리 프로그램이다.&lt;br /&gt;답: X, 엘리자는 조셉 와이젠바움이 개발하였다.&lt;/li&gt;
&lt;li data-end=&quot;4117&quot; data-start=&quot;4065&quot;&gt;인공지능은 크게 규칙 기반 인공지능과 신경망 기반 인공지능으로 나누어진다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;4191&quot; data-start=&quot;4119&quot;&gt;규칙 기반 인공지능의 장점은 학습을 잘할 수 있다는 점이다.&lt;br /&gt;답: X, 규칙 기반 인공지능은 규칙 추론에 강점이 있다.&lt;/li&gt;
&lt;li data-end=&quot;4238&quot; data-start=&quot;4193&quot;&gt;신경망은 주로 패턴 인식에 활용되며 학습 시간이 오래 걸린다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;4306&quot; data-start=&quot;4240&quot;&gt;인공지능 슈퍼컴퓨터인 딥 블루가 바둑 세계 챔피언에 등극하였다.&lt;br /&gt;답: X, 딥 블루는 체스 전용 시스템이다.&lt;/li&gt;
&lt;li data-end=&quot;4361&quot; data-start=&quot;4308&quot;&gt;문제 해결 방법 중 하나는 블록 다이어그램을 그려 단계별로 분석하는 것이다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;4417&quot; data-start=&quot;4363&quot;&gt;엄청난 양의 데이터를 수집하여 머신러닝과 통계 기법으로 분석하는 기술은?&lt;br /&gt;답: 빅데이터&lt;/li&gt;
&lt;li data-end=&quot;4471&quot; data-start=&quot;4419&quot;&gt;반복적인 작업들을 자동화시켜 사용자를 돕는 컴퓨터 프로그램은?&lt;br /&gt;답: 지능형 에이전트&lt;/li&gt;
&lt;li data-end=&quot;4517&quot; data-start=&quot;4473&quot;&gt;인간 전문가를 대신할 수 있는 인공지능 시스템은?&lt;br /&gt;답: 전문가 시스템&lt;/li&gt;
&lt;li data-end=&quot;4565&quot; data-start=&quot;4519&quot;&gt;규칙 기반 인공지능에서 선험적 규칙이라고도 불리는 방법은?&lt;br /&gt;답: 휴리스틱&lt;/li&gt;
&lt;li data-end=&quot;4617&quot; data-start=&quot;4567&quot;&gt;수많은 프로기사의 기보를 분석하고 딥러닝을 활용한 바둑 인공지능은?&lt;br /&gt;답: 알파고&lt;/li&gt;
&lt;li data-end=&quot;4668&quot; data-start=&quot;4619&quot;&gt;말하는 사람과 관계없이 누구에게나 작동하는 음성인식은?&lt;br /&gt;답: 화자독립 음성인식&lt;/li&gt;
&lt;li data-end=&quot;4718&quot; data-start=&quot;4670&quot;&gt;인간과의 대화를 통해 기계의 지능을 판별하는 시험 방법은?&lt;br /&gt;답: 튜링 테스트&lt;/li&gt;
&lt;li data-end=&quot;4762&quot; data-start=&quot;4720&quot;&gt;컴퓨터에서 수행하는 절차를 프로그램으로 작성하는 일은?&lt;br /&gt;답: 코딩&lt;/li&gt;
&lt;li data-end=&quot;4796&quot; data-start=&quot;4764&quot;&gt;컴퓨터를 통해 서로 다른 언어를 번역하는 것은?&lt;/li&gt;
&lt;/ol&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;4843&quot; data-start=&quot;4797&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;4806&quot; data-start=&quot;4797&quot;&gt;기계번역&lt;/li&gt;
&lt;li data-end=&quot;4816&quot; data-start=&quot;4807&quot;&gt;자동통역&lt;/li&gt;
&lt;li data-end=&quot;4826&quot; data-start=&quot;4817&quot;&gt;언어번역&lt;/li&gt;
&lt;li data-end=&quot;4843&quot; data-start=&quot;4827&quot;&gt;사이버번역&lt;br /&gt;답: 1번&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;22. 초기 신경망 연구와 관련된 주요 분야와 다소 거리가 있는 것은?&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;4933&quot; data-start=&quot;4887&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;4896&quot; data-start=&quot;4887&quot;&gt;음성인식&lt;/li&gt;
&lt;li data-end=&quot;4907&quot; data-start=&quot;4897&quot;&gt;동영상인식&lt;/li&gt;
&lt;li data-end=&quot;4917&quot; data-start=&quot;4908&quot;&gt;숫자인식&lt;/li&gt;
&lt;li data-end=&quot;4933&quot; data-start=&quot;4918&quot;&gt;문자인식&lt;br /&gt;답: 2번&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;23. 본격적인 인공지능 시대가 오더라도 일자리가 비교적 줄어들지 않을 직업은?&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;5035&quot; data-start=&quot;4982&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;4991&quot; data-start=&quot;4982&quot;&gt;택시기사&lt;/li&gt;
&lt;li data-end=&quot;5004&quot; data-start=&quot;4992&quot;&gt;지게차 업무자&lt;/li&gt;
&lt;li data-end=&quot;5017&quot; data-start=&quot;5005&quot;&gt;데이터 과학자&lt;/li&gt;
&lt;li data-end=&quot;5035&quot; data-start=&quot;5018&quot;&gt;교통 감시원&lt;br /&gt;답: 3번&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;24. 코딩의 목적과 거리가 먼 것은?&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;5138&quot; data-start=&quot;5061&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;5079&quot; data-start=&quot;5061&quot;&gt;코딩을 통한 계산력 향상&lt;/li&gt;
&lt;li data-end=&quot;5099&quot; data-start=&quot;5080&quot;&gt;인공지능 시대의 기초 요소&lt;/li&gt;
&lt;li data-end=&quot;5115&quot; data-start=&quot;5100&quot;&gt;논리적 사고력 향상&lt;/li&gt;
&lt;li data-end=&quot;5138&quot; data-start=&quot;5116&quot;&gt;창의적 아이디어 발상&lt;br /&gt;답: 1번&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-end=&quot;5143&quot; data-start=&quot;5140&quot; data-ke-size=&quot;size16&quot;&gt;주관식&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;5553&quot; data-start=&quot;5145&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;5213&quot; data-start=&quot;5145&quot;&gt;초기 인공지능 연구 분야를 3가지 이상 쓰시오.&lt;br /&gt;답: 자연어 처리, 문제 해결, 게임, 정리 증명, 음성인식&lt;/li&gt;
&lt;li data-end=&quot;5273&quot; data-start=&quot;5215&quot;&gt;신경망 연구와 관련된 주요 인식 분야를 쓰시오.&lt;br /&gt;답: 문자 인식, 음성 인식, 영상&amp;middot;패턴 인식&lt;/li&gt;
&lt;li data-end=&quot;5326&quot; data-start=&quot;5275&quot;&gt;튜링의 업적을 쓰시오.&lt;br /&gt;답: 튜링 머신 제안, 암호 해독 기여, 튜링 테스트 제안&lt;/li&gt;
&lt;li data-end=&quot;5467&quot; data-start=&quot;5387&quot;&gt;튜링 테스트를 통과했다고 알려진 프로그램과 한계를 쓰시오.&lt;br /&gt;답: 유진 구스트만, 실제 지능보다는 사람을 혼동시키는 대화전략에 의존한 한계가 있다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;div data-message-model-slug=&quot;gpt-5-5-thinking&quot; data-message-id=&quot;47f1ff03-162d-4419-9583-b411efc6ffe3&quot; data-message-author-role=&quot;assistant&quot;&gt;
&lt;h2 data-end=&quot;2&quot; data-start=&quot;0&quot; data-ke-size=&quot;size26&quot;&gt;4장&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1295&quot; data-start=&quot;4&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;56&quot; data-start=&quot;4&quot;&gt;현재까지 인공지능에서 대부분의 연구 성과는 약한 인공지능 수준에 해당한다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;147&quot; data-start=&quot;58&quot;&gt;인공지능과 관련된 이론과 기술 수준은 현재 자아의식까지 가진 인공지능도 가능하다.&lt;br /&gt;답: X, 현재 자아의식과 감정을 가진 인공지능은 구현되지 않았다.&lt;/li&gt;
&lt;li data-end=&quot;230&quot; data-start=&quot;149&quot;&gt;강한 인공지능은 특정 분야 내에서 인간의 지능을 흉내 내는 지능적인 활동이다.&lt;br /&gt;답: X, 특정 분야에 한정된 지능은 약한 인공지능이다.&lt;/li&gt;
&lt;li data-end=&quot;313&quot; data-start=&quot;232&quot;&gt;약한 인공지능은 학습을 통해 지능적이며 자아의식과 감정도 가질 수 있다.&lt;br /&gt;답: X, 약한 인공지능은 자아의식이나 감정을 가지지 않는다.&lt;/li&gt;
&lt;li data-end=&quot;373&quot; data-start=&quot;315&quot;&gt;좁은 인공지능은 페이스북의 얼굴인식, 구글의 자율자동차, 애플의 시리 등에 응용된다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;429&quot; data-start=&quot;375&quot;&gt;2016년 이세돌 9단과 알파고와의 대국은 인공지능에 관한 관심을 급증시켰다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;471&quot; data-start=&quot;431&quot;&gt;알파고는 특정 영역에 국한된 약한 인공지능에 속한다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;572&quot; data-start=&quot;473&quot;&gt;현재 수준의 인공지능으로서는 몇 개의 그림을 보고 자연스러운 스토리텔링이 가능하다.&lt;br /&gt;답: X, 그림 전체의 맥락을 이해해 자연스러운 이야기를 만드는 것은 아직 어렵다.&lt;/li&gt;
&lt;li data-end=&quot;637&quot; data-start=&quot;574&quot;&gt;특이점 실현 가능성에 대한 비판에는 로봇이 인간을 흉내 내는 현상에 대한 회의적 의견이 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;725&quot; data-start=&quot;639&quot;&gt;슈퍼 인공지능도 인간과 같은 수준으로 창의성을 구현하기는 어렵지 않을 것이다.&lt;br /&gt;답: X, 슈퍼 인공지능의 창의성 구현 가능성은 아직 불확실하다.&lt;/li&gt;
&lt;li data-end=&quot;785&quot; data-start=&quot;727&quot;&gt;인공지능이 인간 능력을 뛰어넘어 새로운 문명을 만들어내는 미래의 시점은 무엇인가?&lt;br /&gt;답: 특이점&lt;/li&gt;
&lt;li data-end=&quot;853&quot; data-start=&quot;787&quot;&gt;컴퓨터 프로그램이 인간처럼 행동해도 인간처럼 이해한다고 볼 수 없다는 논증은 무엇인가?&lt;br /&gt;답: 중국어 방 논증&lt;/li&gt;
&lt;li data-end=&quot;917&quot; data-start=&quot;855&quot;&gt;미래학자들은 2045년경 인공지능의 급격한 발전으로 무엇이 일어날 것이라 예견하는가?&lt;br /&gt;답: 지능 폭발&lt;/li&gt;
&lt;li data-end=&quot;974&quot; data-start=&quot;919&quot;&gt;인공지능은 좁은 인공지능, ( ) 인공지능, 슈퍼 인공지능으로 나눌 수 있다.&lt;br /&gt;답: 일반&lt;/li&gt;
&lt;li data-end=&quot;1029&quot; data-start=&quot;976&quot;&gt;인공지능 바둑 프로그램인 무엇이 일반 인공지능 기술로 발전하고 있는가?&lt;br /&gt;답: 알파고&lt;/li&gt;
&lt;li data-end=&quot;1092&quot; data-start=&quot;1031&quot;&gt;여러 장의 사진을 보고 하나의 줄거리로 이야기를 만드는 인공지능 분야는 무엇인가?&lt;br /&gt;답: 스토리텔링&lt;/li&gt;
&lt;li data-end=&quot;1132&quot; data-start=&quot;1094&quot;&gt;특이점 가설의 대표적인 예는 무엇의 폭발인가?&lt;br /&gt;답: 지능&lt;/li&gt;
&lt;li data-end=&quot;1183&quot; data-start=&quot;1134&quot;&gt;슈퍼 인공지능이 이루어지는 시기는 기술적 무엇과 관련이 깊은가?&lt;br /&gt;답: 특이점&lt;/li&gt;
&lt;li data-end=&quot;1235&quot; data-start=&quot;1185&quot;&gt;레이 커즈와일이 2005년에 출간한 책의 제목은 무엇인가?&lt;br /&gt;답: 특이점이 온다&lt;/li&gt;
&lt;li data-end=&quot;1295&quot; data-start=&quot;1237&quot;&gt;2017년 인공지능 윤리에 관한 원칙으로 발표된 것은 무엇인가?&lt;br /&gt;답: 아실로마 인공지능 원칙&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-end=&quot;1300&quot; data-start=&quot;1297&quot; data-ke-size=&quot;size16&quot;&gt;주관식&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1928&quot; data-start=&quot;1302&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1406&quot; data-start=&quot;1302&quot;&gt;강한 인공지능의 특징을 3가지 정도 쓰시오.&lt;br /&gt;답: 인간처럼 다양한 문제를 해결할 수 있는 일반 지능을 가지며, 스스로 사고&amp;middot;학습할 수 있고, 자아의식과 감정을 가질 수 있다고 여겨지는 인공지능이다.&lt;/li&gt;
&lt;li data-end=&quot;1815&quot; data-start=&quot;1709&quot;&gt;아실로마 원칙의 주요 내용을 3가지 쓰시오.&lt;br /&gt;답: 인공지능은 인류에게 유익해야 하며, 초지능은 인류 전체의 이익을 위해 개발되어야 하고, 인공지능 기반 무기 경쟁은 피해야 한다.&lt;/li&gt;
&lt;li data-end=&quot;1928&quot; data-start=&quot;1817&quot;&gt;약한 인공지능의 특징을 쓰시오.&lt;br /&gt;답: 특정 분야에서만 활용 가능하며, 인간의 지능을 흉내 내는 수준이고, 자아의식이나 감정은 없지만 특정 영역에서는 인간보다 뛰어난 성능을 보일 수 있다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-end=&quot;1932&quot; data-start=&quot;1930&quot; data-ke-size=&quot;size26&quot;&gt;5장&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;3172&quot; data-start=&quot;1934&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;2013&quot; data-start=&quot;1934&quot;&gt;2차 산업혁명이란 컴퓨터를 통한 생산과 유통 시스템의 자동화를 말한다.&lt;br /&gt;답: X, 컴퓨터 기반 자동화는 3차 산업혁명에 해당한다.&lt;/li&gt;
&lt;li data-end=&quot;2103&quot; data-start=&quot;2015&quot;&gt;4차 산업혁명이라는 용어는 2019년 세계경제포럼에서 처음 언급되었다.&lt;br /&gt;답: X, 교재 기준으로 2016년 세계경제포럼에서 본격적으로 언급되었다.&lt;/li&gt;
&lt;li data-end=&quot;2154&quot; data-start=&quot;2105&quot;&gt;4차 산업혁명의 핵심은 연결과 지능을 중심으로 한 초연결 사회이다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;2230&quot; data-start=&quot;2156&quot;&gt;4차 산업혁명 관련 산업에서 인공지능의 역할은 별로 중요하지 않다.&lt;br /&gt;답: X, 인공지능은 4차 산업혁명의 핵심 기술이다.&lt;/li&gt;
&lt;li data-end=&quot;2313&quot; data-start=&quot;2232&quot;&gt;지능형 로봇은 현재 기술로는 아직 교향악단을 지휘할 수 있는 수준이 아니다.&lt;br /&gt;답: X, 지능형 로봇은 교향악단을 지휘한 사례가 있다.&lt;/li&gt;
&lt;li data-end=&quot;2366&quot; data-start=&quot;2315&quot;&gt;국내에서 개발한 에트로는 문자를 인식해 책을 소리 내어 읽을 수 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;2459&quot; data-start=&quot;2368&quot;&gt;지능형 서비스 로봇은 현재로서는 식당에서 음식 주문과 서빙이 가능하지 않다.&lt;br /&gt;답: X, 지능형 서비스 로봇은 음식 주문과 서빙 분야에도 활용되고 있다.&lt;/li&gt;
&lt;li data-end=&quot;2515&quot; data-start=&quot;2461&quot;&gt;로봇 강국인 일본에서는 두 발로 걷는 휴머노이드형 로봇기술이 발달되어 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;2596&quot; data-start=&quot;2517&quot;&gt;자율자동차는 2025년 이전 상용화가 시작되고, 2035년에는 도로 주행 차량 4대 중 1대가 될 것이라는 예측이 많다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;2689&quot; data-start=&quot;2598&quot;&gt;구글은 자율자동차 주행 테스트를 하고 있으나, 우리나라에서는 거리 시험주행을 한 적이 없다.&lt;br /&gt;답: X, 우리나라에서도 자율자동차 시험주행이 이루어졌다.&lt;/li&gt;
&lt;li data-end=&quot;2747&quot; data-start=&quot;2691&quot;&gt;사람을 인식하고 문자도 읽으며 사람의 행동에 반응하는 로봇은 무엇인가?&lt;br /&gt;답: 지능형 로봇&lt;/li&gt;
&lt;li data-end=&quot;2803&quot; data-start=&quot;2749&quot;&gt;광신호로 작동하는 논리소자를 이용해 빛으로 연산하는 컴퓨터는 무엇인가?&lt;br /&gt;답: 광컴퓨터&lt;/li&gt;
&lt;li data-end=&quot;2850&quot; data-start=&quot;2805&quot;&gt;인공지능적인 능력을 갖춘 지능적인 로봇은 무엇인가?&lt;br /&gt;답: 지능형 로봇&lt;/li&gt;
&lt;li data-end=&quot;2911&quot; data-start=&quot;2852&quot;&gt;사물들을 인터넷으로 연결하여 정보를 상호 소통하는 기술 및 서비스는 무엇인가?&lt;br /&gt;답: 사물인터넷&lt;/li&gt;
&lt;li data-end=&quot;2970&quot; data-start=&quot;2913&quot;&gt;운전자와 관계없이 차량을 스스로 제어해 목적지까지 주행하는 것은 무엇인가?&lt;br /&gt;답: 자율자동차&lt;/li&gt;
&lt;li data-end=&quot;3011&quot; data-start=&quot;2972&quot;&gt;전파로 조종할 수 있는 무인 항공기는 무엇인가?&lt;br /&gt;답: 드론&lt;/li&gt;
&lt;li data-end=&quot;3075&quot; data-start=&quot;3013&quot;&gt;생물학적 시스템의 작용을 시뮬레이션해 생물체 기능을 규명하려는 분야는 무엇인가?&lt;br /&gt;답: 바이오 컴퓨터&lt;/li&gt;
&lt;li data-end=&quot;3136&quot; data-start=&quot;3077&quot;&gt;극미세 물질 탐구를 통해 새로운 물질을 제조할 수 있게 하는 기술은 무엇인가?&lt;br /&gt;답: 나노 기술&lt;/li&gt;
&lt;li data-end=&quot;3172&quot; data-start=&quot;3138&quot;&gt;다음 중 네 번의 산업혁명과 연결이 적절한 것은?&lt;/li&gt;
&lt;/ol&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;3257&quot; data-start=&quot;3173&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;3190&quot; data-start=&quot;3173&quot;&gt;1차 산업혁명 - 전기&lt;/li&gt;
&lt;li data-end=&quot;3212&quot; data-start=&quot;3191&quot;&gt;2차 산업혁명 - 기계적 혁명&lt;/li&gt;
&lt;li data-end=&quot;3232&quot; data-start=&quot;3213&quot;&gt;3차 산업혁명 - 대량생산&lt;/li&gt;
&lt;li data-end=&quot;3257&quot; data-start=&quot;3233&quot;&gt;4차 산업혁명 - 지능화&lt;br /&gt;답: 4번&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;20. 다음 중 현재 자율자동차에 적용되는 시스템 기술로 보기 어려운 것은?&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;3428&quot; data-start=&quot;3305&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;3328&quot; data-start=&quot;3305&quot;&gt;스스로 속도와 거리를 유지해준다.&lt;/li&gt;
&lt;li data-end=&quot;3360&quot; data-start=&quot;3329&quot;&gt;목적지를 정해주지 않아도 스스로 알아서 달린다.&lt;/li&gt;
&lt;li data-end=&quot;3390&quot; data-start=&quot;3361&quot;&gt;주차보조 시스템은 후진 일렬주차를 도와준다.&lt;/li&gt;
&lt;li data-end=&quot;3428&quot; data-start=&quot;3391&quot;&gt;차선 이탈 상황을 감지하여 운전자에게 알려준다.&lt;br /&gt;답: 2번&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-end=&quot;3433&quot; data-start=&quot;3430&quot; data-ke-size=&quot;size16&quot;&gt;주관식&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;3977&quot; data-start=&quot;3435&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;3523&quot; data-start=&quot;3435&quot;&gt;4차 산업혁명의 주요 영역들을 쓰시오.&lt;br /&gt;답: 사물인터넷, 빅데이터, 인공지능, 자율자동차&lt;/li&gt;
&lt;li data-end=&quot;3675&quot; data-start=&quot;3525&quot;&gt;각 산업혁명의 특징을 쓰시오.&lt;br /&gt;답: 1차: 증기기관 기반 기계화, 2차: 전기에너지 기반 대량생산, 3차: 컴퓨터와 인터넷 기반 정보, 4차 : 인공지능과 사물인터넷&lt;/li&gt;
&lt;li data-end=&quot;3675&quot; data-start=&quot;3525&quot;&gt;광컴퓨터의 장점을 설명하시오.&lt;br /&gt;답: 처리 속도가 빠르고, 정보 집적도가 높다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-end=&quot;3981&quot; data-start=&quot;3979&quot; data-ke-size=&quot;size26&quot;&gt;6장&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;5048&quot; data-start=&quot;3983&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;4024&quot; data-start=&quot;3983&quot;&gt;신경망 연산에서는 행렬의 곱셈이 기본적으로 사용된다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;4080&quot; data-start=&quot;4026&quot;&gt;미분은 기하학적 관점에서 보면 주어진 곡선의 접선을 구하는 문제와 동치이다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;4185&quot; data-start=&quot;4082&quot;&gt;우리가 일상생활에서 사용하는 자연어는 프로그래밍 언어와 달리 미리 정해진 규칙에 따라 엄밀하게 사용된다.&lt;br /&gt;답: X, 자연어는 프로그래밍 언어보다 모호하고 유연하게 사용된다.&lt;/li&gt;
&lt;li data-end=&quot;4259&quot; data-start=&quot;4187&quot;&gt;Prolog는 논리에 기반을 둔 인공지능용 프로그래밍 언어로, 지식을 논리로 표현하고 규칙에 따라 추론한다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;4340&quot; data-start=&quot;4261&quot;&gt;미분의 체인 규칙은 3개까지의 변수에 대해서만 연쇄적으로 작용된다.&lt;br /&gt;답: X, 체인 규칙은 3개 이상의 변수에도 적용될 수 있다.&lt;/li&gt;
&lt;li data-end=&quot;4424&quot; data-start=&quot;4342&quot;&gt;경사하강법은 오차의 제곱이 가장 많이 증가하는 방향으로 변화한다.&lt;br /&gt;답: X, 경사하강법은 오차가 가장 많이 감소하는 방향으로 이동한다.&lt;/li&gt;
&lt;li data-end=&quot;4476&quot; data-start=&quot;4426&quot;&gt;델타 규칙과 경사하강법은 신경망의 학습 규칙을 이해하는 데 필요하다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;4560&quot; data-start=&quot;4478&quot;&gt;벡터나 행렬과 같은 수학적 바탕이 없어도 인공지능 연구는 가능하다.&lt;br /&gt;답: X, 인공지능 연구에는 벡터&amp;middot;행렬 등 수학적 기초가 필요하다.&lt;/li&gt;
&lt;li data-end=&quot;4607&quot; data-start=&quot;4562&quot;&gt;벡터의 내적은 성분끼리 곱한 결과의 합이므로 스칼라 값이다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;4666&quot; data-start=&quot;4609&quot;&gt;행렬은 신경망에서 입력과 연결강도 사이의 곱의 합을 구할 때 중요한 역할을 한다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;4726&quot; data-start=&quot;4668&quot;&gt;삼각함수에서는 일반적인 각도 표현 대신 &amp;pi;나 2&amp;pi;를 사용하는 무엇을 사용하는가?&lt;br /&gt;답: 호도법&lt;/li&gt;
&lt;li data-end=&quot;4793&quot; data-start=&quot;4728&quot;&gt;1960년대 개발된 인공지능 언어 중 기본 자료형이 리스트와 트리 형태인 언어는 무엇인가?&lt;br /&gt;답: Lisp&lt;/li&gt;
&lt;li data-end=&quot;4853&quot; data-start=&quot;4795&quot;&gt;구글이 딥러닝을 위해 개발한 텐서플로는 주로 어떤 언어로 구현&amp;middot;사용되는가?&lt;br /&gt;답: Python&lt;/li&gt;
&lt;li data-end=&quot;4888&quot; data-start=&quot;4855&quot;&gt;통계에서 표준편차의 제곱은 무엇인가?&lt;br /&gt;답: 분산&lt;/li&gt;
&lt;li data-end=&quot;4956&quot; data-start=&quot;4890&quot;&gt;각 점의 직선에서의 수직 거리의 제곱합이 가장 작아지도록 계수가 결정되는 직선은 무엇인가?&lt;br /&gt;답: 회귀 직선&lt;/li&gt;
&lt;li data-end=&quot;5009&quot; data-start=&quot;4958&quot;&gt;최근 신경망 라이브러리로 많이 활용되는 것은 무엇인가?&lt;br /&gt;답: 텐서플로와 파이토치&lt;/li&gt;
&lt;li data-end=&quot;5048&quot; data-start=&quot;5011&quot;&gt;다음 중 활성 함수로 비교적 많이 쓰이지 않는 함수는?&lt;/li&gt;
&lt;/ol&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;5104&quot; data-start=&quot;5049&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;5059&quot; data-start=&quot;5049&quot;&gt;계단 함수&lt;/li&gt;
&lt;li data-end=&quot;5072&quot; data-start=&quot;5060&quot;&gt;임계논리 함수&lt;/li&gt;
&lt;li data-end=&quot;5086&quot; data-start=&quot;5073&quot;&gt;시그모이드 함수&lt;/li&gt;
&lt;li data-end=&quot;5104&quot; data-start=&quot;5087&quot;&gt;코사인 함수&lt;br /&gt;답: 4번&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;18. 다음 중 인공지능과 관련이 상대적으로 적은 프로그래밍 언어는?&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;5197&quot; data-start=&quot;5148&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;5159&quot; data-start=&quot;5148&quot;&gt;Python&lt;/li&gt;
&lt;li data-end=&quot;5169&quot; data-start=&quot;5160&quot;&gt;Ruby&lt;/li&gt;
&lt;li data-end=&quot;5179&quot; data-start=&quot;5170&quot;&gt;Lisp&lt;/li&gt;
&lt;li data-end=&quot;5197&quot; data-start=&quot;5180&quot;&gt;Prolog&lt;br /&gt;답: 2번&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;19. 다음 중 인공지능 관련 언어 중 가장 오래전부터 사용되던 것은?&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;5289&quot; data-start=&quot;5242&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;5253&quot; data-start=&quot;5242&quot;&gt;Python&lt;/li&gt;
&lt;li data-end=&quot;5263&quot; data-start=&quot;5254&quot;&gt;텐서플로&lt;/li&gt;
&lt;li data-end=&quot;5273&quot; data-start=&quot;5264&quot;&gt;파이토치&lt;/li&gt;
&lt;li data-end=&quot;5289&quot; data-start=&quot;5274&quot;&gt;Lisp&lt;br /&gt;답: 4번&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;20. 다음 중 Python의 주요 특징이라고 볼 수 없는 것은?&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;5449&quot; data-start=&quot;5331&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;5364&quot; data-start=&quot;5331&quot;&gt;인터프리터 언어로서 실행 결과를 즉석에서 확인 가능&lt;/li&gt;
&lt;li data-end=&quot;5396&quot; data-start=&quot;5365&quot;&gt;들여쓰기를 사용하여 블록을 구분하는 문법을 채용&lt;/li&gt;
&lt;li data-end=&quot;5427&quot; data-start=&quot;5397&quot;&gt;프리웨어가 아니므로 프로그램을 구입해야 한다.&lt;/li&gt;
&lt;li data-end=&quot;5449&quot; data-start=&quot;5428&quot;&gt;플랫폼 독립적이다.&lt;br /&gt;답: 3번&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-end=&quot;5454&quot; data-start=&quot;5451&quot; data-ke-size=&quot;size16&quot;&gt;주관식&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;5933&quot; data-start=&quot;5456&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;5710&quot; data-start=&quot;5546&quot;&gt;회귀직선을 간단히 설명하고 회귀 분석과의 관계를 말하시오.&lt;br /&gt;답: 회귀직선은 두 변수 x, y의 관계를 가장 잘 나타내는 직선 &lt;span&gt;&lt;span&gt;y=ax+b&lt;/span&gt;&lt;/span&gt;이며, 실제 데이터와 직선 사이 오차의 제곱합이 최소가 되도록 구한다. 회귀 분석은 이러한 회귀직선을 이용해 데이터의 관계를 분석하고 값을 예측하는 방법이다&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;2&quot; data-start=&quot;0&quot; data-ke-size=&quot;size26&quot;&gt;7장&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1144&quot; data-start=&quot;4&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;49&quot; data-start=&quot;4&quot;&gt;규칙기반 인공지능은 신경망과는 담당하는 역할이 다소 다르다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;97&quot; data-start=&quot;51&quot;&gt;규칙기반 인공지능에서는 논리를 바탕으로 규칙을 통해 추론한다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;183&quot; data-start=&quot;99&quot;&gt;논리의 중요한 목적에는 논리를 통한 입증이 옳은가를 포함하지 않는다.&lt;br /&gt;답: X, 논리는 추론과 입증이 타당한지를 판단하는 데 목적이 있다.&lt;/li&gt;
&lt;li data-end=&quot;226&quot; data-start=&quot;185&quot;&gt;논리는 일반적으로 명제 논리와 술어 논리로 구분된다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;307&quot; data-start=&quot;228&quot;&gt;논리에서 &amp;ldquo;3&amp;times;2=5라면, 런던은 미국의 수도다.&amp;rdquo;는 F가 된다.&lt;br /&gt;답: X, 조건 명제는 가정이 거짓이면 전체 명제가 참이 된다.&lt;/li&gt;
&lt;li data-end=&quot;362&quot; data-start=&quot;309&quot;&gt;연역 추론은 하나 이상의 전제로부터 다른 결론을 도출해내는 추론 방식이다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;453&quot; data-start=&quot;364&quot;&gt;역방향 추론은 출발 상태로부터 목표 상태를 향해 나가는 기법이다.&lt;br /&gt;답: X, 역방향 추론은 목표 상태에서 출발하여 조건을 거꾸로 추적하는 방법이다.&lt;/li&gt;
&lt;li data-end=&quot;512&quot; data-start=&quot;455&quot;&gt;게임에서 나의 가능성은 최대로, 상대방의 가능성은 최소로 하는 전략 탐색을 쓴다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;600&quot; data-start=&quot;514&quot;&gt;세탁기나 전자레인지 등에서의 단계별 사용 설명서는 알고리즘에 속하지 않는다.&lt;br /&gt;답: X, 단계별 절차를 명확히 제시한 것은 알고리즘에 해당한다.&lt;/li&gt;
&lt;li data-end=&quot;650&quot; data-start=&quot;602&quot;&gt;규칙이란 통상 &amp;ldquo;if ○○○ then &amp;times;&amp;times;&amp;times;&amp;rdquo; 형식으로 표현된다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;708&quot; data-start=&quot;652&quot;&gt;논리와 명제는 어떤 인공지능에 필수적인 이론적 기반을 제공하는가?&lt;br /&gt;답: 규칙기반 인공지능&lt;/li&gt;
&lt;li data-end=&quot;768&quot; data-start=&quot;710&quot;&gt;주어와 술어로 구분하여 참 또는 거짓에 관한 법칙을 다루는 논리는 무엇인가?&lt;br /&gt;답: 술어 논리&lt;/li&gt;
&lt;li data-end=&quot;822&quot; data-start=&quot;770&quot;&gt;명확하게 참이나 거짓을 구분할 수 있는 문장이나 수학적 식은 무엇인가?&lt;br /&gt;답: 명제&lt;/li&gt;
&lt;li data-end=&quot;875&quot; data-start=&quot;824&quot;&gt;추론은 크게 귀납 추론, ( ) 추론, 유비 추론으로 나눌 수 있다.&lt;br /&gt;답: 연역&lt;/li&gt;
&lt;li data-end=&quot;935&quot; data-start=&quot;877&quot;&gt;개별적 사실들의 분석으로부터 일반적인 결론을 끌어내는 추론 방법은 무엇인가?&lt;br /&gt;답: 귀납 추론&lt;/li&gt;
&lt;li data-end=&quot;988&quot; data-start=&quot;937&quot;&gt;목표를 찾기 위한 추론 방법에는 순방향 추론과 무엇이 있는가?&lt;br /&gt;답: 역방향 추론&lt;/li&gt;
&lt;li data-end=&quot;1040&quot; data-start=&quot;990&quot;&gt;문제 해결을 위한 여러 단계를 체계적으로 명시한 것은 무엇인가?&lt;br /&gt;답: 알고리즘&lt;/li&gt;
&lt;li data-end=&quot;1106&quot; data-start=&quot;1042&quot;&gt;인간 전문가의 전문 지식을 이용하여 문제를 해결하는 컴퓨터 자문 시스템은 무엇인가?&lt;br /&gt;답: 전문가 시스템&lt;/li&gt;
&lt;li data-end=&quot;1144&quot; data-start=&quot;1108&quot;&gt;다음의 탐색 중 경험적 지식을 사용하는 탐색 방법은?&lt;/li&gt;
&lt;/ol&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1203&quot; data-start=&quot;1145&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1157&quot; data-start=&quot;1145&quot;&gt;휴리스틱 탐색&lt;/li&gt;
&lt;li data-end=&quot;1171&quot; data-start=&quot;1158&quot;&gt;깊이 우선 탐색&lt;/li&gt;
&lt;li data-end=&quot;1185&quot; data-start=&quot;1172&quot;&gt;너비 우선 탐색&lt;/li&gt;
&lt;li data-end=&quot;1203&quot; data-start=&quot;1186&quot;&gt;무정보 탐색&lt;br /&gt;답: 1번&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;20. 다음 중 규칙을 이용한 인공지능 기법에 적절한 문제가 아닌 것은?&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1311&quot; data-start=&quot;1249&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1259&quot; data-start=&quot;1249&quot;&gt;물통 문제&lt;/li&gt;
&lt;li data-end=&quot;1274&quot; data-start=&quot;1260&quot;&gt;복잡한 곱셈 문제&lt;/li&gt;
&lt;li data-end=&quot;1288&quot; data-start=&quot;1275&quot;&gt;문자 암호 풀이&lt;/li&gt;
&lt;li data-end=&quot;1311&quot; data-start=&quot;1289&quot;&gt;8-puzzle 게임&lt;br /&gt;답: 2번&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-end=&quot;1316&quot; data-start=&quot;1313&quot; data-ke-size=&quot;size16&quot;&gt;주관식&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1805&quot; data-start=&quot;1318&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1532&quot; data-start=&quot;1406&quot;&gt;연역 추론 중 삼단논법을 간단히 설명하시오.&lt;br /&gt;답: 두 개의 전제로부터 하나의 결론을 이끌어내는 추론 방법이다. 예를 들어 &amp;ldquo;사람은 모두 죽는다, 소크라테스는 사람이다, 따라서 소크라테스는 죽는다&amp;rdquo;와 같은 방식이다.&lt;/li&gt;
&lt;li data-end=&quot;1607&quot; data-start=&quot;1534&quot;&gt;휴리스틱을 간단히 설명하시오.&lt;br /&gt;답: 엄밀한 분석보다 경험과 직관을 바탕으로 빠르게 문제를 해결하거나 판단하는 방법이다.&lt;/li&gt;
&lt;li data-end=&quot;1715&quot; data-start=&quot;1609&quot;&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-end=&quot;1809&quot; data-start=&quot;1807&quot; data-ke-size=&quot;size26&quot;&gt;8장&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;2941&quot; data-start=&quot;1811&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1862&quot; data-start=&quot;1811&quot;&gt;머신러닝은 인간의 학습 능력과 같은 기능을 실현하려는 기법과 분야이다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;1917&quot; data-start=&quot;1864&quot;&gt;머신러닝은 컴퓨터 프로그램이 데이터로부터 학습하는 과정이라고 할 수 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;2008&quot; data-start=&quot;1919&quot;&gt;지도 학습을 통해서는 자동차 번호판의 인식률을 높일 수 없다.&lt;br /&gt;답: X, 지도 학습은 레이블이 있는 데이터를 이용해 번호판 인식률을 높일 수 있다.&lt;/li&gt;
&lt;li data-end=&quot;2094&quot; data-start=&quot;2010&quot;&gt;비지도 학습에서는 데이터 학습을 위해 레이블이나 태그 표식을 붙인다.&lt;br /&gt;답: X, 비지도 학습은 레이블 없이 입력 데이터의 구조를 학습한다.&lt;/li&gt;
&lt;li data-end=&quot;2145&quot; data-start=&quot;2096&quot;&gt;회귀 분석 기술은 학습 데이터를 사용하여 하나의 출력값을 예측한다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;2216&quot; data-start=&quot;2147&quot;&gt;분류는 일정한 기준에 따라 구분하는 것이고, 회귀는 오차 제곱의 합을 최소화하는 직선을 긋는 작업이다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;2291&quot; data-start=&quot;2218&quot;&gt;머신러닝의 학습 방법 중 강화 학습은 포함되지 않는다.&lt;br /&gt;답: X, 머신러닝의 주요 학습 방법에는 강화 학습도 포함된다.&lt;/li&gt;
&lt;li data-end=&quot;2335&quot; data-start=&quot;2293&quot;&gt;머신러닝은 헬스케어 분야에서도 중요한 역할을 담당한다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;2381&quot; data-start=&quot;2337&quot;&gt;의사결정 트리는 관측값과 목표값을 연결하는 예측 모델이다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;2473&quot; data-start=&quot;2383&quot;&gt;강화 학습은 보상이 주어지는 문제 해결에 효과적인 학습 방법이 아니다.&lt;br /&gt;답: X, 강화 학습은 보상을 최대화하는 문제 해결에 효과적인 학습 방법이다.&lt;/li&gt;
&lt;li data-end=&quot;2533&quot; data-start=&quot;2475&quot;&gt;입력과 이에 대응하는 미리 알려진 출력을 연관시키는 관계를 학습하는 방법은?&lt;br /&gt;답: 지도 학습&lt;/li&gt;
&lt;li data-end=&quot;2590&quot; data-start=&quot;2535&quot;&gt;출력 없이 주어진 입력만으로 스스로 모델을 구축하여 학습하는 방법은?&lt;br /&gt;답: 비지도 학습&lt;/li&gt;
&lt;li data-end=&quot;2646&quot; data-start=&quot;2592&quot;&gt;스타크래프트와 바둑 같은 게임에서 보상을 위해 주로 사용되는 학습은?&lt;br /&gt;답: 강화 학습&lt;/li&gt;
&lt;li data-end=&quot;2697&quot; data-start=&quot;2648&quot;&gt;주어진 데이터 중 유사한 특성을 가진 것끼리 묶어서 나누는 것은?&lt;br /&gt;답: 분류&lt;/li&gt;
&lt;li data-end=&quot;2755&quot; data-start=&quot;2699&quot;&gt;데이터를 경계선으로 구분할 때 가장 큰 폭을 가진 경계선을 찾는 알고리즘은?&lt;br /&gt;답: SVM&lt;/li&gt;
&lt;li data-end=&quot;2805&quot; data-start=&quot;2757&quot;&gt;서로 유사한 특성을 가진 여러 개의 그룹으로 묶는 기법은?&lt;br /&gt;답: 클러스터링&lt;/li&gt;
&lt;li data-end=&quot;2854&quot; data-start=&quot;2807&quot;&gt;주어진 입력에 대응하는 출력 정보 없이 학습하는 것은?&lt;br /&gt;답: 비지도 학습&lt;/li&gt;
&lt;li data-end=&quot;2908&quot; data-start=&quot;2856&quot;&gt;과거 데이터를 기반으로 미래를 예측하는 모델로 활용되는 정리는?&lt;br /&gt;답: 베이즈 정리&lt;/li&gt;
&lt;li data-end=&quot;2941&quot; data-start=&quot;2910&quot;&gt;다음 중 머신러닝과 별로 관계가 없는 것은?&lt;/li&gt;
&lt;/ol&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;3036&quot; data-start=&quot;2942&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;2962&quot; data-start=&quot;2942&quot;&gt;프로그램을 명시적으로만 작성&lt;/li&gt;
&lt;li data-end=&quot;2986&quot; data-start=&quot;2963&quot;&gt;전통적인 프로그래밍 개념과는 다름&lt;/li&gt;
&lt;li data-end=&quot;3006&quot; data-start=&quot;2987&quot;&gt;인공지능에 속하는 부분집합&lt;/li&gt;
&lt;li data-end=&quot;3036&quot; data-start=&quot;3007&quot;&gt;데이터로부터 학습하여 지식을 획득&lt;br /&gt;답: 1번&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;20. 다음 중 지도 학습의 장점에 속하는 것은?&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;3165&quot; data-start=&quot;3069&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;3093&quot; data-start=&quot;3069&quot;&gt;레이블이 있는 데이터를 사용해야 함&lt;/li&gt;
&lt;li data-end=&quot;3118&quot; data-start=&quot;3094&quot;&gt;경험을 사용하여 성능 기준을 최적화&lt;/li&gt;
&lt;li data-end=&quot;3139&quot; data-start=&quot;3119&quot;&gt;일반적으로 많은 시간이 걸림&lt;/li&gt;
&lt;li data-end=&quot;3165&quot; data-start=&quot;3140&quot;&gt;제한된 유형의 문제를 해결&lt;br /&gt;답: 2번&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-end=&quot;3170&quot; data-start=&quot;3167&quot; data-ke-size=&quot;size16&quot;&gt;주관식&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;3660&quot; data-start=&quot;3172&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;3275&quot; data-start=&quot;3172&quot;&gt;머신러닝의 주요 종류를 말하시오.&lt;br /&gt;답: 지도 학습, 비지도 학습, 강화 학습&lt;/li&gt;
&lt;li data-end=&quot;3275&quot; data-start=&quot;3172&quot;&gt;회귀의 개념을 설명하시오.&lt;br /&gt;답: 회귀는 하나의 종속 변수와 하나 이상의 독립 변수 사이의 관계를 분석하여 연속적인 값을 예측하는 통계적 방법이다.&lt;/li&gt;
&lt;li data-end=&quot;3561&quot; data-start=&quot;3468&quot;&gt;머신러닝에서 활용되는 비지도 학습 방법을 쓰시오.&lt;br /&gt;답: K-means 클러스터링, 계층적 클러스터링, 가우스 혼합 모델(GMM), PCA(주성분 분석) 등이 있다.&lt;/li&gt;
&lt;li data-end=&quot;3660&quot; data-start=&quot;3563&quot;&gt;강화 학습에 대해 간단히 설명하시오.&lt;br /&gt;답: 에이전트가 환경에서 행동을 선택하고, 그 결과의 보상으로 최적의 행동 전략을 학습하는 방법이다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-end=&quot;3664&quot; data-start=&quot;3662&quot; data-ke-size=&quot;size26&quot;&gt;9장&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;4785&quot; data-start=&quot;3666&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;3709&quot; data-start=&quot;3666&quot;&gt;뉴런의 작용을 모델링한 신경망은 인공신경망으로도 불린다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;3765&quot; data-start=&quot;3711&quot;&gt;맥컬럭은 인간 두뇌를 수많은 뉴런들로 이루어진 잘 정의된 컴퓨터라고 여겼다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;3820&quot; data-start=&quot;3767&quot;&gt;신경망은 문자인식, 음성인식, 영상인식, 자연어 처리 등에 이용되고 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;3900&quot; data-start=&quot;3822&quot;&gt;XOR 함수는 선형 분리가 가능한 논리함수에 속한다.&lt;br /&gt;답: X, XOR 함수는 하나의 직선으로 분리할 수 없는 비선형 문제이다.&lt;/li&gt;
&lt;li data-end=&quot;3968&quot; data-start=&quot;3902&quot;&gt;신경망의 가장 간단한 노드는 여러 입력과 연결강도의 곱을 합한 뒤 활성 함수를 거쳐 출력을 낸다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;4022&quot; data-start=&quot;3970&quot;&gt;노드는 임계값이나 오프셋 &amp;theta;, 비선형 함수의 형태에 따라 값이 정해진다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;4117&quot; data-start=&quot;4024&quot;&gt;단층 퍼셉트론의 한계가 노출되면서 2000년대 중반에 다층 퍼셉트론 모델이 제안되었다.&lt;br /&gt;답: X, 다층 퍼셉트론은 2000년대 중반보다 이전에 제안되었다.&lt;/li&gt;
&lt;li data-end=&quot;4167&quot; data-start=&quot;4119&quot;&gt;신경망은 병렬처리나 학습과 관련된 지능적 역할을 수행할 수 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;4266&quot; data-start=&quot;4169&quot;&gt;단층 퍼셉트론은 딥러닝의 심층신경망을 거쳐 다층 퍼셉트론으로 발전하였다.&lt;br /&gt;답: X, 단층 퍼셉트론 이후 다층 퍼셉트론이 발전하고, 이후 심층신경망으로 확장되었다.&lt;/li&gt;
&lt;li data-end=&quot;4319&quot; data-start=&quot;4268&quot;&gt;신경망은 계산 복잡성으로 인해 학습 시간이 오래 걸리는 문제점이 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;4371&quot; data-start=&quot;4321&quot;&gt;신경망은 인간 두뇌의 생물학적 무엇의 작용을 모방하여 고안되었는가?&lt;br /&gt;답: 뉴런&lt;/li&gt;
&lt;li data-end=&quot;4417&quot; data-start=&quot;4373&quot;&gt;신경망에서는 뉴런 사이의 무엇을 조정하여 학습하는가?&lt;br /&gt;답: 연결강도&lt;/li&gt;
&lt;li data-end=&quot;4470&quot; data-start=&quot;4419&quot;&gt;다층 퍼셉트론의 학습은 어떤 알고리즘에 의해 이루어지는가?&lt;br /&gt;답: 역전파 알고리즘&lt;/li&gt;
&lt;li data-end=&quot;4522&quot; data-start=&quot;4472&quot;&gt;다층 퍼셉트론은 입력층, ( ), 출력층의 순서로 연결되어 있다.&lt;br /&gt;답: 은닉층&lt;/li&gt;
&lt;li data-end=&quot;4577&quot; data-start=&quot;4524&quot;&gt;민스키와 페퍼트는 어떤 저서에서 단층 퍼셉트론의 문제점을 밝혔는가?&lt;br /&gt;답: 퍼셉트론즈&lt;/li&gt;
&lt;li data-end=&quot;4621&quot; data-start=&quot;4579&quot;&gt;마크 I 퍼셉트론은 무엇을 인식하는 성과를 보였는가?&lt;br /&gt;답: 문자&lt;/li&gt;
&lt;li data-end=&quot;4680&quot; data-start=&quot;4623&quot;&gt;출력과 목표 출력의 오차 제곱합을 최소화하도록 연결강도를 조정하는 규칙은?&lt;br /&gt;답: 델타 규칙&lt;/li&gt;
&lt;li data-end=&quot;4743&quot; data-start=&quot;4682&quot;&gt;다층 퍼셉트론에서는 매우 낮은 확률이지만 어떤 최소점 문제에 봉착할 수 있는가?&lt;br /&gt;답: 지역 최소점&lt;/li&gt;
&lt;li data-end=&quot;4785&quot; data-start=&quot;4745&quot;&gt;다음 중 신경망에서 많이 사용되는 비선형 함수가 아닌 것은?&lt;/li&gt;
&lt;/ol&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;4840&quot; data-start=&quot;4786&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;4796&quot; data-start=&quot;4786&quot;&gt;계단 함수&lt;/li&gt;
&lt;li data-end=&quot;4810&quot; data-start=&quot;4797&quot;&gt;시그모이드 함수&lt;/li&gt;
&lt;li data-end=&quot;4823&quot; data-start=&quot;4811&quot;&gt;임계논리 함수&lt;/li&gt;
&lt;li data-end=&quot;4840&quot; data-start=&quot;4824&quot;&gt;사인 함수&lt;br /&gt;답: 4번&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;20. 다음 중 선형 분리가 불가능한 논리함수는?&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;4925&quot; data-start=&quot;4873&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;4884&quot; data-start=&quot;4873&quot;&gt;AND 함수&lt;/li&gt;
&lt;li data-end=&quot;4896&quot; data-start=&quot;4885&quot;&gt;XOR 함수&lt;/li&gt;
&lt;li data-end=&quot;4907&quot; data-start=&quot;4897&quot;&gt;OR 함수&lt;/li&gt;
&lt;li data-end=&quot;4925&quot; data-start=&quot;4908&quot;&gt;NOT 함수&lt;br /&gt;답: 2번&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-end=&quot;4930&quot; data-start=&quot;4927&quot; data-ke-size=&quot;size16&quot;&gt;주관식&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;5451&quot; data-start=&quot;4932&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;5040&quot; data-start=&quot;4932&quot;&gt;신경망의 획기적인 3가지 모델과 해당 알고리즘을 쓰시오.&lt;br /&gt;답: 퍼셉트론 - 퍼셉트론 학습 , 다층 퍼셉트론 -&amp;nbsp; 역전파, 심층신경망(DNN) - 딥러닝 알고리즘&lt;/li&gt;
&lt;li data-end=&quot;5107&quot; data-start=&quot;5042&quot;&gt;최초의 학습 규칙은 무엇이고 개발한 인물은 누구인가?&lt;br /&gt;답: 헵의 학습 규칙이며, 도널드 헵이 개발하였다.&lt;/li&gt;
&lt;li data-end=&quot;5208&quot; data-start=&quot;5109&quot;&gt;선형 분리 가능의 특징을 설명하시오.&lt;br /&gt;답: 두 패턴 클래스가 하나의 직선 또는 초평면으로 구분될 수 있는 경우를 말한다. AND, OR 함수는 선형 분리가 가능하다.&lt;/li&gt;
&lt;li data-end=&quot;5343&quot; data-start=&quot;5210&quot;&gt;신경망이 문자인식에 많이 쓰이는 이유와 단점을 서술하시오.&lt;br /&gt;답: 신경망은 잡음, 왜곡, 크기 변화, 위치 변화 등에 비교적 잘 적응할 수 있어 문자인식에 적합하다. 단점은 많은 학습 데이터와 긴 훈련 시간이 필요하다는 점이다.&lt;/li&gt;
&lt;li data-end=&quot;5451&quot; data-start=&quot;5345&quot;&gt;다층 퍼셉트론에서 역전파 알고리즘을 설명하시오.&lt;br /&gt;답: 입력층에서 은닉층을 거쳐 출력층으로 계산한 뒤, 출력 오차를 반대 방향으로 전파하면서 연결강도를 조정하는 학습 알고리즘이다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-end=&quot;5456&quot; data-start=&quot;5453&quot; data-ke-size=&quot;size26&quot;&gt;10장&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;6652&quot; data-start=&quot;5458&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;5516&quot; data-start=&quot;5458&quot;&gt;딥러닝 기반의 심층신경망은 이미 존재하는 다층 신경망의 특수한 경우로 볼 수 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;5569&quot; data-start=&quot;5518&quot;&gt;딥러닝의 시초는 1980년 일본의 후쿠시마가 개발한 네오코그니트론이다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;5654&quot; data-start=&quot;5571&quot;&gt;딥러닝은 머신러닝이나 신경망보다 훨씬 큰 규모의 데이터를 학습할 수 없다.&lt;br /&gt;답: X, 딥러닝은 대규모 데이터를 학습하는 데 강점이 있다.&lt;/li&gt;
&lt;li data-end=&quot;5720&quot; data-start=&quot;5656&quot;&gt;힌턴은 새로운 딥러닝 기반 학습 알고리즘을 제안하여 과적합 문제 등을 해결하는 데 기여하였다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;5796&quot; data-start=&quot;5722&quot;&gt;RBM은 제한된 볼츠만 머신으로 지도 학습에만 활용된다.&lt;br /&gt;답: X, RBM은 주로 비지도 학습이나 사전 학습에 활용된다.&lt;/li&gt;
&lt;li data-end=&quot;5852&quot; data-start=&quot;5798&quot;&gt;심층 신뢰 신경망은 사전에 훈련된 RBM을 여러 층으로 쌓아 올린 구조이다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;5906&quot; data-start=&quot;5854&quot;&gt;컴퓨터 게임의 지능적 행동은 딥러닝 학습을 통해 다양하게 적용되고 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;5981&quot; data-start=&quot;5908&quot;&gt;인공지능 반도체 시장은 앞으로 다소 정체될 것으로 예측된다.&lt;br /&gt;답: X, 인공지능 반도체 시장은 성장할 것으로 예측된다.&lt;/li&gt;
&lt;li data-end=&quot;6066&quot; data-start=&quot;5983&quot;&gt;텐서플로는 누구나 무료로 다운받아 사용할 수 있는 소프트웨어가 아니다.&lt;br /&gt;답: X, 텐서플로는 오픈소스 소프트웨어로 무료 사용이 가능하다.&lt;/li&gt;
&lt;li data-end=&quot;6128&quot; data-start=&quot;6068&quot;&gt;텐서플로 자체는 C++로 구현되어 있으며 Python, Java 등의 언어를 지원한다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;6206&quot; data-start=&quot;6130&quot;&gt;2006년 힌턴 교수는 다층 신경망에 학습을 통한 전처리 과정을 추가한 어떤 학습 알고리즘 기법을 발표하였는가?&lt;br /&gt;답: RBM&lt;/li&gt;
&lt;li data-end=&quot;6245&quot; data-start=&quot;6208&quot;&gt;심층신경망은 여러 개의 무엇을 사용하는가?&lt;br /&gt;답: 은닉층&lt;/li&gt;
&lt;li data-end=&quot;6297&quot; data-start=&quot;6247&quot;&gt;딥러닝의 장점은 무엇과 분류가 자동적으로 이루어진다는 점인가?&lt;br /&gt;답: 특징 추출&lt;/li&gt;
&lt;li data-end=&quot;6351&quot; data-start=&quot;6299&quot;&gt;순차적 정보가 담긴 데이터에서 규칙적 패턴을 인식하는 신경망은?&lt;br /&gt;답: 순환 신경망&lt;/li&gt;
&lt;li data-end=&quot;6393&quot; data-start=&quot;6353&quot;&gt;다양한 차원의 배열로 나타나는 데이터는 무엇인가?&lt;br /&gt;답: 텐서&lt;/li&gt;
&lt;li data-end=&quot;6449&quot; data-start=&quot;6395&quot;&gt;개발자의 성지라고 불리며 오픈소스 소프트웨어의 중심지 역할을 하는 곳은?&lt;br /&gt;답: 깃허브&lt;/li&gt;
&lt;li data-end=&quot;6495&quot; data-start=&quot;6451&quot;&gt;딥러닝을 지원하는 구글이 만든 소프트웨어는 무엇인가?&lt;br /&gt;답: 텐서플로&lt;/li&gt;
&lt;li data-end=&quot;6558&quot; data-start=&quot;6497&quot;&gt;텐서플로의 대부분의 편리한 기능은 어떤 라이브러리로 구현되어 있는가?&lt;br /&gt;답: Python 라이브러리&lt;/li&gt;
&lt;li data-end=&quot;6618&quot; data-start=&quot;6560&quot;&gt;페이스북이 개발한 Python 기반의 오픈소스 머신러닝 라이브러리는 무엇인가?&lt;br /&gt;답: 파이토치&lt;/li&gt;
&lt;li data-end=&quot;6652&quot; data-start=&quot;6620&quot;&gt;다음 중 텐서플로가 자주 활용되지 않는 것은?&lt;/li&gt;
&lt;/ol&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;6701&quot; data-start=&quot;6653&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;6662&quot; data-start=&quot;6653&quot;&gt;영상인식&lt;/li&gt;
&lt;li data-end=&quot;6672&quot; data-start=&quot;6663&quot;&gt;음성인식&lt;/li&gt;
&lt;li data-end=&quot;6683&quot; data-start=&quot;6673&quot;&gt;적분 계산&lt;/li&gt;
&lt;li data-end=&quot;6701&quot; data-start=&quot;6684&quot;&gt;자연어 처리&lt;br /&gt;답: 3번&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-end=&quot;6706&quot; data-start=&quot;6703&quot; data-ke-size=&quot;size16&quot;&gt;주관식&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;7272&quot; data-start=&quot;6708&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;6818&quot; data-start=&quot;6708&quot;&gt;딥러닝이 무엇인가와 응용 분야를 간단히 설명하시오.&lt;br /&gt;답: 딥러닝은 심층신경망을 기반 머신러닝 분야. 음성인식, 영상인식, 자연어 처리, 게임, 자율주행&amp;nbsp; 활용&lt;/li&gt;
&lt;li data-end=&quot;7063&quot; data-start=&quot;6962&quot;&gt;설명가능 인공지능의 핵심을 간략히 설명하시오.&lt;br /&gt;답: 설명가능 인공지능은 인공지능이 도출한 결과와 판단 과정을 사람이 이해할 수 있도록 설명하여 신뢰성을 높이는 방법&lt;/li&gt;
&lt;li data-end=&quot;7155&quot; data-start=&quot;7065&quot;&gt;NPU가 무엇인지 간략하게 설명하시오.&lt;br /&gt;답: NPU는 신경망 처리장치로, 딥러닝 연산을 빠르게 처리하기 위해 병렬 연산에 특화된 인공지능 반도체&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;3&quot; data-start=&quot;0&quot; data-ke-size=&quot;size26&quot;&gt;11장&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1132&quot; data-start=&quot;5&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;60&quot; data-start=&quot;5&quot;&gt;음성인식은 발성자의 성별이나 나이, 지속 시간 등에 따라 인식 결과가 다르다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;161&quot; data-start=&quot;62&quot;&gt;영상인식은 2차원이나 3차원의 영상 정보를 다루므로 인식 시간이 상당히 빠른 편이다.&lt;br /&gt;답: X, 영상인식은 처리해야 할 데이터 양이 많아 시간이 오래 걸리는 편이다.&lt;/li&gt;
&lt;li data-end=&quot;235&quot; data-start=&quot;163&quot;&gt;화자종속 음성인식 기술이 화자독립 음성인식 기술보다 훨씬 더 어렵다.&lt;br /&gt;답: X, 화자독립 음성인식 기술이 더 어렵다.&lt;/li&gt;
&lt;li data-end=&quot;294&quot; data-start=&quot;237&quot;&gt;음성합성 시스템은 주어진 문장을 음성으로 들을 수 있는 편리함을 제공할 수 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;353&quot; data-start=&quot;296&quot;&gt;대부분의 최신 스마트폰에는 음성인식을 통해 비서 역할을 하는 에이전트가 적용된다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;403&quot; data-start=&quot;355&quot;&gt;지문인식 기술은 보안이 필요한 장소의 신분 확인에 많이 사용된다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;465&quot; data-start=&quot;405&quot;&gt;문자인식은 영상인식의 영역에 속하지 않는다.&lt;br /&gt;답: X, 문자인식은 영상인식 분야의 한 영역이다.&lt;/li&gt;
&lt;li data-end=&quot;543&quot; data-start=&quot;467&quot;&gt;자연어에서 문법적 지식에 의미를 부여하는 것은 구문론적 이해이다.&lt;br /&gt;답: X, 문맥과 의미를 이해하는 것은 의미론적 이해이다.&lt;/li&gt;
&lt;li data-end=&quot;598&quot; data-start=&quot;545&quot;&gt;자연어 이해란 글을 이해하여 자연어 표현의 상황을 이해하는 수준을 말한다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;653&quot; data-start=&quot;600&quot;&gt;네이버의 번역 서비스인 파파고는 여러 언어의 번역 서비스를 제공하고 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;704&quot; data-start=&quot;655&quot;&gt;키보드 없이 음성을 인식하여 문서로 바꾸는 장치는 무엇인가?&lt;br /&gt;답: 음성타자기&lt;/li&gt;
&lt;li data-end=&quot;757&quot; data-start=&quot;706&quot;&gt;눈동자의 홍채 정보를 이용하여 사람을 인식하는 기술은 무엇인가?&lt;br /&gt;답: 홍채 인식&lt;/li&gt;
&lt;li data-end=&quot;816&quot; data-start=&quot;759&quot;&gt;문자 정보를 사람이 알아들을 수 있게 음성으로 만들어주는 기술은 무엇인가?&lt;br /&gt;답: 음성 합성&lt;/li&gt;
&lt;li data-end=&quot;867&quot; data-start=&quot;818&quot;&gt;음성인식 기술은 화자종속과 ( ) 음성인식으로 나눌 수 있다.&lt;br /&gt;답: 화자독립&lt;/li&gt;
&lt;li data-end=&quot;925&quot; data-start=&quot;869&quot;&gt;영상 파일을 신경망이나 딥러닝 기술로 분석하여 인식하는 기술은 무엇인가?&lt;br /&gt;답: 영상 인식&lt;/li&gt;
&lt;li data-end=&quot;984&quot; data-start=&quot;927&quot;&gt;주어진 영상을 보고 그 내용까지 이해하는 상당히 지능적인 단계는 무엇인가?&lt;br /&gt;답: 영상 이해&lt;/li&gt;
&lt;li data-end=&quot;1041&quot; data-start=&quot;986&quot;&gt;인공지능 목소리는 무엇과 인공지능 기술의 결합으로 이루어질 수 있는가?&lt;br /&gt;답: 음성 합성&lt;/li&gt;
&lt;li data-end=&quot;1095&quot; data-start=&quot;1043&quot;&gt;컴퓨터를 통해 서로 다른 언어들을 번역하는 일을 무엇이라 하는가?&lt;br /&gt;답: 기계 번역&lt;/li&gt;
&lt;li data-end=&quot;1132&quot; data-start=&quot;1097&quot;&gt;다음의 인식 중 접촉식 인식 방법에 해당되는 것은?&lt;/li&gt;
&lt;/ol&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1184&quot; data-start=&quot;1133&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1142&quot; data-start=&quot;1133&quot;&gt;홍채인식&lt;/li&gt;
&lt;li data-end=&quot;1152&quot; data-start=&quot;1143&quot;&gt;지문인식&lt;/li&gt;
&lt;li data-end=&quot;1162&quot; data-start=&quot;1153&quot;&gt;얼굴인식&lt;/li&gt;
&lt;li data-end=&quot;1184&quot; data-start=&quot;1163&quot;&gt;자동차 번호판 인식&lt;br /&gt;답: 2번&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;20. 다음 중 현재의 패턴인식 기술과 관계가 비교적 적은 것은?&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1271&quot; data-start=&quot;1226&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1235&quot; data-start=&quot;1226&quot;&gt;문자인식&lt;/li&gt;
&lt;li data-end=&quot;1245&quot; data-start=&quot;1236&quot;&gt;음성인식&lt;/li&gt;
&lt;li data-end=&quot;1255&quot; data-start=&quot;1246&quot;&gt;감정인식&lt;/li&gt;
&lt;li data-end=&quot;1271&quot; data-start=&quot;1256&quot;&gt;얼굴인식&lt;br /&gt;답: 3번&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-end=&quot;1276&quot; data-start=&quot;1273&quot; data-ke-size=&quot;size16&quot;&gt;주관식&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1703&quot; data-start=&quot;1278&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1423&quot; data-start=&quot;1356&quot;&gt;음성인식을 위해 많이 쓰이는 방법을 말하시오.&lt;br /&gt;답: 패턴 매칭, 은닉 마르코프 모델, 딥러닝 등이 사용된다.&lt;/li&gt;
&lt;li data-end=&quot;1703&quot; data-start=&quot;1609&quot;&gt;자연어 처리에서 구문론과 의미론의 차이점을 설명하시오.&lt;br /&gt;답: 구문론은 문장의 문법 구조와 단어 배열 규칙을 분석하는 것이고, 의미론은 문장이 가지는 의미를 해석하는 것이다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-end=&quot;1708&quot; data-start=&quot;1705&quot; data-ke-size=&quot;size26&quot;&gt;12장&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;2894&quot; data-start=&quot;1710&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1812&quot; data-start=&quot;1710&quot;&gt;데이터 사이언스는 통계 방법만을 사용하여 대량의 데이터를 처리하는 전문 분야이다.&lt;br /&gt;답: X, 데이터 사이언스는 통계뿐 아니라 머신러닝&amp;middot;알고리즘&amp;middot;데이터 처리 등을 포함한다.&lt;/li&gt;
&lt;li data-end=&quot;1868&quot; data-start=&quot;1814&quot;&gt;데이터 사이언스는 데이터를 다루는 방법론, 프로세스, 알고리즘 등을 다룬다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;1954&quot; data-start=&quot;1870&quot;&gt;머신러닝을 전혀 이용하지 않고도 데이터 사이언스가 폭넓게 활용될 수 있다.&lt;br /&gt;답: X, 머신러닝은 데이터 사이언스의 핵심 기술 중 하나이다.&lt;/li&gt;
&lt;li data-end=&quot;2001&quot; data-start=&quot;1956&quot;&gt;SAS는 통계적 소프트웨어로 안정성과 신뢰성을 가지고 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;2056&quot; data-start=&quot;2003&quot;&gt;데이터 사이언스에서의 분석은 분류, 회귀, 클러스터링에 의한 경우가 많다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;2107&quot; data-start=&quot;2058&quot;&gt;빅데이터는 구매 패턴 분석과 앱의 경향 분석 등에 응용될 수 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;2162&quot; data-start=&quot;2109&quot;&gt;태풍이나 허리케인과 관련된 빅데이터를 활용하여 재해 예방에 활용하고 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;2251&quot; data-start=&quot;2164&quot;&gt;개인정보보호 문제는 빅데이터의 자료 수집 문제와 거의 관련이 없다.&lt;br /&gt;답: X, 빅데이터 수집 과정에서는 개인정보보호 문제가 중요하게 다루어진다.&lt;/li&gt;
&lt;li data-end=&quot;2320&quot; data-start=&quot;2253&quot;&gt;데이터 마이닝은 데이터로부터 정보를 추출하고 패턴을 발견하며 예측 모델을 개발하는 데 중심을 둔다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-end=&quot;2399&quot; data-start=&quot;2322&quot;&gt;우리나라에서는 아직 데이터 거래소가 별로 필요하지 않다.&lt;br /&gt;답: X, 데이터 활용 증가로 데이터 거래소의 필요성이 커지고 있다.&lt;/li&gt;
&lt;li data-end=&quot;2454&quot; data-start=&quot;2401&quot;&gt;데이터 사이언스나 빅데이터 관련 업무 전문가를 무엇이라 하는가?&lt;br /&gt;답: 데이터 과학자&lt;/li&gt;
&lt;li data-end=&quot;2511&quot; data-start=&quot;2456&quot;&gt;다양한 형태의 정형 또는 비정형 데이터를 많이 모아 놓은 것은 무엇인가?&lt;br /&gt;답: 빅데이터&lt;/li&gt;
&lt;li data-end=&quot;2562&quot; data-start=&quot;2513&quot;&gt;빅데이터의 3가지 특징(3V)은 크기, 다양성, 그리고 무엇인가?&lt;br /&gt;답: 속도&lt;/li&gt;
&lt;li data-end=&quot;2622&quot; data-start=&quot;2564&quot;&gt;대규모 데이터 집합에서 통계적 규칙이나 패턴을 찾아내는 과정은 무엇인가?&lt;br /&gt;답: 데이터 마이닝&lt;/li&gt;
&lt;li data-end=&quot;2678&quot; data-start=&quot;2624&quot;&gt;주어진 많은 데이터 중 비슷한 특성을 가진 것끼리 분리하는 것은 무엇인가?&lt;br /&gt;답: 분류&lt;/li&gt;
&lt;li data-end=&quot;2733&quot; data-start=&quot;2680&quot;&gt;데이터 집합을 유사도에 따라 여러 클러스터로 나누는 것은 무엇인가?&lt;br /&gt;답: 클러스터링&lt;/li&gt;
&lt;li data-end=&quot;2787&quot; data-start=&quot;2735&quot;&gt;탐색적 분석 결과를 보기 쉽고 이해하기 쉽게 표현하는 것은 무엇인가?&lt;br /&gt;답: 시각화&lt;/li&gt;
&lt;li data-end=&quot;2845&quot; data-start=&quot;2789&quot;&gt;오픈소스 통계 프로그래밍 언어로 데이터 분석과 시각화에 활용되는 것은 무엇인가?&lt;br /&gt;답: R&lt;/li&gt;
&lt;li data-end=&quot;2894&quot; data-start=&quot;2847&quot;&gt;데이터 사이언스에 필요한 지식과 기술 중 중요성이 상대적으로 적은 것은?&lt;/li&gt;
&lt;/ol&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;2972&quot; data-start=&quot;2895&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;2909&quot; data-start=&quot;2895&quot;&gt;데이터 수집 기술&lt;/li&gt;
&lt;li data-end=&quot;2926&quot; data-start=&quot;2910&quot;&gt;컴퓨터 하드웨어 지식&lt;/li&gt;
&lt;li data-end=&quot;2944&quot; data-start=&quot;2927&quot;&gt;통계처리와 시각화 기술&lt;/li&gt;
&lt;li data-end=&quot;2972&quot; data-start=&quot;2945&quot;&gt;머신러닝과 관련된 지식과 기술&lt;br /&gt;답: 2번&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;20. 다음 중 데이터 사이언스의 도구와 가장 관계가 먼 것은?&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;3056&quot; data-start=&quot;3013&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;3024&quot; data-start=&quot;3013&quot;&gt;Python&lt;/li&gt;
&lt;li data-end=&quot;3031&quot; data-start=&quot;3025&quot;&gt;R&lt;/li&gt;
&lt;li data-end=&quot;3040&quot; data-start=&quot;3032&quot;&gt;SAS&lt;/li&gt;
&lt;li data-end=&quot;3056&quot; data-start=&quot;3041&quot;&gt;Ruby&lt;br /&gt;답: 4번&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-end=&quot;3061&quot; data-start=&quot;3058&quot; data-ke-size=&quot;size16&quot;&gt;주관식&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;3516&quot; data-start=&quot;3063&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;3240&quot; data-start=&quot;3147&quot;&gt;데이터 사이언스는 어떤 분야들의 융합으로 이루어지는지 말하시오.&lt;br /&gt;답: 통계학, 수학, 머신러닝, 빅데이터, 컴퓨터공학, 비즈니스&amp;nbsp;&lt;/li&gt;
&lt;li data-end=&quot;3333&quot; data-start=&quot;3242&quot;&gt;사용자가 빅데이터를 활용하는 단계를 쓰시오.&lt;br /&gt;답: 요구사항 확인 &amp;rarr; 데이터 수집 &amp;rarr; 데이터 가공 &amp;rarr; 데이터 분석 및 시각화 &amp;rarr; 활용의 단계로 진행된다.&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>CS-Junior/기계학습</category>
      <author>김형준</author>
      <guid isPermaLink="true">https://devreco.tistory.com/30</guid>
      <comments>https://devreco.tistory.com/30#entry30comment</comments>
      <pubDate>Wed, 6 May 2026 17:37:16 +0900</pubDate>
    </item>
    <item>
      <title>처음만나는 인공지능 연습문제 모음</title>
      <link>https://devreco.tistory.com/31</link>
      <description>&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot; data-start=&quot;0&quot; data-end=&quot;2&quot;&gt;1장&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;4&quot; data-end=&quot;1289&quot;&gt;
&lt;li data-start=&quot;4&quot; data-end=&quot;46&quot;&gt;인공지능은 인간의 지능 활동을 컴퓨터에 접목하는 기술이다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;48&quot; data-end=&quot;130&quot;&gt;인공지능의 역사는 그리 오래되지 않았으나, 약 150년 정도의 전통을 가지고 있다.&lt;br /&gt;답: X, 인공지능 연구는 1950년대부터 시작되었다.&lt;/li&gt;
&lt;li data-start=&quot;132&quot; data-end=&quot;167&quot;&gt;4차 산업혁명은 인공지능 기술과 관련이 깊다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;169&quot; data-end=&quot;273&quot;&gt;최근 인간 두뇌를 구현하기 위한 연구가 진전되어, 이미 감정이나 의식을 가진 인공지능이 개발되어 있다.&lt;br /&gt;답: X, 인간과 같은 감정&amp;middot;의식을 가진 인공지능은 아직 개발되지 않았다.&lt;/li&gt;
&lt;li data-start=&quot;275&quot; data-end=&quot;344&quot;&gt;좌뇌는 음악과 문학 등의 예술적 사고나 추상적인 사고를 담당한다.&lt;br /&gt;답: X, 예술적&amp;middot;추상적 사고는 우뇌의 기능이다.&lt;/li&gt;
&lt;li data-start=&quot;346&quot; data-end=&quot;406&quot;&gt;민스키는 비교적 초기 인공지능 연구자에 속하는 인물로서 인공지능 연구에 큰 공헌을 하였다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;408&quot; data-end=&quot;482&quot;&gt;인공지능 바둑 프로그램인 알파고는 인공지능 초창기인 1970년대에 개발되었다.&lt;br /&gt;답: X, 알파고는 2010년대에 개발되었다.&lt;/li&gt;
&lt;li data-start=&quot;484&quot; data-end=&quot;539&quot;&gt;인공지능이 만드는 문장에서 가장 핵심적인 사항은 구문도 맞고 의미가 통해야 한다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;541&quot; data-end=&quot;614&quot;&gt;인공지능 소프트웨어 기자인 기자 로봇은 현재 미국에서 주식 시황이나 스포츠 기사를 실제로 작성하며 활동하고 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;616&quot; data-end=&quot;681&quot;&gt;자율주행 자동차는 현재 상업용으로 활발하게 이용되고 있다.&lt;br /&gt;답: X, 현재는 시범 운영 및 개발 단계이다.&lt;/li&gt;
&lt;li data-start=&quot;683&quot; data-end=&quot;756&quot;&gt;고등학생 수준의 인공지능 글쓰기는 미국에서는 이미 가능하다.&lt;br /&gt;답: X, 교재 기준으로는 미래에 가능할 것으로 전망하였다.&lt;/li&gt;
&lt;li data-start=&quot;758&quot; data-end=&quot;809&quot;&gt;인공지능이 그린 미술 작품 중 실제 5억 원 정도에 거래된 작품도 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;811&quot; data-end=&quot;870&quot;&gt;그래픽카드의 핵심 칩으로 인공지능 프로그램에서 그래픽 정보를 빠르게 처리하는 것은?&lt;br /&gt;답: GPU&lt;/li&gt;
&lt;li data-start=&quot;981&quot; data-end=&quot;1024&quot;&gt;인간 두뇌는 수많은 무엇으로 이루어져 있는가?&lt;br /&gt;답: 뉴런(신경세포)&lt;/li&gt;
&lt;li data-start=&quot;1026&quot; data-end=&quot;1087&quot;&gt;좌뇌는 규칙 기반 인공지능과 연관이 많고, 우뇌는 ( )에 적합한 신경망과 관련이 많다.&lt;br /&gt;답: 학습&lt;/li&gt;
&lt;li data-start=&quot;1146&quot; data-end=&quot;1186&quot;&gt;1997년 IBM이 개발한 체스 전용 컴퓨터는?&lt;br /&gt;답: 딥 블루&lt;/li&gt;
&lt;li data-start=&quot;1188&quot; data-end=&quot;1253&quot;&gt;인공지능 기술의 발달로 머지않아 상용화되면 운전사들의 일자리가 줄어들 수 있는 것은?&lt;br /&gt;답: 자율주행 자동차&lt;/li&gt;
&lt;li data-start=&quot;1255&quot; data-end=&quot;1289&quot;&gt;다음 중 인공지능 주제와 관련이 비교적 적은 것은?&lt;/li&gt;
&lt;/ol&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;1290&quot; data-end=&quot;1391&quot;&gt;
&lt;li data-start=&quot;1290&quot; data-end=&quot;1311&quot;&gt;인간의 지능을 모델링하는 기술&lt;/li&gt;
&lt;li data-start=&quot;1312&quot; data-end=&quot;1331&quot;&gt;인간 두뇌에 도전하는 기술&lt;/li&gt;
&lt;li data-start=&quot;1332&quot; data-end=&quot;1358&quot;&gt;지능적인 원리를 컴퓨터에 적용하는 기술&lt;/li&gt;
&lt;li data-start=&quot;1359&quot; data-end=&quot;1391&quot;&gt;현재 대부분의 문제 해결이 가능한 기술&lt;br /&gt;답: 4번&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;19. 다음의 컴퓨터 장치 중 인간 두뇌와 관련이 가장 적은 기능은?&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;1434&quot; data-end=&quot;1483&quot;&gt;
&lt;li data-start=&quot;1434&quot; data-end=&quot;1444&quot;&gt;연산 기능&lt;/li&gt;
&lt;li data-start=&quot;1445&quot; data-end=&quot;1455&quot;&gt;출력 기능&lt;/li&gt;
&lt;li data-start=&quot;1456&quot; data-end=&quot;1466&quot;&gt;제어 기능&lt;/li&gt;
&lt;li data-start=&quot;1467&quot; data-end=&quot;1483&quot;&gt;기억 기능&lt;br /&gt;답: 2번&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;20. 인공지능이 도전하여 아직은 가능성이 별로 크지 않은 분야는?&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;1525&quot; data-end=&quot;1565&quot;&gt;
&lt;li data-start=&quot;1525&quot; data-end=&quot;1531&quot;&gt;시&lt;/li&gt;
&lt;li data-start=&quot;1532&quot; data-end=&quot;1539&quot;&gt;소설&lt;/li&gt;
&lt;li data-start=&quot;1540&quot; data-end=&quot;1551&quot;&gt;창의적 작품&lt;/li&gt;
&lt;li data-start=&quot;1552&quot; data-end=&quot;1565&quot;&gt;미술&lt;br /&gt;답: 2번&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-start=&quot;1567&quot; data-end=&quot;1570&quot;&gt;주관식&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;1572&quot; data-end=&quot;1994&quot;&gt;
&lt;li data-start=&quot;1572&quot; data-end=&quot;1644&quot;&gt;인공지능이란 무엇인지 설명하시오.&lt;br /&gt;답: 인간의 학습, 추론, 판단, 인식 등의 지능 활동을 컴퓨터로 구현하는 기술이다.&lt;/li&gt;
&lt;li data-start=&quot;1646&quot; data-end=&quot;1709&quot;&gt;인공지능이 인간을 완전히 따라오기 어려운 능력은 무엇인가?&lt;br /&gt;답: 감정, 의식, 창의성, 윤리적 판단 등&lt;/li&gt;
&lt;li data-start=&quot;1711&quot; data-end=&quot;1764&quot;&gt;1956년에 인공지능 연구가 시작된 계기는 무엇인가?&lt;br /&gt;답: 다트머스 대학 하계 워크숍&lt;/li&gt;
&lt;li data-start=&quot;1766&quot; data-end=&quot;1838&quot;&gt;인공지능에서 사용되는 하드웨어와 소프트웨어의 예를 쓰시오.&lt;br /&gt;답: 하드웨어: GPU, TPU, 클라우드 서버 / 소프트웨어: TensorFlow, Pytorch, Spark&lt;/li&gt;
&lt;li data-start=&quot;1840&quot; data-end=&quot;1912&quot;&gt;인공지능에서 학습이 필요한 이유는 무엇인가?&lt;br /&gt;답: 데이터를 기반으로 상황을 인식하고 판단 능력을 향상시키기 위해서이다.&lt;/li&gt;
&lt;li data-start=&quot;1914&quot; data-end=&quot;1994&quot;&gt;인간 두뇌 영역에 도전하는 인공지능 분야를 5가지 이상 쓰시오.&lt;br /&gt;답: 작곡, 번역, 그림 제작, 시 소설 창작, 음성인식, 기사 작성&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot; data-start=&quot;1996&quot; data-end=&quot;1998&quot;&gt;2장&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;2000&quot; data-end=&quot;2998&quot;&gt;
&lt;li data-start=&quot;2000&quot; data-end=&quot;2036&quot;&gt;코타나는 마이크로소프트의 인공지능 도우미이다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;2038&quot; data-end=&quot;2110&quot;&gt;인공지능 관련 특허에서 한국 기업은 아직 세계 10위권에도 들지 못하고 있다.&lt;br /&gt;답: X, 한국은 세계 상위권 수준이다.&lt;/li&gt;
&lt;li data-start=&quot;2112&quot; data-end=&quot;2189&quot;&gt;인공지능 기술의 핵심인 신경망과 딥러닝 알고리즘은 소프트웨어에 속하지 않는다.&lt;br /&gt;답: X, 신경망과 딥러닝은 소프트웨어 기술이다.&lt;/li&gt;
&lt;li data-start=&quot;2191&quot; data-end=&quot;2240&quot;&gt;중국이나 일본 등에서는 국가 차원에서 인공지능 교육을 강화하고 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;2242&quot; data-end=&quot;2295&quot;&gt;얼굴인식을 바탕으로 중국의 대형마트 등에서는 얼굴인식 결제를 사용하고 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;2297&quot; data-end=&quot;2351&quot;&gt;인공지능은 로봇공학과 결합하여 인간과 교감하는 휴머노이드 개발이 진행 중이다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;2353&quot; data-end=&quot;2407&quot;&gt;인공지능 컴퓨터인 왓슨은 암 발견과 치료를 수행하는 시스템으로 발전하고 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;2409&quot; data-end=&quot;2463&quot;&gt;가사도우미 로봇인 소피아는 60여 개 감정을 표현하며 사람과 대화할 수 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;2465&quot; data-end=&quot;2525&quot;&gt;인공지능은 인문학과 법학과는 관계가 없다.&lt;br /&gt;답: X, 인공지능은 인문학&amp;middot;법학 등과 융합되고 있다.&lt;/li&gt;
&lt;li data-start=&quot;2527&quot; data-end=&quot;2578&quot;&gt;미국에서는 인공지능 변호사가 법조인의 업무를 보조하는 역할은 합법적이다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;2580&quot; data-end=&quot;2634&quot;&gt;기술의 원천인 프로그램의 소스 코드를 누구에게나 무료로 제공하는 것은?&lt;br /&gt;답: 오픈 소스&lt;/li&gt;
&lt;li data-start=&quot;2636&quot; data-end=&quot;2665&quot;&gt;삼성전자의 인공지능 도우미는?&lt;br /&gt;답: 빅스비&lt;/li&gt;
&lt;li data-start=&quot;2721&quot; data-end=&quot;2787&quot;&gt;구글은 코타나라는 인공지능 소프트웨어를 개방하였다.&lt;br /&gt;답: X, 코타나는 마이크로소프트의 인공지능 도우미이다.&lt;/li&gt;
&lt;li data-start=&quot;2789&quot; data-end=&quot;2845&quot;&gt;인공지능 스피커의 ( ) 기능을 통해 집안 기기를 목소리로 제어할 수 있다.&lt;br /&gt;답: 음성인식&lt;/li&gt;
&lt;li data-start=&quot;2847&quot; data-end=&quot;2901&quot;&gt;&amp;lsquo;칵테일 바텐더 로봇&amp;rsquo;과 &amp;lsquo;바리스타 봇&amp;rsquo;은 인공지능 ( ) 로봇에 속한다.&lt;br /&gt;답: 서비스&lt;/li&gt;
&lt;li data-start=&quot;2964&quot; data-end=&quot;2998&quot;&gt;다음 중 인공지능 활용과 비교적 관련이 적은 것은?&lt;/li&gt;
&lt;/ol&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;2999&quot; data-end=&quot;3048&quot;&gt;
&lt;li data-start=&quot;2999&quot; data-end=&quot;3009&quot;&gt;인물 검색&lt;/li&gt;
&lt;li data-start=&quot;3010&quot; data-end=&quot;3020&quot;&gt;법률 자문&lt;/li&gt;
&lt;li data-start=&quot;3021&quot; data-end=&quot;3031&quot;&gt;간호 업무&lt;/li&gt;
&lt;li data-start=&quot;3032&quot; data-end=&quot;3048&quot;&gt;주식 분석&lt;br /&gt;답: 1번&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;17. 다음 중 우리나라가 인공지능 강국이 되는 방법과 관련이 적은 것은?&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;3094&quot; data-end=&quot;3166&quot;&gt;
&lt;li data-start=&quot;3094&quot; data-end=&quot;3111&quot;&gt;인공지능 제품의 상용화&lt;/li&gt;
&lt;li data-start=&quot;3112&quot; data-end=&quot;3128&quot;&gt;인공지능 연구와 개발&lt;/li&gt;
&lt;li data-start=&quot;3129&quot; data-end=&quot;3144&quot;&gt;인공지능 용어 검색&lt;/li&gt;
&lt;li data-start=&quot;3145&quot; data-end=&quot;3166&quot;&gt;인공지능 교육 강화&lt;br /&gt;답: 3번&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;18. 추천 시스템의 대상이 아닌 것은?&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;3193&quot; data-end=&quot;3251&quot;&gt;
&lt;li data-start=&quot;3193&quot; data-end=&quot;3207&quot;&gt;자주 검색한 상품&lt;/li&gt;
&lt;li data-start=&quot;3208&quot; data-end=&quot;3216&quot;&gt;알렉사&lt;/li&gt;
&lt;li data-start=&quot;3217&quot; data-end=&quot;3233&quot;&gt;감상한 유튜브 동영상&lt;/li&gt;
&lt;li data-start=&quot;3234&quot; data-end=&quot;3251&quot;&gt;검색한 도서&lt;br /&gt;답: 2번&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-start=&quot;3253&quot; data-end=&quot;3256&quot;&gt;주관식&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;3258&quot; data-end=&quot;3637&quot;&gt;
&lt;li data-start=&quot;3258&quot; data-end=&quot;3327&quot;&gt;인공지능 시장의 주요 응용 분야를 3가지 이상 쓰시오.&lt;br /&gt;답: 광고 추천, 음성인식, 번역, 얼굴인식, 자율주행 등&lt;/li&gt;
&lt;li data-start=&quot;3329&quot; data-end=&quot;3381&quot;&gt;스마트 디스플레이의 예를 3가지 쓰시오.&lt;br /&gt;답: 구글 네스트 허브, skt의 누구 네모, kt의 기가지니&lt;/li&gt;
&lt;li data-start=&quot;3383&quot; data-end=&quot;3453&quot;&gt;우리나라가 인공지능 강국이 되기 위해 필요한 노력은 무엇인가?&lt;br /&gt;답: 연구개발 투자, 인재 양성, 인공지능 교육 강화&lt;/li&gt;
&lt;li data-start=&quot;3455&quot; data-end=&quot;3509&quot;&gt;주요 인공지능 도우미를 쓰시오.&lt;br /&gt;답: 시리, 코타나, 빅스비, 알렉사, 구글 어시스턴트&lt;/li&gt;
&lt;li data-start=&quot;3511&quot; data-end=&quot;3572&quot;&gt;인공지능 활용 분야를 5가지 이상 쓰시오.&lt;br /&gt;답: 의료, 법률, 농업, 로봇공학, 비즈니스, 교육 등&lt;/li&gt;
&lt;li data-start=&quot;3574&quot; data-end=&quot;3637&quot;&gt;인공지능 시대의 새로운 직업을 쓰시오.&lt;br /&gt;답: 데이터 사이언티스트, 데이터 엔지니어, 인공지능 개발자 등&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot; data-start=&quot;3639&quot; data-end=&quot;3641&quot;&gt;3장&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;3643&quot; data-end=&quot;4796&quot;&gt;
&lt;li data-start=&quot;3643&quot; data-end=&quot;3710&quot;&gt;연결주의 인공지능 계열에 속하는 것은 규칙 기반 인공지능이다.&lt;br /&gt;답: X, 연결주의는 신경망 기반 인공지능이다.&lt;/li&gt;
&lt;li data-start=&quot;3712&quot; data-end=&quot;3761&quot;&gt;최초의 체스 프로그램은 인공지능이라는 단어가 나오기 전에 만들어졌다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;3763&quot; data-end=&quot;3817&quot;&gt;마이신은 혈액 감염을 진단하고 처방하기 위해 만들어진 의학 전문가 시스템이다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;3819&quot; data-end=&quot;3897&quot;&gt;데이터를 전문적으로 다루고 분석하는 데이터 과학자의 수요는 점차 감소하고 있다.&lt;br /&gt;답: X, 데이터 과학자의 수요는 증가하고 있다.&lt;/li&gt;
&lt;li data-start=&quot;3899&quot; data-end=&quot;3944&quot;&gt;인류 최초의 전자식 컴퓨터인 에니악은 1946년에 발표되었다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;3946&quot; data-end=&quot;3990&quot;&gt;왓슨은 질문을 이해할 수 있으나 음성으로 답변할 수는 없다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;4065&quot; data-end=&quot;4117&quot;&gt;인공지능은 크게 규칙 기반 인공지능과 신경망 기반 인공지능으로 나누어진다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;4119&quot; data-end=&quot;4191&quot;&gt;규칙 기반 인공지능의 장점은 학습을 잘할 수 있다는 점이다.&lt;br /&gt;답: X, 규칙 기반 인공지능은 규칙 추론에 강점이 있다.&lt;/li&gt;
&lt;li data-start=&quot;4193&quot; data-end=&quot;4238&quot;&gt;신경망은 주로 패턴 인식에 활용되며 학습 시간이 오래 걸린다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;4240&quot; data-end=&quot;4306&quot;&gt;인공지능 슈퍼컴퓨터인 딥 블루가 바둑 세계 챔피언에 등극하였다.&lt;br /&gt;답: X, 딥 블루는 체스 전용 시스템이다.&lt;/li&gt;
&lt;li data-start=&quot;4308&quot; data-end=&quot;4361&quot;&gt;문제 해결 방법 중 하나는 블록 다이어그램을 그려 단계별로 분석하는 것이다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;4363&quot; data-end=&quot;4417&quot;&gt;엄청난 양의 데이터를 수집하여 머신러닝과 통계 기법으로 분석하는 기술은?&lt;br /&gt;답: 빅데이터&lt;/li&gt;
&lt;li data-start=&quot;4419&quot; data-end=&quot;4471&quot;&gt;반복적인 작업들을 자동화시켜 사용자를 돕는 컴퓨터 프로그램은?&lt;br /&gt;답: 지능형 에이전트&lt;/li&gt;
&lt;li data-start=&quot;4473&quot; data-end=&quot;4517&quot;&gt;인간 전문가를 대신할 수 있는 인공지능 시스템은?&lt;br /&gt;답: 전문가 시스템&lt;/li&gt;
&lt;li data-start=&quot;4567&quot; data-end=&quot;4617&quot;&gt;수많은 프로기사의 기보를 분석하고 딥러닝을 활용한 바둑 인공지능은?&lt;br /&gt;답: 알파고&lt;/li&gt;
&lt;li data-start=&quot;4619&quot; data-end=&quot;4668&quot;&gt;말하는 사람과 관계없이 누구에게나 작동하는 음성인식은?&lt;br /&gt;답: 화자독립 음성인식&lt;/li&gt;
&lt;li data-start=&quot;4720&quot; data-end=&quot;4762&quot;&gt;컴퓨터에서 수행하는 절차를 프로그램으로 작성하는 일은?&lt;br /&gt;답: 코딩&lt;/li&gt;
&lt;li data-start=&quot;4764&quot; data-end=&quot;4796&quot;&gt;컴퓨터를 통해 서로 다른 언어를 번역하는 것은?&lt;/li&gt;
&lt;/ol&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;4797&quot; data-end=&quot;4843&quot;&gt;
&lt;li data-start=&quot;4797&quot; data-end=&quot;4806&quot;&gt;기계번역&lt;/li&gt;
&lt;li data-start=&quot;4807&quot; data-end=&quot;4816&quot;&gt;자동통역&lt;/li&gt;
&lt;li data-start=&quot;4817&quot; data-end=&quot;4826&quot;&gt;언어번역&lt;/li&gt;
&lt;li data-start=&quot;4827&quot; data-end=&quot;4843&quot;&gt;사이버번역&lt;br /&gt;답: 1번&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;19. 초기 신경망 연구와 관련된 주요 분야와 다소 거리가 있는 것은?&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;4887&quot; data-end=&quot;4933&quot;&gt;
&lt;li data-start=&quot;4887&quot; data-end=&quot;4896&quot;&gt;음성인식&lt;/li&gt;
&lt;li data-start=&quot;4897&quot; data-end=&quot;4907&quot;&gt;동영상인식&lt;/li&gt;
&lt;li data-start=&quot;4908&quot; data-end=&quot;4917&quot;&gt;숫자인식&lt;/li&gt;
&lt;li data-start=&quot;4918&quot; data-end=&quot;4933&quot;&gt;문자인식&lt;br /&gt;답: 2번&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;20. 본격적인 인공지능 시대가 오더라도 일자리가 비교적 줄어들지 않을 직업은?&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;4982&quot; data-end=&quot;5035&quot;&gt;
&lt;li data-start=&quot;4982&quot; data-end=&quot;4991&quot;&gt;택시기사&lt;/li&gt;
&lt;li data-start=&quot;4992&quot; data-end=&quot;5004&quot;&gt;지게차 업무자&lt;/li&gt;
&lt;li data-start=&quot;5005&quot; data-end=&quot;5017&quot;&gt;데이터 과학자&lt;/li&gt;
&lt;li data-start=&quot;5018&quot; data-end=&quot;5035&quot;&gt;교통 감시원&lt;br /&gt;답: 3번&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;21. 코딩의 목적과 거리가 먼 것은?&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;5061&quot; data-end=&quot;5138&quot;&gt;
&lt;li data-start=&quot;5061&quot; data-end=&quot;5079&quot;&gt;코딩을 통한 계산력 향상&lt;/li&gt;
&lt;li data-start=&quot;5080&quot; data-end=&quot;5099&quot;&gt;인공지능 시대의 기초 요소&lt;/li&gt;
&lt;li data-start=&quot;5100&quot; data-end=&quot;5115&quot;&gt;논리적 사고력 향상&lt;/li&gt;
&lt;li data-start=&quot;5116&quot; data-end=&quot;5138&quot;&gt;창의적 아이디어 발상&lt;br /&gt;답: 1번&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-start=&quot;5140&quot; data-end=&quot;5143&quot;&gt;주관식&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;5145&quot; data-end=&quot;5553&quot; data-is-last-node=&quot;&quot; data-is-only-node=&quot;&quot;&gt;
&lt;li data-start=&quot;5145&quot; data-end=&quot;5213&quot;&gt;초기 인공지능 연구 분야를 3가지 이상 쓰시오.&lt;br /&gt;답: 자연어 처리, 문제 해결, 게임, 정리 증명, 음성인식 등&lt;/li&gt;
&lt;li data-start=&quot;5215&quot; data-end=&quot;5273&quot;&gt;신경망 연구와 관련된 주요 인식 분야를 쓰시오.&lt;br /&gt;답: 문자 인식, 음성 인식, 영상&amp;middot;패턴 인식&lt;/li&gt;
&lt;li data-start=&quot;5275&quot; data-end=&quot;5326&quot;&gt;튜링의 업적을 쓰시오.&lt;br /&gt;답: 튜링 머신 제안, 암호 해독 기여, 튜링 테스트 제안&lt;/li&gt;
&lt;li data-start=&quot;5328&quot; data-end=&quot;5385&quot;&gt;대표적인 인공지능 시스템 5가지를 쓰시오.&lt;br /&gt;답: 퍼셉트론, 마이신, 딥 블루, 왓슨, 알파고, 엘리자&lt;/li&gt;
&lt;li data-start=&quot;5387&quot; data-end=&quot;5467&quot;&gt;튜링 테스트를 통과했다고 알려진 프로그램과 한계를 쓰시오.&lt;br /&gt;답: 유진 구스트만, 실제 지능보다는 사람을 혼동시키는 대화전략에 의존한 한계가 있다.&lt;/li&gt;
&lt;li data-start=&quot;5469&quot; data-end=&quot;5553&quot; data-is-last-node=&quot;&quot;&gt;소프트웨어와 다른 산업의 융합 사례를 쓰시오.&lt;br /&gt;답: 바이오인포매틱스, 자율주행 자동차, 구조설계 소프트웨어, 컴퓨터 악보, 가상현실 영화 등&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;color: #333333; text-align: start;&quot;&gt;
&lt;div data-message-author-role=&quot;assistant&quot; data-message-id=&quot;47f1ff03-162d-4419-9583-b411efc6ffe3&quot; data-message-model-slug=&quot;gpt-5-5-thinking&quot;&gt;
&lt;h2 style=&quot;color: #000000;&quot; data-ke-size=&quot;size26&quot; data-start=&quot;0&quot; data-end=&quot;2&quot;&gt;4장&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;4&quot; data-end=&quot;1295&quot;&gt;
&lt;li data-start=&quot;4&quot; data-end=&quot;56&quot;&gt;현재까지 인공지능에서 대부분의 연구 성과는 약한 인공지능 수준에 해당한다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;58&quot; data-end=&quot;147&quot;&gt;인공지능과 관련된 이론과 기술 수준은 현재 자아의식까지 가진 인공지능도 가능하다.&lt;br /&gt;답: X, 현재 자아의식과 감정을 가진 인공지능은 구현되지 않았다.&lt;/li&gt;
&lt;li data-start=&quot;149&quot; data-end=&quot;230&quot;&gt;강한 인공지능은 특정 분야 내에서 인간의 지능을 흉내 내는 지능적인 활동이다.&lt;br /&gt;답: X, 특정 분야에 한정된 지능은 약한 인공지능이다.&lt;/li&gt;
&lt;li data-start=&quot;232&quot; data-end=&quot;313&quot;&gt;약한 인공지능은 학습을 통해 지능적이며 자아의식과 감정도 가질 수 있다.&lt;br /&gt;답: X, 약한 인공지능은 자아의식이나 감정을 가지지 않는다.&lt;/li&gt;
&lt;li data-start=&quot;315&quot; data-end=&quot;373&quot;&gt;좁은 인공지능은 페이스북의 얼굴인식, 구글의 자율자동차, 애플의 시리 등에 응용된다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;375&quot; data-end=&quot;429&quot;&gt;2016년 이세돌 9단과 알파고와의 대국은 인공지능에 관한 관심을 급증시켰다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;431&quot; data-end=&quot;471&quot;&gt;알파고는 특정 영역에 국한된 약한 인공지능에 속한다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;473&quot; data-end=&quot;572&quot;&gt;현재 수준의 인공지능으로서는 몇 개의 그림을 보고 자연스러운 스토리텔링이 가능하다.&lt;br /&gt;답: X, 그림 전체의 맥락을 이해해 자연스러운 이야기를 만드는 것은 아직 어렵다.&lt;/li&gt;
&lt;li data-start=&quot;574&quot; data-end=&quot;637&quot;&gt;특이점 실현 가능성에 대한 비판에는 로봇이 인간을 흉내 내는 현상에 대한 회의적 의견이 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;639&quot; data-end=&quot;725&quot;&gt;슈퍼 인공지능도 인간과 같은 수준으로 창의성을 구현하기는 어렵지 않을 것이다.&lt;br /&gt;답: X, 슈퍼 인공지능의 창의성 구현 가능성은 아직 불확실하다.&lt;/li&gt;
&lt;li data-start=&quot;727&quot; data-end=&quot;785&quot;&gt;인공지능이 인간 능력을 뛰어넘어 새로운 문명을 만들어내는 미래의 시점은 무엇인가?&lt;br /&gt;답: 특이점&lt;/li&gt;
&lt;li data-start=&quot;855&quot; data-end=&quot;917&quot;&gt;미래학자들은 2045년경 인공지능의 급격한 발전으로 무엇이 일어날 것이라 예견하는가?&lt;br /&gt;답: 지능 폭발&lt;/li&gt;
&lt;li data-start=&quot;919&quot; data-end=&quot;974&quot;&gt;인공지능은 좁은 인공지능, ( ) 인공지능, 슈퍼 인공지능으로 나눌 수 있다.&lt;br /&gt;답: 일반&lt;/li&gt;
&lt;li data-start=&quot;976&quot; data-end=&quot;1029&quot;&gt;인공지능 바둑 프로그램인 무엇이 일반 인공지능 기술로 발전하고 있는가?&lt;br /&gt;답: 알파고&lt;/li&gt;
&lt;li data-start=&quot;1094&quot; data-end=&quot;1132&quot;&gt;특이점 가설의 대표적인 예는 무엇의 폭발인가?&lt;br /&gt;답: 지능&lt;/li&gt;
&lt;li data-start=&quot;1185&quot; data-end=&quot;1235&quot;&gt;레이 커즈와일이 2005년에 출간한 책의 제목은 무엇인가?&lt;br /&gt;답: 특이점이 온다&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot; data-start=&quot;1297&quot; data-end=&quot;1300&quot;&gt;주관식&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;1302&quot; data-end=&quot;1928&quot;&gt;
&lt;li data-start=&quot;1302&quot; data-end=&quot;1406&quot;&gt;강한 인공지능의 특징을 3가지 정도 쓰시오.&lt;br /&gt;답: 인간처럼 다양한 문제를 해결할 수 있는 일반 지능을 가지며, 스스로 사고&amp;middot;학습할 수 있고, 자아의식과 감정을 가질 수 있다고 여겨지는 인공지능이다.&lt;/li&gt;
&lt;li data-start=&quot;1408&quot; data-end=&quot;1511&quot;&gt;슈퍼 인공지능이 현재로서는 SF 영화 속에서만 존재하는 이유는 무엇인가?&lt;br /&gt;답: 인간의 지능과 창의성을 훨씬 능가하는 수준의 인공지능을 구현할 기술이 아직 부족하기 때문이다.&lt;/li&gt;
&lt;li data-start=&quot;1513&quot; data-end=&quot;1615&quot;&gt;4개 장면 스토리텔링이 인공지능에게 어려운 이유는 무엇인가?&lt;br /&gt;답: 각 그림의 상황을 인식하는 것뿐 아니라 전체 맥락을 이해하고 자연스러운 줄거리로 연결해야 하기 때문이다.&lt;/li&gt;
&lt;li data-start=&quot;1617&quot; data-end=&quot;1707&quot;&gt;많은 과학자와 명사들이 아실로마 원칙에 서명한 이유는 무엇인가?&lt;br /&gt;답: 인공지능 연구가 인류에게 유익하고 안전하며 윤리적으로 이루어져야 하기 때문이다.&lt;/li&gt;
&lt;li data-start=&quot;1709&quot; data-end=&quot;1815&quot;&gt;아실로마 원칙의 주요 내용을 3가지 쓰시오.&lt;br /&gt;답: 인공지능은 인류에게 유익해야 하며, 초지능은 인류 전체의 이익을 위해 개발되어야 하고, 인공지능 기반 무기 경쟁은 피해야 한다.&lt;/li&gt;
&lt;li data-start=&quot;1817&quot; data-end=&quot;1928&quot;&gt;약한 인공지능의 특징을 쓰시오.&lt;br /&gt;답: 특정 분야에서만 활용 가능하며, 인간의 지능을 흉내 내는 수준이고, 자아의식이나 감정은 없지만 특정 영역에서는 인간보다 뛰어난 성능을 보일 수 있다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 style=&quot;color: #000000;&quot; data-ke-size=&quot;size26&quot; data-start=&quot;1930&quot; data-end=&quot;1932&quot;&gt;5장&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;1934&quot; data-end=&quot;3172&quot;&gt;
&lt;li data-start=&quot;1934&quot; data-end=&quot;2013&quot;&gt;2차 산업혁명이란 컴퓨터를 통한 생산과 유통 시스템의 자동화를 말한다.&lt;br /&gt;답: X, 컴퓨터 기반 자동화는 3차 산업혁명에 해당한다.&lt;/li&gt;
&lt;li data-start=&quot;2015&quot; data-end=&quot;2103&quot;&gt;4차 산업혁명이라는 용어는 2019년 세계경제포럼에서 처음 언급되었다.&lt;br /&gt;답: X, 교재 기준으로 2016년 세계경제포럼에서 본격적으로 언급되었다.&lt;/li&gt;
&lt;li data-start=&quot;2105&quot; data-end=&quot;2154&quot;&gt;4차 산업혁명의 핵심은 연결과 지능을 중심으로 한 초연결 사회이다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;2156&quot; data-end=&quot;2230&quot;&gt;4차 산업혁명 관련 산업에서 인공지능의 역할은 별로 중요하지 않다.&lt;br /&gt;답: X, 인공지능은 4차 산업혁명의 핵심 기술이다.&lt;/li&gt;
&lt;li data-start=&quot;2232&quot; data-end=&quot;2313&quot;&gt;지능형 로봇은 현재 기술로는 아직 교향악단을 지휘할 수 있는 수준이 아니다.&lt;br /&gt;답: X, 지능형 로봇은 교향악단을 지휘한 사례가 있다.&lt;/li&gt;
&lt;li data-start=&quot;2315&quot; data-end=&quot;2366&quot;&gt;국내에서 개발한 에트로는 문자를 인식해 책을 소리 내어 읽을 수 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;2368&quot; data-end=&quot;2459&quot;&gt;지능형 서비스 로봇은 현재로서는 식당에서 음식 주문과 서빙이 가능하지 않다.&lt;br /&gt;답: X, 지능형 서비스 로봇은 음식 주문과 서빙 분야에도 활용되고 있다.&lt;/li&gt;
&lt;li data-start=&quot;2461&quot; data-end=&quot;2515&quot;&gt;로봇 강국인 일본에서는 두 발로 걷는 휴머노이드형 로봇기술이 발달되어 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;2517&quot; data-end=&quot;2596&quot;&gt;자율자동차는 2025년 이전 상용화가 시작되고, 2035년에는 도로 주행 차량 4대 중 1대가 될 것이라는 예측이 많다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;2598&quot; data-end=&quot;2689&quot;&gt;구글은 자율자동차 주행 테스트를 하고 있으나, 우리나라에서는 거리 시험주행을 한 적이 없다.&lt;br /&gt;답: X, 우리나라에서도 자율자동차 시험주행이 이루어졌다.&lt;/li&gt;
&lt;li data-start=&quot;2691&quot; data-end=&quot;2747&quot;&gt;사람을 인식하고 문자도 읽으며 사람의 행동에 반응하는 로봇은 무엇인가?&lt;br /&gt;답: 지능형 로봇&lt;/li&gt;
&lt;li data-start=&quot;2805&quot; data-end=&quot;2850&quot;&gt;인공지능적인 능력을 갖춘 지능적인 로봇은 무엇인가?&lt;br /&gt;답: 지능형 로봇&lt;/li&gt;
&lt;li data-start=&quot;2852&quot; data-end=&quot;2911&quot;&gt;사물들을 인터넷으로 연결하여 정보를 상호 소통하는 기술 및 서비스는 무엇인가?&lt;br /&gt;답: 사물인터넷&lt;/li&gt;
&lt;li data-start=&quot;2913&quot; data-end=&quot;2970&quot;&gt;운전자와 관계없이 차량을 스스로 제어해 목적지까지 주행하는 것은 무엇인가?&lt;br /&gt;답: 자율자동차&lt;/li&gt;
&lt;li data-start=&quot;2972&quot; data-end=&quot;3011&quot;&gt;전파로 조종할 수 있는 무인 항공기는 무엇인가?&lt;br /&gt;답: 드론&lt;/li&gt;
&lt;li data-start=&quot;3077&quot; data-end=&quot;3136&quot;&gt;극미세 물질 탐구를 통해 새로운 물질을 제조할 수 있게 하는 기술은 무엇인가?&lt;br /&gt;답: 나노 기술&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;17. 다음 중 현재 자율자동차에 적용되는 시스템 기술로 보기 어려운 것은?&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;3305&quot; data-end=&quot;3428&quot;&gt;
&lt;li data-start=&quot;3305&quot; data-end=&quot;3328&quot;&gt;스스로 속도와 거리를 유지해준다.&lt;/li&gt;
&lt;li data-start=&quot;3329&quot; data-end=&quot;3360&quot;&gt;목적지를 정해주지 않아도 스스로 알아서 달린다.&lt;/li&gt;
&lt;li data-start=&quot;3361&quot; data-end=&quot;3390&quot;&gt;주차보조 시스템은 후진 일렬주차를 도와준다.&lt;/li&gt;
&lt;li data-start=&quot;3391&quot; data-end=&quot;3428&quot;&gt;차선 이탈 상황을 감지하여 운전자에게 알려준다.&lt;br /&gt;답: 2번&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot; data-start=&quot;3430&quot; data-end=&quot;3433&quot;&gt;주관식&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;3435&quot; data-end=&quot;3977&quot;&gt;
&lt;li data-start=&quot;3435&quot; data-end=&quot;3523&quot;&gt;4차 산업혁명의 주요 영역들을 쓰시오.&lt;br /&gt;답: 사물인터넷, 빅데이터, 인공지능, 자율자동차, 드론, 로봇공학, 3D 프린터, 생명공학, 나노기술 등&lt;/li&gt;
&lt;li data-start=&quot;3525&quot; data-end=&quot;3675&quot;&gt;각 산업혁명의 특징을 쓰시오.&lt;br /&gt;답: 1차 산업혁명은 증기기관 기반의 기계화 혁명, 2차 산업혁명은 전기 에너지 기반의 대량생산 혁명, 3차 산업혁명은 컴퓨터와 인터넷 기반의 정보화 혁명, 4차 산업혁명은 인공지능과 사물인터넷 기반의 초연결&amp;middot;초지능 혁명이다.&lt;/li&gt;
&lt;li data-start=&quot;3677&quot; data-end=&quot;3766&quot;&gt;광컴퓨터의 장점을 설명하시오.&lt;br /&gt;답: 처리 속도가 빠르고, 정보 집적도가 높으며, 영상 정보 처리가 쉽고, 2차원 또는 3차원 병렬 처리가 용이하다.&lt;/li&gt;
&lt;li data-start=&quot;3768&quot; data-end=&quot;3864&quot;&gt;우리나라에서 드론 택배가 어려운 이유를 설명하시오.&lt;br /&gt;답: 고층 아파트가 많아 착륙 지점 확보가 어렵고, 소음&amp;middot;안전&amp;middot;사생활 침해 문제가 발생할 수 있기 때문이다.&lt;/li&gt;
&lt;li data-start=&quot;3866&quot; data-end=&quot;3977&quot;&gt;4차 산업혁명을 통해 인간 생활이 편리해지는 예를 3가지 쓰시오.&lt;br /&gt;답: 사물인터넷을 통한 가전 제어, 자율자동차를 통한 이동 편의, 빅데이터와 인공지능을 활용한 맞춤형 서비스 등이 있다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 style=&quot;color: #000000;&quot; data-ke-size=&quot;size26&quot; data-start=&quot;3979&quot; data-end=&quot;3981&quot;&gt;6장&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;3983&quot; data-end=&quot;5048&quot;&gt;
&lt;li data-start=&quot;3983&quot; data-end=&quot;4024&quot;&gt;신경망 연산에서는 행렬의 곱셈이 기본적으로 사용된다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;4026&quot; data-end=&quot;4080&quot;&gt;미분은 기하학적 관점에서 보면 주어진 곡선의 접선을 구하는 문제와 동치이다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;4082&quot; data-end=&quot;4185&quot;&gt;우리가 일상생활에서 사용하는 자연어는 프로그래밍 언어와 달리 미리 정해진 규칙에 따라 엄밀하게 사용된다.&lt;br /&gt;답: X, 자연어는 프로그래밍 언어보다 모호하고 유연하게 사용된다.&lt;/li&gt;
&lt;li data-start=&quot;4187&quot; data-end=&quot;4259&quot;&gt;Prolog는 논리에 기반을 둔 인공지능용 프로그래밍 언어로, 지식을 논리로 표현하고 규칙에 따라 추론한다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;4261&quot; data-end=&quot;4340&quot;&gt;미분의 체인 규칙은 3개까지의 변수에 대해서만 연쇄적으로 작용된다.&lt;br /&gt;답: X, 체인 규칙은 3개 이상의 변수에도 적용될 수 있다.&lt;/li&gt;
&lt;li data-start=&quot;4342&quot; data-end=&quot;4424&quot;&gt;경사하강법은 오차의 제곱이 가장 많이 증가하는 방향으로 변화한다.&lt;br /&gt;답: X, 경사하강법은 오차가 가장 많이 감소하는 방향으로 이동한다.&lt;/li&gt;
&lt;li data-start=&quot;4426&quot; data-end=&quot;4476&quot;&gt;델타 규칙과 경사하강법은 신경망의 학습 규칙을 이해하는 데 필요하다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;4478&quot; data-end=&quot;4560&quot;&gt;벡터나 행렬과 같은 수학적 바탕이 없어도 인공지능 연구는 가능하다.&lt;br /&gt;답: X, 인공지능 연구에는 벡터&amp;middot;행렬 등 수학적 기초가 필요하다.&lt;/li&gt;
&lt;li data-start=&quot;4562&quot; data-end=&quot;4607&quot;&gt;벡터의 내적은 성분끼리 곱한 결과의 합이므로 스칼라 값이다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;4609&quot; data-end=&quot;4666&quot;&gt;행렬은 신경망에서 입력과 연결강도 사이의 곱의 합을 구할 때 중요한 역할을 한다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;4668&quot; data-end=&quot;4726&quot;&gt;삼각함수에서는 일반적인 각도 표현 대신 &amp;pi;나 2&amp;pi;를 사용하는 무엇을 사용하는가?&lt;br /&gt;답: 호도법&lt;/li&gt;
&lt;li data-start=&quot;4728&quot; data-end=&quot;4793&quot;&gt;1960년대 개발된 인공지능 언어 중 기본 자료형이 리스트와 트리 형태인 언어는 무엇인가?&lt;br /&gt;답: Lisp&lt;/li&gt;
&lt;li data-start=&quot;4795&quot; data-end=&quot;4853&quot;&gt;구글이 딥러닝을 위해 개발한 텐서플로는 주로 어떤 언어로 구현&amp;middot;사용되는가?&lt;br /&gt;답: Python&lt;/li&gt;
&lt;li data-start=&quot;4855&quot; data-end=&quot;4888&quot;&gt;통계에서 표준편차의 제곱은 무엇인가?&lt;br /&gt;답: 분산&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;15. 다음 중 인공지능과 관련이 상대적으로 적은 프로그래밍 언어는?&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;5148&quot; data-end=&quot;5197&quot;&gt;
&lt;li data-start=&quot;5148&quot; data-end=&quot;5159&quot;&gt;Python&lt;/li&gt;
&lt;li data-start=&quot;5160&quot; data-end=&quot;5169&quot;&gt;Ruby&lt;/li&gt;
&lt;li data-start=&quot;5170&quot; data-end=&quot;5179&quot;&gt;Lisp&lt;/li&gt;
&lt;li data-start=&quot;5180&quot; data-end=&quot;5197&quot;&gt;Prolog&lt;br /&gt;답: 2번&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;16. 다음 중 인공지능 관련 언어 중 가장 오래전부터 사용되던 것은?&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;5242&quot; data-end=&quot;5289&quot;&gt;
&lt;li data-start=&quot;5242&quot; data-end=&quot;5253&quot;&gt;Python&lt;/li&gt;
&lt;li data-start=&quot;5254&quot; data-end=&quot;5263&quot;&gt;텐서플로&lt;/li&gt;
&lt;li data-start=&quot;5264&quot; data-end=&quot;5273&quot;&gt;파이토치&lt;/li&gt;
&lt;li data-start=&quot;5274&quot; data-end=&quot;5289&quot;&gt;Lisp&lt;br /&gt;답: 4번&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;17. 다음 중 Python의 주요 특징이라고 볼 수 없는 것은?&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;5331&quot; data-end=&quot;5449&quot;&gt;
&lt;li data-start=&quot;5331&quot; data-end=&quot;5364&quot;&gt;인터프리터 언어로서 실행 결과를 즉석에서 확인 가능&lt;/li&gt;
&lt;li data-start=&quot;5365&quot; data-end=&quot;5396&quot;&gt;들여쓰기를 사용하여 블록을 구분하는 문법을 채용&lt;/li&gt;
&lt;li data-start=&quot;5397&quot; data-end=&quot;5427&quot;&gt;프리웨어가 아니므로 프로그램을 구입해야 한다.&lt;/li&gt;
&lt;li data-start=&quot;5428&quot; data-end=&quot;5449&quot;&gt;플랫폼 독립적이다.&lt;br /&gt;답: 3번&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot; data-start=&quot;5451&quot; data-end=&quot;5454&quot;&gt;주관식&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;5456&quot; data-end=&quot;5933&quot; data-is-last-node=&quot;&quot; data-is-only-node=&quot;&quot;&gt;
&lt;li data-start=&quot;5456&quot; data-end=&quot;5544&quot;&gt;인공지능 연구에 필요한 수학적 지식을 4가지 이상 쓰시오.&lt;br /&gt;답: 미분, 벡터, 행렬, 확률, 통계, 평균, 분산, 표준편차, 회귀분석 등이 있다.&lt;/li&gt;
&lt;li data-start=&quot;5546&quot; data-end=&quot;5710&quot;&gt;회귀직선을 간단히 설명하고 회귀 분석과의 관계를 말하시오.&lt;br /&gt;답: 회귀직선은 두 변수 x, y의 관계를 가장 잘 나타내는 직선&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;span&gt;y=ax+b&lt;/span&gt;&lt;/span&gt;이며, 실제 데이터와 직선 사이 오차의 제곱합이 최소가 되도록 구한다. 회귀 분석은 이러한 회귀직선을 이용해 데이터의 관계를 분석하고 값을 예측하는 방법이다.&lt;/li&gt;
&lt;li data-start=&quot;5712&quot; data-end=&quot;5820&quot;&gt;신경망 학습에서 행렬과 벡터 지식이 필요한 이유를 쓰시오.&lt;br /&gt;답: 신경망에서는 입력값과 연결강도의 곱과 합을 계산해야 하며, 이 과정이 벡터와 행렬 연산으로 표현되기 때문에 필요하다.&lt;/li&gt;
&lt;li data-start=&quot;5822&quot; data-end=&quot;5933&quot; data-is-last-node=&quot;&quot;&gt;인공지능 언어로 많이 쓰이는 Python의 주요 특징을 쓰시오.&lt;br /&gt;답: 문법이 간단하고, 인터프리터 언어이며, 플랫폼 독립적이고, 동적 타이핑을 지원하며, 들여쓰기로 코드 블록을 구분한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot; data-start=&quot;0&quot; data-end=&quot;2&quot;&gt;7장&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;4&quot; data-end=&quot;1144&quot;&gt;
&lt;li data-start=&quot;4&quot; data-end=&quot;49&quot;&gt;규칙기반 인공지능은 신경망과는 담당하는 역할이 다소 다르다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;51&quot; data-end=&quot;97&quot;&gt;규칙기반 인공지능에서는 논리를 바탕으로 규칙을 통해 추론한다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;99&quot; data-end=&quot;183&quot;&gt;논리의 중요한 목적에는 논리를 통한 입증이 옳은가를 포함하지 않는다.&lt;br /&gt;답: X, 논리는 추론과 입증이 타당한지를 판단하는 데 목적이 있다.&lt;/li&gt;
&lt;li data-start=&quot;185&quot; data-end=&quot;226&quot;&gt;논리는 일반적으로 명제 논리와 술어 논리로 구분된다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;228&quot; data-end=&quot;307&quot;&gt;논리에서 &amp;ldquo;3&amp;times;2=5라면, 런던은 미국의 수도다.&amp;rdquo;는 F가 된다.&lt;br /&gt;답: X, 조건 명제는 가정이 거짓이면 전체 명제가 참이 된다.&lt;/li&gt;
&lt;li data-start=&quot;309&quot; data-end=&quot;362&quot;&gt;연역 추론은 하나 이상의 전제로부터 다른 결론을 도출해내는 추론 방식이다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;364&quot; data-end=&quot;453&quot;&gt;역방향 추론은 출발 상태로부터 목표 상태를 향해 나가는 기법이다.&lt;br /&gt;답: X, 역방향 추론은 목표 상태에서 출발하여 조건을 거꾸로 추적하는 방법이다.&lt;/li&gt;
&lt;li data-start=&quot;455&quot; data-end=&quot;512&quot;&gt;게임에서 나의 가능성은 최대로, 상대방의 가능성은 최소로 하는 전략 탐색을 쓴다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;514&quot; data-end=&quot;600&quot;&gt;세탁기나 전자레인지 등에서의 단계별 사용 설명서는 알고리즘에 속하지 않는다.&lt;br /&gt;답: X, 단계별 절차를 명확히 제시한 것은 알고리즘에 해당한다.&lt;/li&gt;
&lt;li data-start=&quot;602&quot; data-end=&quot;650&quot;&gt;규칙이란 통상 &amp;ldquo;if ○○○ then &amp;times;&amp;times;&amp;times;&amp;rdquo; 형식으로 표현된다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;770&quot; data-end=&quot;822&quot;&gt;명확하게 참이나 거짓을 구분할 수 있는 문장이나 수학적 식은 무엇인가?&lt;br /&gt;답: 명제&lt;/li&gt;
&lt;li data-start=&quot;877&quot; data-end=&quot;935&quot;&gt;개별적 사실들의 분석으로부터 일반적인 결론을 끌어내는 추론 방법은 무엇인가?&lt;br /&gt;답: 귀납 추론&lt;/li&gt;
&lt;li data-start=&quot;937&quot; data-end=&quot;988&quot;&gt;목표를 찾기 위한 추론 방법에는 순방향 추론과 무엇이 있는가?&lt;br /&gt;답: 역방향 추론&lt;/li&gt;
&lt;li data-start=&quot;990&quot; data-end=&quot;1040&quot;&gt;문제 해결을 위한 여러 단계를 체계적으로 명시한 것은 무엇인가?&lt;br /&gt;답: 알고리즘&lt;/li&gt;
&lt;li data-start=&quot;1042&quot; data-end=&quot;1106&quot;&gt;인간 전문가의 전문 지식을 이용하여 문제를 해결하는 컴퓨터 자문 시스템은 무엇인가?&lt;br /&gt;답: 전문가 시스템&lt;/li&gt;
&lt;li data-start=&quot;1108&quot; data-end=&quot;1144&quot;&gt;다음의 탐색 중 경험적 지식을 사용하는 탐색 방법은?&lt;/li&gt;
&lt;/ol&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;1145&quot; data-end=&quot;1203&quot;&gt;
&lt;li data-start=&quot;1145&quot; data-end=&quot;1157&quot;&gt;휴리스틱 탐색&lt;/li&gt;
&lt;li data-start=&quot;1158&quot; data-end=&quot;1171&quot;&gt;깊이 우선 탐색&lt;/li&gt;
&lt;li data-start=&quot;1172&quot; data-end=&quot;1185&quot;&gt;너비 우선 탐색&lt;/li&gt;
&lt;li data-start=&quot;1186&quot; data-end=&quot;1203&quot;&gt;무정보 탐색&lt;br /&gt;답: 1번&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;17. 다음 중 규칙을 이용한 인공지능 기법에 적절한 문제가 아닌 것은?&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;1249&quot; data-end=&quot;1311&quot;&gt;
&lt;li data-start=&quot;1249&quot; data-end=&quot;1259&quot;&gt;물통 문제&lt;/li&gt;
&lt;li data-start=&quot;1260&quot; data-end=&quot;1274&quot;&gt;복잡한 곱셈 문제&lt;/li&gt;
&lt;li data-start=&quot;1275&quot; data-end=&quot;1288&quot;&gt;문자 암호 풀이&lt;/li&gt;
&lt;li data-start=&quot;1289&quot; data-end=&quot;1311&quot;&gt;8-puzzle 게임&lt;br /&gt;답: 2번&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-start=&quot;1313&quot; data-end=&quot;1316&quot;&gt;주관식&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;1318&quot; data-end=&quot;1805&quot;&gt;
&lt;li data-start=&quot;1318&quot; data-end=&quot;1404&quot;&gt;생활 속 알고리즘의 예를 쓰시오.&lt;br /&gt;답: 라면 조리법, 가전제품 사용 설명서, 지하철 환승 방법, 하루 일정 계획, 수학 연산 절차 등이 있다.&lt;/li&gt;
&lt;li data-start=&quot;1406&quot; data-end=&quot;1532&quot;&gt;연역 추론 중 삼단논법을 간단히 설명하시오.&lt;br /&gt;답: 두 개의 전제로부터 하나의 결론을 이끌어내는 추론 방법이다. 예를 들어 &amp;ldquo;사람은 모두 죽는다, 소크라테스는 사람이다, 따라서 소크라테스는 죽는다&amp;rdquo;와 같은 방식이다.&lt;/li&gt;
&lt;li data-start=&quot;1534&quot; data-end=&quot;1607&quot;&gt;휴리스틱을 간단히 설명하시오.&lt;br /&gt;답: 엄밀한 분석보다 경험과 직관을 바탕으로 빠르게 문제를 해결하거나 판단하는 방법이다.&lt;/li&gt;
&lt;li data-start=&quot;1609&quot; data-end=&quot;1715&quot;&gt;인공지능에서 문제 해결을 위한 주요 단계를 쓰시오.&lt;br /&gt;답: 문제를 명확히 정의하고, 문제를 분석하며, 제약 조건과 규칙을 검토하고, 적절한 해결 기법을 선택한 뒤 결과를 검토한다.&lt;/li&gt;
&lt;li data-start=&quot;1717&quot; data-end=&quot;1805&quot;&gt;자동차 전문가 시스템이 할 수 있는 역할을 말하시오.&lt;br /&gt;답: 자동차 고장 원인 진단, 수리 방법 제안, 전문가 지식 제공 등의 역할을 할 수 있다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot; data-start=&quot;1807&quot; data-end=&quot;1809&quot;&gt;8장&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;1811&quot; data-end=&quot;2941&quot;&gt;
&lt;li data-start=&quot;1811&quot; data-end=&quot;1862&quot;&gt;머신러닝은 인간의 학습 능력과 같은 기능을 실현하려는 기법과 분야이다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;1864&quot; data-end=&quot;1917&quot;&gt;머신러닝은 컴퓨터 프로그램이 데이터로부터 학습하는 과정이라고 할 수 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;1919&quot; data-end=&quot;2008&quot;&gt;지도 학습을 통해서는 자동차 번호판의 인식률을 높일 수 없다.&lt;br /&gt;답: X, 지도 학습은 레이블이 있는 데이터를 이용해 번호판 인식률을 높일 수 있다.&lt;/li&gt;
&lt;li data-start=&quot;2010&quot; data-end=&quot;2094&quot;&gt;비지도 학습에서는 데이터 학습을 위해 레이블이나 태그 표식을 붙인다.&lt;br /&gt;답: X, 비지도 학습은 레이블 없이 입력 데이터의 구조를 학습한다.&lt;/li&gt;
&lt;li data-start=&quot;2096&quot; data-end=&quot;2145&quot;&gt;회귀 분석 기술은 학습 데이터를 사용하여 하나의 출력값을 예측한다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;2147&quot; data-end=&quot;2216&quot;&gt;분류는 일정한 기준에 따라 구분하는 것이고, 회귀는 오차 제곱의 합을 최소화하는 직선을 긋는 작업이다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;2218&quot; data-end=&quot;2291&quot;&gt;머신러닝의 학습 방법 중 강화 학습은 포함되지 않는다.&lt;br /&gt;답: X, 머신러닝의 주요 학습 방법에는 강화 학습도 포함된다.&lt;/li&gt;
&lt;li data-start=&quot;2293&quot; data-end=&quot;2335&quot;&gt;머신러닝은 헬스케어 분야에서도 중요한 역할을 담당한다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;2337&quot; data-end=&quot;2381&quot;&gt;의사결정 트리는 관측값과 목표값을 연결하는 예측 모델이다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;2383&quot; data-end=&quot;2473&quot;&gt;강화 학습은 보상이 주어지는 문제 해결에 효과적인 학습 방법이 아니다.&lt;br /&gt;답: X, 강화 학습은 보상을 최대화하는 문제 해결에 효과적인 학습 방법이다.&lt;/li&gt;
&lt;li data-start=&quot;2475&quot; data-end=&quot;2533&quot;&gt;입력과 이에 대응하는 미리 알려진 출력을 연관시키는 관계를 학습하는 방법은?&lt;br /&gt;답: 지도 학습&lt;/li&gt;
&lt;li data-start=&quot;2535&quot; data-end=&quot;2590&quot;&gt;출력 없이 주어진 입력만으로 스스로 모델을 구축하여 학습하는 방법은?&lt;br /&gt;답: 비지도 학습&lt;/li&gt;
&lt;li data-start=&quot;2592&quot; data-end=&quot;2646&quot;&gt;스타크래프트와 바둑 같은 게임에서 보상을 위해 주로 사용되는 학습은?&lt;br /&gt;답: 강화 학습&lt;/li&gt;
&lt;li data-start=&quot;2648&quot; data-end=&quot;2697&quot;&gt;주어진 데이터 중 유사한 특성을 가진 것끼리 묶어서 나누는 것은?&lt;br /&gt;답: 분류&lt;/li&gt;
&lt;li data-start=&quot;2807&quot; data-end=&quot;2854&quot;&gt;주어진 입력에 대응하는 출력 정보 없이 학습하는 것은?&lt;br /&gt;답: 비지도 학습&lt;/li&gt;
&lt;li data-start=&quot;2910&quot; data-end=&quot;2941&quot;&gt;다음 중 머신러닝과 별로 관계가 없는 것은?&lt;/li&gt;
&lt;/ol&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;2942&quot; data-end=&quot;3036&quot;&gt;
&lt;li data-start=&quot;2942&quot; data-end=&quot;2962&quot;&gt;프로그램을 명시적으로만 작성&lt;/li&gt;
&lt;li data-start=&quot;2963&quot; data-end=&quot;2986&quot;&gt;전통적인 프로그래밍 개념과는 다름&lt;/li&gt;
&lt;li data-start=&quot;2987&quot; data-end=&quot;3006&quot;&gt;인공지능에 속하는 부분집합&lt;/li&gt;
&lt;li data-start=&quot;3007&quot; data-end=&quot;3036&quot;&gt;데이터로부터 학습하여 지식을 획득&lt;br /&gt;답: 1번&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;17. 다음 중 지도 학습의 장점에 속하는 것은?&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;3069&quot; data-end=&quot;3165&quot;&gt;
&lt;li data-start=&quot;3069&quot; data-end=&quot;3093&quot;&gt;레이블이 있는 데이터를 사용해야 함&lt;/li&gt;
&lt;li data-start=&quot;3094&quot; data-end=&quot;3118&quot;&gt;경험을 사용하여 성능 기준을 최적화&lt;/li&gt;
&lt;li data-start=&quot;3119&quot; data-end=&quot;3139&quot;&gt;일반적으로 많은 시간이 걸림&lt;/li&gt;
&lt;li data-start=&quot;3140&quot; data-end=&quot;3165&quot;&gt;제한된 유형의 문제를 해결&lt;br /&gt;답: 2번&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-start=&quot;3167&quot; data-end=&quot;3170&quot;&gt;주관식&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;3172&quot; data-end=&quot;3660&quot;&gt;
&lt;li data-start=&quot;3172&quot; data-end=&quot;3275&quot;&gt;머신러닝의 주요 종류를 말하시오.&lt;br /&gt;답: 지도 학습, 비지도 학습, 강화 학습&lt;/li&gt;
&lt;li data-start=&quot;3277&quot; data-end=&quot;3376&quot;&gt;분류의 응용 예를 쓰시오.&lt;br /&gt;답: 스팸 메일 분류, 개와 고양이 구분, 남녀 구분, 숫자 인식, 문자 인식, 카드 부정 사용 감지, 의료 영상의 종양 판별 등이 있다.&lt;/li&gt;
&lt;li data-start=&quot;3378&quot; data-end=&quot;3466&quot;&gt;회귀의 개념을 설명하시오.&lt;br /&gt;답: 회귀는 하나의 종속 변수와 하나 이상의 독립 변수 사이의 관계를 분석하여 연속적인 값을 예측하는 통계적 방법이다.&lt;/li&gt;
&lt;li data-start=&quot;3468&quot; data-end=&quot;3561&quot;&gt;머신러닝에서 활용되는 비지도 학습 방법을 쓰시오.&lt;br /&gt;답: K-means 클러스터링, 계층적 클러스터링, 가우스 혼합 모델(GMM), PCA(주성분 분석) 등이 있다.&lt;/li&gt;
&lt;li data-start=&quot;3563&quot; data-end=&quot;3660&quot;&gt;강화 학습에 대해 간단히 설명하시오.&lt;br /&gt;답: 에이전트가 환경에서 행동을 선택하고, 그 결과로 얻는 보상을 통해 시행착오적으로 최적의 행동 전략을 학습하는 방법이다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot; data-start=&quot;3662&quot; data-end=&quot;3664&quot;&gt;9장&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;3666&quot; data-end=&quot;4785&quot;&gt;
&lt;li data-start=&quot;3666&quot; data-end=&quot;3709&quot;&gt;뉴런의 작용을 모델링한 신경망은 인공신경망으로도 불린다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;3711&quot; data-end=&quot;3765&quot;&gt;맥컬럭은 인간 두뇌를 수많은 뉴런들로 이루어진 잘 정의된 컴퓨터라고 여겼다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;3767&quot; data-end=&quot;3820&quot;&gt;신경망은 문자인식, 음성인식, 영상인식, 자연어 처리 등에 이용되고 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;3822&quot; data-end=&quot;3900&quot;&gt;XOR 함수는 선형 분리가 가능한 논리함수에 속한다.&lt;br /&gt;답: X, XOR 함수는 하나의 직선으로 분리할 수 없는 비선형 문제이다.&lt;/li&gt;
&lt;li data-start=&quot;3902&quot; data-end=&quot;3968&quot;&gt;신경망의 가장 간단한 노드는 여러 입력과 연결강도의 곱을 합한 뒤 활성 함수를 거쳐 출력을 낸다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;3970&quot; data-end=&quot;4022&quot;&gt;노드는 임계값이나 오프셋 &amp;theta;, 비선형 함수의 형태에 따라 값이 정해진다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;4024&quot; data-end=&quot;4117&quot;&gt;단층 퍼셉트론의 한계가 노출되면서 2000년대 중반에 다층 퍼셉트론 모델이 제안되었다.&lt;br /&gt;답: X, 다층 퍼셉트론은 2000년대 중반보다 이전에 제안되었다.&lt;/li&gt;
&lt;li data-start=&quot;4119&quot; data-end=&quot;4167&quot;&gt;신경망은 병렬처리나 학습과 관련된 지능적 역할을 수행할 수 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;4169&quot; data-end=&quot;4266&quot;&gt;단층 퍼셉트론은 딥러닝의 심층신경망을 거쳐 다층 퍼셉트론으로 발전하였다.&lt;br /&gt;답: X, 단층 퍼셉트론 이후 다층 퍼셉트론이 발전하고, 이후 심층신경망으로 확장되었다.&lt;/li&gt;
&lt;li data-start=&quot;4268&quot; data-end=&quot;4319&quot;&gt;신경망은 계산 복잡성으로 인해 학습 시간이 오래 걸리는 문제점이 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;4321&quot; data-end=&quot;4371&quot;&gt;신경망은 인간 두뇌의 생물학적 무엇의 작용을 모방하여 고안되었는가?&lt;br /&gt;답: 뉴런&lt;/li&gt;
&lt;li data-start=&quot;4373&quot; data-end=&quot;4417&quot;&gt;신경망에서는 뉴런 사이의 무엇을 조정하여 학습하는가?&lt;br /&gt;답: 연결강도&lt;/li&gt;
&lt;li data-start=&quot;4472&quot; data-end=&quot;4522&quot;&gt;다층 퍼셉트론은 입력층, ( ), 출력층의 순서로 연결되어 있다.&lt;br /&gt;답: 은닉층&lt;/li&gt;
&lt;li data-start=&quot;4579&quot; data-end=&quot;4621&quot;&gt;마크 I 퍼셉트론은 무엇을 인식하는 성과를 보였는가?&lt;br /&gt;답: 문자&lt;/li&gt;
&lt;li data-start=&quot;4623&quot; data-end=&quot;4680&quot;&gt;출력과 목표 출력의 오차 제곱합을 최소화하도록 연결강도를 조정하는 규칙은?&lt;br /&gt;답: 델타 규칙&lt;/li&gt;
&lt;li data-start=&quot;4745&quot; data-end=&quot;4785&quot;&gt;다음 중 신경망에서 많이 사용되는 비선형 함수가 아닌 것은?&lt;/li&gt;
&lt;/ol&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;4786&quot; data-end=&quot;4840&quot;&gt;
&lt;li data-start=&quot;4786&quot; data-end=&quot;4796&quot;&gt;계단 함수&lt;/li&gt;
&lt;li data-start=&quot;4797&quot; data-end=&quot;4810&quot;&gt;시그모이드 함수&lt;/li&gt;
&lt;li data-start=&quot;4811&quot; data-end=&quot;4823&quot;&gt;임계논리 함수&lt;/li&gt;
&lt;li data-start=&quot;4824&quot; data-end=&quot;4840&quot;&gt;사인 함수&lt;br /&gt;답: 4번&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;17. 다음 중 선형 분리가 불가능한 논리함수는?&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;4873&quot; data-end=&quot;4925&quot;&gt;
&lt;li data-start=&quot;4873&quot; data-end=&quot;4884&quot;&gt;AND 함수&lt;/li&gt;
&lt;li data-start=&quot;4885&quot; data-end=&quot;4896&quot;&gt;XOR 함수&lt;/li&gt;
&lt;li data-start=&quot;4897&quot; data-end=&quot;4907&quot;&gt;OR 함수&lt;/li&gt;
&lt;li data-start=&quot;4908&quot; data-end=&quot;4925&quot;&gt;NOT 함수&lt;br /&gt;답: 2번&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-start=&quot;4927&quot; data-end=&quot;4930&quot;&gt;주관식&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;4932&quot; data-end=&quot;5451&quot;&gt;
&lt;li data-start=&quot;4932&quot; data-end=&quot;5040&quot;&gt;신경망의 획기적인 3가지 모델과 해당 알고리즘을 쓰시오.&lt;br /&gt;답: 퍼셉트론 모델과 퍼셉트론 학습 알고리즘, 다층 퍼셉트론과 역전파 알고리즘, 심층신경망(DNN)과 딥러닝 알고리즘&lt;/li&gt;
&lt;li data-start=&quot;5042&quot; data-end=&quot;5107&quot;&gt;최초의 학습 규칙은 무엇이고 개발한 인물은 누구인가?&lt;br /&gt;답: 헵의 학습 규칙이며, 도널드 헵이 개발하였다.&lt;/li&gt;
&lt;li data-start=&quot;5109&quot; data-end=&quot;5208&quot;&gt;선형 분리 가능의 특징을 설명하시오.&lt;br /&gt;답: 두 패턴 클래스가 하나의 직선 또는 초평면으로 구분될 수 있는 경우를 말한다. AND, OR 함수는 선형 분리가 가능하다.&lt;/li&gt;
&lt;li data-start=&quot;5210&quot; data-end=&quot;5343&quot;&gt;신경망이 문자인식에 많이 쓰이는 이유와 단점을 서술하시오.&lt;br /&gt;답: 신경망은 잡음, 왜곡, 크기 변화, 위치 변화 등에 비교적 잘 적응할 수 있어 문자인식에 적합하다. 단점은 많은 학습 데이터와 긴 훈련 시간이 필요하다는 점이다.&lt;/li&gt;
&lt;li data-start=&quot;5345&quot; data-end=&quot;5451&quot;&gt;다층 퍼셉트론에서 역전파 알고리즘을 설명하시오.&lt;br /&gt;답: 입력층에서 은닉층을 거쳐 출력층으로 계산한 뒤, 출력 오차를 반대 방향으로 전파하면서 연결강도를 조정하는 학습 알고리즘이다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot; data-start=&quot;5453&quot; data-end=&quot;5456&quot;&gt;10장&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;5458&quot; data-end=&quot;6652&quot;&gt;
&lt;li data-start=&quot;5458&quot; data-end=&quot;5516&quot;&gt;딥러닝 기반의 심층신경망은 이미 존재하는 다층 신경망의 특수한 경우로 볼 수 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;5518&quot; data-end=&quot;5569&quot;&gt;딥러닝의 시초는 1980년 일본의 후쿠시마가 개발한 네오코그니트론이다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;5571&quot; data-end=&quot;5654&quot;&gt;딥러닝은 머신러닝이나 신경망보다 훨씬 큰 규모의 데이터를 학습할 수 없다.&lt;br /&gt;답: X, 딥러닝은 대규모 데이터를 학습하는 데 강점이 있다.&lt;/li&gt;
&lt;li data-start=&quot;5656&quot; data-end=&quot;5720&quot;&gt;힌턴은 새로운 딥러닝 기반 학습 알고리즘을 제안하여 과적합 문제 등을 해결하는 데 기여하였다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;5722&quot; data-end=&quot;5796&quot;&gt;RBM은 제한된 볼츠만 머신으로 지도 학습에만 활용된다.&lt;br /&gt;답: X, RBM은 주로 비지도 학습이나 사전 학습에 활용된다.&lt;/li&gt;
&lt;li data-start=&quot;5798&quot; data-end=&quot;5852&quot;&gt;심층 신뢰 신경망은 사전에 훈련된 RBM을 여러 층으로 쌓아 올린 구조이다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;5854&quot; data-end=&quot;5906&quot;&gt;컴퓨터 게임의 지능적 행동은 딥러닝 학습을 통해 다양하게 적용되고 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;5908&quot; data-end=&quot;5981&quot;&gt;인공지능 반도체 시장은 앞으로 다소 정체될 것으로 예측된다.&lt;br /&gt;답: X, 인공지능 반도체 시장은 성장할 것으로 예측된다.&lt;/li&gt;
&lt;li data-start=&quot;5983&quot; data-end=&quot;6066&quot;&gt;텐서플로는 누구나 무료로 다운받아 사용할 수 있는 소프트웨어가 아니다.&lt;br /&gt;답: X, 텐서플로는 오픈소스 소프트웨어로 무료 사용이 가능하다.&lt;/li&gt;
&lt;li data-start=&quot;6068&quot; data-end=&quot;6128&quot;&gt;텐서플로 자체는 C++로 구현되어 있으며 Python, Java 등의 언어를 지원한다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;6208&quot; data-end=&quot;6245&quot;&gt;심층신경망은 여러 개의 무엇을 사용하는가?&lt;br /&gt;답: 은닉층&lt;/li&gt;
&lt;li data-start=&quot;6247&quot; data-end=&quot;6297&quot;&gt;딥러닝의 장점은 무엇과 분류가 자동적으로 이루어진다는 점인가?&lt;br /&gt;답: 특징 추출&lt;/li&gt;
&lt;li data-start=&quot;6299&quot; data-end=&quot;6351&quot;&gt;순차적 정보가 담긴 데이터에서 규칙적 패턴을 인식하는 신경망은?&lt;br /&gt;답: 순환 신경망&lt;/li&gt;
&lt;li data-start=&quot;6395&quot; data-end=&quot;6449&quot;&gt;개발자의 성지라고 불리며 오픈소스 소프트웨어의 중심지 역할을 하는 곳은?&lt;br /&gt;답: 깃허브&lt;/li&gt;
&lt;li data-start=&quot;6451&quot; data-end=&quot;6495&quot;&gt;딥러닝을 지원하는 구글이 만든 소프트웨어는 무엇인가?&lt;br /&gt;답: 텐서플로&lt;/li&gt;
&lt;li data-start=&quot;6497&quot; data-end=&quot;6558&quot;&gt;텐서플로의 대부분의 편리한 기능은 어떤 라이브러리로 구현되어 있는가?&lt;br /&gt;답: Python 라이브러리&lt;/li&gt;
&lt;li data-start=&quot;6560&quot; data-end=&quot;6618&quot;&gt;페이스북이 개발한 Python 기반의 오픈소스 머신러닝 라이브러리는 무엇인가?&lt;br /&gt;답: 파이토치&lt;/li&gt;
&lt;li data-start=&quot;6620&quot; data-end=&quot;6652&quot;&gt;다음 중 텐서플로가 자주 활용되지 않는 것은?&lt;/li&gt;
&lt;/ol&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;6653&quot; data-end=&quot;6701&quot;&gt;
&lt;li data-start=&quot;6653&quot; data-end=&quot;6662&quot;&gt;영상인식&lt;/li&gt;
&lt;li data-start=&quot;6663&quot; data-end=&quot;6672&quot;&gt;음성인식&lt;/li&gt;
&lt;li data-start=&quot;6673&quot; data-end=&quot;6683&quot;&gt;적분 계산&lt;/li&gt;
&lt;li data-start=&quot;6684&quot; data-end=&quot;6701&quot;&gt;자연어 처리&lt;br /&gt;답: 3번&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-start=&quot;6703&quot; data-end=&quot;6706&quot;&gt;주관식&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;6708&quot; data-end=&quot;7272&quot; data-is-last-node=&quot;&quot; data-is-only-node=&quot;&quot;&gt;
&lt;li data-start=&quot;6708&quot; data-end=&quot;6818&quot;&gt;딥러닝이 무엇인가와 응용 분야를 간단히 설명하시오.&lt;br /&gt;답: 딥러닝은 심층신경망을 기반으로 하는 머신러닝의 한 분야이다. 음성인식, 영상인식, 자연어 처리, 게임, 자율주행 등에 활용된다.&lt;/li&gt;
&lt;li data-start=&quot;6820&quot; data-end=&quot;6960&quot;&gt;세계적인 IT 기업들의 딥러닝 연구 개발 상황을 간략히 요약하시오.&lt;br /&gt;답: 구글, 마이크로소프트, 페이스북 등은 딥러닝 연구개발에 적극 투자하고 있으며, 음성인식, 영상 분류, 얼굴인식, 번역, 자연어 처리 등 다양한 분야에 적용하고 있다.&lt;/li&gt;
&lt;li data-start=&quot;6962&quot; data-end=&quot;7063&quot;&gt;설명가능 인공지능의 핵심을 간략히 설명하시오.&lt;br /&gt;답: 설명가능 인공지능은 인공지능이 도출한 결과와 판단 과정을 사람이 이해할 수 있도록 설명하여 신뢰성을 높이는 방법이다.&lt;/li&gt;
&lt;li data-start=&quot;7065&quot; data-end=&quot;7155&quot;&gt;NPU가 무엇인지 간략하게 설명하시오.&lt;br /&gt;답: NPU는 신경망 처리장치로, 딥러닝 연산을 빠르게 처리하기 위해 병렬 연산에 특화된 인공지능 반도체이다.&lt;/li&gt;
&lt;li data-start=&quot;7157&quot; data-end=&quot;7272&quot; data-is-last-node=&quot;&quot;&gt;최근 파이토치의 인기가 높아지는 이유를 말하시오.&lt;br /&gt;답: 설치와 사용이 편리하고, 동적 계산 그래프를 사용해 디버깅이 쉬우며, Python과 호환성이 높고 사용이 직관적이기 때문&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot; data-start=&quot;0&quot; data-end=&quot;3&quot;&gt;11장&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;5&quot; data-end=&quot;1132&quot;&gt;
&lt;li data-start=&quot;5&quot; data-end=&quot;60&quot;&gt;음성인식은 발성자의 성별이나 나이, 지속 시간 등에 따라 인식 결과가 다르다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;62&quot; data-end=&quot;161&quot;&gt;영상인식은 2차원이나 3차원의 영상 정보를 다루므로 인식 시간이 상당히 빠른 편이다.&lt;br /&gt;답: X, 영상인식은 처리해야 할 데이터 양이 많아 시간이 오래 걸리는 편이다.&lt;/li&gt;
&lt;li data-start=&quot;163&quot; data-end=&quot;235&quot;&gt;화자종속 음성인식 기술이 화자독립 음성인식 기술보다 훨씬 더 어렵다.&lt;br /&gt;답: X, 화자독립 음성인식 기술이 더 어렵다.&lt;/li&gt;
&lt;li data-start=&quot;237&quot; data-end=&quot;294&quot;&gt;음성합성 시스템은 주어진 문장을 음성으로 들을 수 있는 편리함을 제공할 수 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;296&quot; data-end=&quot;353&quot;&gt;대부분의 최신 스마트폰에는 음성인식을 통해 비서 역할을 하는 에이전트가 적용된다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;355&quot; data-end=&quot;403&quot;&gt;지문인식 기술은 보안이 필요한 장소의 신분 확인에 많이 사용된다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;405&quot; data-end=&quot;465&quot;&gt;문자인식은 영상인식의 영역에 속하지 않는다.&lt;br /&gt;답: X, 문자인식은 영상인식 분야의 한 영역이다.&lt;/li&gt;
&lt;li data-start=&quot;467&quot; data-end=&quot;543&quot;&gt;자연어에서 문법적 지식에 의미를 부여하는 것은 구문론적 이해이다.&lt;br /&gt;답: X, 문맥과 의미를 이해하는 것은 의미론적 이해이다.&lt;/li&gt;
&lt;li data-start=&quot;545&quot; data-end=&quot;598&quot;&gt;자연어 이해란 글을 이해하여 자연어 표현의 상황을 이해하는 수준을 말한다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;600&quot; data-end=&quot;653&quot;&gt;네이버의 번역 서비스인 파파고는 여러 언어의 번역 서비스를 제공하고 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;655&quot; data-end=&quot;704&quot;&gt;키보드 없이 음성을 인식하여 문서로 바꾸는 장치는 무엇인가?&lt;br /&gt;답: 음성타자기&lt;/li&gt;
&lt;li data-start=&quot;706&quot; data-end=&quot;757&quot;&gt;눈동자의 홍채 정보를 이용하여 사람을 인식하는 기술은 무엇인가?&lt;br /&gt;답: 홍채 인식&lt;/li&gt;
&lt;li data-start=&quot;759&quot; data-end=&quot;816&quot;&gt;문자 정보를 사람이 알아들을 수 있게 음성으로 만들어주는 기술은 무엇인가?&lt;br /&gt;답: 음성 합성&lt;/li&gt;
&lt;li data-start=&quot;818&quot; data-end=&quot;867&quot;&gt;음성인식 기술은 화자종속과 ( ) 음성인식으로 나눌 수 있다.&lt;br /&gt;답: 화자독립&lt;/li&gt;
&lt;li data-start=&quot;869&quot; data-end=&quot;925&quot;&gt;영상 파일을 신경망이나 딥러닝 기술로 분석하여 인식하는 기술은 무엇인가?&lt;br /&gt;답: 영상 인식&lt;/li&gt;
&lt;li data-start=&quot;927&quot; data-end=&quot;984&quot;&gt;주어진 영상을 보고 그 내용까지 이해하는 상당히 지능적인 단계는 무엇인가?&lt;br /&gt;답: 영상 이해&lt;/li&gt;
&lt;li data-start=&quot;1043&quot; data-end=&quot;1095&quot;&gt;컴퓨터를 통해 서로 다른 언어들을 번역하는 일을 무엇이라 하는가?&lt;br /&gt;답: 기계 번역&lt;/li&gt;
&lt;li data-start=&quot;1097&quot; data-end=&quot;1132&quot;&gt;다음의 인식 중 접촉식 인식 방법에 해당되는 것은?&lt;/li&gt;
&lt;/ol&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;1133&quot; data-end=&quot;1184&quot;&gt;
&lt;li data-start=&quot;1133&quot; data-end=&quot;1142&quot;&gt;홍채인식&lt;/li&gt;
&lt;li data-start=&quot;1143&quot; data-end=&quot;1152&quot;&gt;지문인식&lt;/li&gt;
&lt;li data-start=&quot;1153&quot; data-end=&quot;1162&quot;&gt;얼굴인식&lt;/li&gt;
&lt;li data-start=&quot;1163&quot; data-end=&quot;1184&quot;&gt;자동차 번호판 인식&lt;br /&gt;답: 2번&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;19. 다음 중 현재의 패턴인식 기술과 관계가 비교적 적은 것은?&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;1226&quot; data-end=&quot;1271&quot;&gt;
&lt;li data-start=&quot;1226&quot; data-end=&quot;1235&quot;&gt;문자인식&lt;/li&gt;
&lt;li data-start=&quot;1236&quot; data-end=&quot;1245&quot;&gt;음성인식&lt;/li&gt;
&lt;li data-start=&quot;1246&quot; data-end=&quot;1255&quot;&gt;감정인식&lt;/li&gt;
&lt;li data-start=&quot;1256&quot; data-end=&quot;1271&quot;&gt;얼굴인식&lt;br /&gt;답: 3번&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-start=&quot;1273&quot; data-end=&quot;1276&quot;&gt;주관식&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;1278&quot; data-end=&quot;1703&quot;&gt;
&lt;li data-start=&quot;1278&quot; data-end=&quot;1354&quot;&gt;패턴인식에서 응용되는 대표적인 종류를 쓰시오.&lt;br /&gt;답: 문자 인식, 음성 인식, 영상 인식, 지문 인식, 홍채 인식 등이 있다.&lt;/li&gt;
&lt;li data-start=&quot;1356&quot; data-end=&quot;1423&quot;&gt;음성인식을 위해 많이 쓰이는 방법을 말하시오.&lt;br /&gt;답: 패턴 매칭, 은닉 마르코프 모델, 딥러닝 등이 사용된다.&lt;/li&gt;
&lt;li data-start=&quot;1425&quot; data-end=&quot;1494&quot;&gt;출입자의 신분을 확인하는 데 많이 사용되는 3가지 인식 방법을 쓰시오.&lt;br /&gt;답: 얼굴 인식, 홍채 인식, 지문 인식&lt;/li&gt;
&lt;li data-start=&quot;1496&quot; data-end=&quot;1607&quot;&gt;형식 언어의 정의와 특징을 설명하시오.&lt;br /&gt;답: 형식 언어는 일정한 문법 규칙과 기호 체계에 따라 표현되는 언어이다. 문법이 엄격하며 모호성이 없어야 하고, 규칙에 맞지 않으면 올바른 문장으로 인정되지 않는다.&lt;/li&gt;
&lt;li data-start=&quot;1609&quot; data-end=&quot;1703&quot;&gt;자연어 처리에서 구문론과 의미론의 차이점을 설명하시오.&lt;br /&gt;답: 구문론은 문장의 문법 구조와 단어 배열 규칙을 분석하는 것이고, 의미론은 문장이 가지는 의미를 해석하는 것이다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot; data-start=&quot;1705&quot; data-end=&quot;1708&quot;&gt;12장&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;1710&quot; data-end=&quot;2894&quot;&gt;
&lt;li data-start=&quot;1710&quot; data-end=&quot;1812&quot;&gt;데이터 사이언스는 통계 방법만을 사용하여 대량의 데이터를 처리하는 전문 분야이다.&lt;br /&gt;답: X, 데이터 사이언스는 통계뿐 아니라 머신러닝&amp;middot;알고리즘&amp;middot;데이터 처리 등을 포함한다.&lt;/li&gt;
&lt;li data-start=&quot;1814&quot; data-end=&quot;1868&quot;&gt;데이터 사이언스는 데이터를 다루는 방법론, 프로세스, 알고리즘 등을 다룬다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;1870&quot; data-end=&quot;1954&quot;&gt;머신러닝을 전혀 이용하지 않고도 데이터 사이언스가 폭넓게 활용될 수 있다.&lt;br /&gt;답: X, 머신러닝은 데이터 사이언스의 핵심 기술 중 하나이다.&lt;/li&gt;
&lt;li data-start=&quot;1956&quot; data-end=&quot;2001&quot;&gt;SAS는 통계적 소프트웨어로 안정성과 신뢰성을 가지고 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;2003&quot; data-end=&quot;2056&quot;&gt;데이터 사이언스에서의 분석은 분류, 회귀, 클러스터링에 의한 경우가 많다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;2058&quot; data-end=&quot;2107&quot;&gt;빅데이터는 구매 패턴 분석과 앱의 경향 분석 등에 응용될 수 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;2109&quot; data-end=&quot;2162&quot;&gt;태풍이나 허리케인과 관련된 빅데이터를 활용하여 재해 예방에 활용하고 있다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;2164&quot; data-end=&quot;2251&quot;&gt;개인정보보호 문제는 빅데이터의 자료 수집 문제와 거의 관련이 없다.&lt;br /&gt;답: X, 빅데이터 수집 과정에서는 개인정보보호 문제가 중요하게 다루어진다.&lt;/li&gt;
&lt;li data-start=&quot;2253&quot; data-end=&quot;2320&quot;&gt;데이터 마이닝은 데이터로부터 정보를 추출하고 패턴을 발견하며 예측 모델을 개발하는 데 중심을 둔다.&lt;br /&gt;답: O&lt;/li&gt;
&lt;li data-start=&quot;2322&quot; data-end=&quot;2399&quot;&gt;우리나라에서는 아직 데이터 거래소가 별로 필요하지 않다.&lt;br /&gt;답: X, 데이터 활용 증가로 데이터 거래소의 필요성이 커지고 있다.&lt;/li&gt;
&lt;li data-start=&quot;2401&quot; data-end=&quot;2454&quot;&gt;데이터 사이언스나 빅데이터 관련 업무 전문가를 무엇이라 하는가?&lt;br /&gt;답: 데이터 과학자&lt;/li&gt;
&lt;li data-start=&quot;2456&quot; data-end=&quot;2511&quot;&gt;다양한 형태의 정형 또는 비정형 데이터를 많이 모아 놓은 것은 무엇인가?&lt;br /&gt;답: 빅데이터&lt;/li&gt;
&lt;li data-start=&quot;2513&quot; data-end=&quot;2562&quot;&gt;빅데이터의 3가지 특징(3V)은 크기, 다양성, 그리고 무엇인가?&lt;br /&gt;답: 속도&lt;/li&gt;
&lt;li data-start=&quot;2624&quot; data-end=&quot;2678&quot;&gt;주어진 많은 데이터 중 비슷한 특성을 가진 것끼리 분리하는 것은 무엇인가?&lt;br /&gt;답: 분류&lt;/li&gt;
&lt;li data-start=&quot;2735&quot; data-end=&quot;2787&quot;&gt;탐색적 분석 결과를 보기 쉽고 이해하기 쉽게 표현하는 것은 무엇인가?&lt;br /&gt;답: 시각화&lt;/li&gt;
&lt;li data-start=&quot;2789&quot; data-end=&quot;2845&quot;&gt;오픈소스 통계 프로그래밍 언어로 데이터 분석과 시각화에 활용되는 것은 무엇인가?&lt;br /&gt;답: R&lt;/li&gt;
&lt;li data-start=&quot;2847&quot; data-end=&quot;2894&quot;&gt;데이터 사이언스에 필요한 지식과 기술 중 중요성이 상대적으로 적은 것은?&lt;/li&gt;
&lt;/ol&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;2895&quot; data-end=&quot;2972&quot;&gt;
&lt;li data-start=&quot;2895&quot; data-end=&quot;2909&quot;&gt;데이터 수집 기술&lt;/li&gt;
&lt;li data-start=&quot;2910&quot; data-end=&quot;2926&quot;&gt;컴퓨터 하드웨어 지식&lt;/li&gt;
&lt;li data-start=&quot;2927&quot; data-end=&quot;2944&quot;&gt;통계처리와 시각화 기술&lt;/li&gt;
&lt;li data-start=&quot;2945&quot; data-end=&quot;2972&quot;&gt;머신러닝과 관련된 지식과 기술&lt;br /&gt;답: 2번&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;18. 다음 중 데이터 사이언스의 도구와 가장 관계가 먼 것은?&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;3013&quot; data-end=&quot;3056&quot;&gt;
&lt;li data-start=&quot;3013&quot; data-end=&quot;3024&quot;&gt;Python&lt;/li&gt;
&lt;li data-start=&quot;3025&quot; data-end=&quot;3031&quot;&gt;R&lt;/li&gt;
&lt;li data-start=&quot;3032&quot; data-end=&quot;3040&quot;&gt;SAS&lt;/li&gt;
&lt;li data-start=&quot;3041&quot; data-end=&quot;3056&quot;&gt;Ruby&lt;br /&gt;답: 4번&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-start=&quot;3058&quot; data-end=&quot;3061&quot;&gt;주관식&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot; data-start=&quot;3063&quot; data-end=&quot;3516&quot; data-is-last-node=&quot;&quot; data-is-only-node=&quot;&quot;&gt;
&lt;li data-start=&quot;3063&quot; data-end=&quot;3145&quot;&gt;데이터 사이언스를 간단하게 정의하시오.&lt;br /&gt;답: 대량의 데이터를 수집&amp;middot;저장&amp;middot;분석하여 유용한 정보를 추출하고 의사결정에 활용하는 융합 학문 분야이다.&lt;/li&gt;
&lt;li data-start=&quot;3147&quot; data-end=&quot;3240&quot;&gt;데이터 사이언스는 어떤 분야들의 융합으로 이루어지는지 말하시오.&lt;br /&gt;답: 통계학, 수학, 머신러닝, 빅데이터, 컴퓨터공학, 비즈니스 등의 융합으로 이루어진다.&lt;/li&gt;
&lt;li data-start=&quot;3242&quot; data-end=&quot;3333&quot;&gt;사용자가 빅데이터를 활용하는 단계를 쓰시오.&lt;br /&gt;답: 요구사항 확인 &amp;rarr; 데이터 수집 &amp;rarr; 데이터 가공 &amp;rarr; 데이터 분석 및 시각화 &amp;rarr; 활용의 단계로 진행된다.&lt;/li&gt;
&lt;li data-start=&quot;3335&quot; data-end=&quot;3428&quot;&gt;데이터 사이언스가 비즈니스에 미치는 좋은 효과를 말하시오.&lt;br /&gt;답: 의사결정 향상, 경영 문제 개선, 미래 예측, 고객 분석, 생산성 향상 등에 도움을 준다.&lt;/li&gt;
&lt;li data-start=&quot;3430&quot; data-end=&quot;3516&quot; data-is-last-node=&quot;&quot;&gt;데이터 마이닝이 많이 활용되는 기업 관련 업무를 쓰시오.&lt;br /&gt;답: 품질 관리, 의료 진단, 금융 신용 평가, 고객 구매 패턴 분석 등에 활용된다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기초 문제만 이 페이지에 작성해놓고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체 문제는 '처음만나는 인공지능 2' 글에 올려 놓았습니다.&lt;/p&gt;</description>
      <category>CS-Junior/기계학습</category>
      <category>만나는</category>
      <category>연습문제</category>
      <category>인공지능</category>
      <category>처음</category>
      <category>처음만나는인공지능</category>
      <category>처음만나는인공지능 연습문제</category>
      <category>처음만나는인공지능 연습문제 모음</category>
      <category>체험인공지능</category>
      <author>김형준</author>
      <guid isPermaLink="true">https://devreco.tistory.com/31</guid>
      <comments>https://devreco.tistory.com/31#entry31comment</comments>
      <pubDate>Wed, 6 May 2026 17:33:51 +0900</pubDate>
    </item>
    <item>
      <title>CNN의 순전파 역전파  과정</title>
      <link>https://devreco.tistory.com/29</link>
      <description>&lt;h1 data-end=&quot;66&quot; data-start=&quot;52&quot; data-section-id=&quot;1ugmb3y&quot;&gt;1. CNN이 하는 일&lt;/h1&gt;
&lt;p data-end=&quot;106&quot; data-start=&quot;68&quot; data-ke-size=&quot;size16&quot;&gt;CNN은 이미지처럼 격자 구조를 가진 데이터를 처리하는 신경망입니다.&lt;/p&gt;
&lt;p data-end=&quot;255&quot; data-start=&quot;108&quot; data-ke-size=&quot;size16&quot;&gt;일반적인 이미지 데이터는 가로, 세로, 채널로 구성됩니다. 예를 들어 컬러 이미지는 빨강, 초록, 파랑의 3개 채널을 가집니다. CNN은 이 이미지에서 선, 모서리, 색 변화, 질감, 부분 패턴, 물체의 일부, 최종적으로 전체 물체의 특징을 단계적으로 추출합니다.&lt;/p&gt;
&lt;p data-end=&quot;364&quot; data-start=&quot;257&quot; data-ke-size=&quot;size16&quot;&gt;즉 CNN은 처음부터 &amp;ldquo;이것은 고양이다&amp;rdquo;라고 판단하지 않습니다. 먼저 가장 낮은 수준의 특징을 찾고, 그다음 그 특징들을 조합해서 더 복잡한 특징을 만들고, 마지막에 전체 이미지를 분류합니다.&lt;/p&gt;
&lt;p data-end=&quot;382&quot; data-start=&quot;366&quot; data-ke-size=&quot;size16&quot;&gt;흐름은 보통 다음과 같습니다.&lt;/p&gt;
&lt;p data-end=&quot;465&quot; data-start=&quot;384&quot; data-ke-size=&quot;size16&quot;&gt;입력 이미지 &amp;rarr; 합성곱 &amp;rarr; 활성화 함수 &amp;rarr; 풀링 &amp;rarr; 여러 번 반복 &amp;rarr; 펼치기 &amp;rarr; 완전연결층 &amp;rarr; 출력 확률 &amp;rarr; 손실 계산 &amp;rarr; 역전파 &amp;rarr; 가중치 수정&lt;/p&gt;
&lt;h1 data-end=&quot;479&quot; data-start=&quot;467&quot; data-section-id=&quot;1txplna&quot;&gt;2. 순전파의 의미&lt;/h1&gt;
&lt;p data-end=&quot;530&quot; data-start=&quot;481&quot; data-ke-size=&quot;size16&quot;&gt;순전파는 입력 데이터가 신경망의 앞에서 뒤로 이동하면서 최종 예측값을 만드는 과정입니다.&lt;/p&gt;
&lt;p data-end=&quot;639&quot; data-start=&quot;532&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 강아지 사진을 CNN에 넣으면, CNN은 여러 층을 거치면서 그 이미지가 강아지인지, 고양이인지, 자동차인지에 대한 점수를 만듭니다. 마지막에는 각 클래스에 대한 확률을 출력합니다.&lt;/p&gt;
&lt;p data-end=&quot;659&quot; data-start=&quot;641&quot; data-ke-size=&quot;size16&quot;&gt;순전파의 목적은 다음과 같습니다.&lt;/p&gt;
&lt;p data-end=&quot;684&quot; data-start=&quot;661&quot; data-ke-size=&quot;size16&quot;&gt;첫째, 입력 이미지에서 특징을 추출합니다.&lt;/p&gt;
&lt;p data-end=&quot;717&quot; data-start=&quot;686&quot; data-ke-size=&quot;size16&quot;&gt;둘째, 추출된 특징을 점점 더 추상적인 정보로 바꿉니다.&lt;/p&gt;
&lt;p data-end=&quot;740&quot; data-start=&quot;719&quot; data-ke-size=&quot;size16&quot;&gt;셋째, 마지막에 분류 결과를 만듭니다.&lt;/p&gt;
&lt;p data-end=&quot;769&quot; data-start=&quot;742&quot; data-ke-size=&quot;size16&quot;&gt;넷째, 정답과 비교하기 위한 예측값을 생성합니다.&lt;/p&gt;
&lt;h1 data-end=&quot;781&quot; data-start=&quot;771&quot; data-section-id=&quot;inmmd3&quot;&gt;3. 입력 단계&lt;/h1&gt;
&lt;p data-end=&quot;810&quot; data-start=&quot;783&quot; data-ke-size=&quot;size16&quot;&gt;입력 단계에서는 이미지가 숫자 배열로 들어옵니다.&lt;/p&gt;
&lt;p data-end=&quot;924&quot; data-start=&quot;812&quot; data-ke-size=&quot;size16&quot;&gt;컴퓨터는 이미지를 사람처럼 그림으로 보지 않습니다. 이미지는 픽셀값의 모음입니다. 흑백 이미지는 각 위치마다 밝기값 하나를 가지고, 컬러 이미지는 각 위치마다 빨강, 초록, 파랑 값 세 개를 가집니다.&lt;/p&gt;
&lt;p data-end=&quot;1024&quot; data-start=&quot;926&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 흑백 손글씨 숫자 이미지는 &amp;ldquo;어느 위치가 밝고 어느 위치가 어두운지&amp;rdquo;에 대한 숫자표입니다. 컬러 사진은 &amp;ldquo;각 위치의 RGB 값이 얼마인지&amp;rdquo;에 대한 숫자 덩어리입니다.&lt;/p&gt;
&lt;p data-end=&quot;1051&quot; data-start=&quot;1026&quot; data-ke-size=&quot;size16&quot;&gt;CNN의 입력은 보통 다음 정보를 포함합니다.&lt;/p&gt;
&lt;p data-end=&quot;1080&quot; data-start=&quot;1053&quot; data-ke-size=&quot;size16&quot;&gt;배치 크기: 한 번에 몇 장의 이미지를 처리하는지&lt;/p&gt;
&lt;p data-end=&quot;1103&quot; data-start=&quot;1082&quot; data-ke-size=&quot;size16&quot;&gt;채널 수: 흑백이면 1개, 컬러면 3개&lt;/p&gt;
&lt;p data-end=&quot;1119&quot; data-start=&quot;1105&quot; data-ke-size=&quot;size16&quot;&gt;높이: 이미지의 세로 크기&lt;/p&gt;
&lt;p data-end=&quot;1135&quot; data-start=&quot;1121&quot; data-ke-size=&quot;size16&quot;&gt;너비: 이미지의 가로 크기&lt;/p&gt;
&lt;p data-end=&quot;1232&quot; data-start=&quot;1137&quot; data-ke-size=&quot;size16&quot;&gt;딥러닝에서는 이미지를 한 장씩만 넣는 것이 아니라 여러 장을 묶어서 넣는 경우가 많습니다. 이를 배치라고 합니다. 배치를 사용하면 학습이 더 안정적이고 빠르게 진행됩니다.&lt;/p&gt;
&lt;h1 data-end=&quot;1245&quot; data-start=&quot;1234&quot; data-section-id=&quot;1rs7eb1&quot;&gt;4. 정규화 단계&lt;/h1&gt;
&lt;p data-end=&quot;1277&quot; data-start=&quot;1247&quot; data-ke-size=&quot;size16&quot;&gt;이미지를 CNN에 넣기 전에 보통 정규화를 수행합니다.&lt;/p&gt;
&lt;p data-end=&quot;1401&quot; data-start=&quot;1279&quot; data-ke-size=&quot;size16&quot;&gt;이미지 픽셀값은 보통 0부터 255 사이입니다. 이 값을 그대로 사용하면 숫자 범위가 커서 학습이 불안정해질 수 있습니다. 그래서 0부터 1 사이로 줄이거나, 평균을 빼고 표준편차로 나누어 일정한 분포를 갖게 만듭니다.&lt;/p&gt;
&lt;p data-end=&quot;1421&quot; data-start=&quot;1403&quot; data-ke-size=&quot;size16&quot;&gt;정규화의 목적은 다음과 같습니다.&lt;/p&gt;
&lt;p data-end=&quot;1439&quot; data-start=&quot;1423&quot; data-ke-size=&quot;size16&quot;&gt;입력값의 범위를 안정화합니다.&lt;/p&gt;
&lt;p data-end=&quot;1453&quot; data-start=&quot;1441&quot; data-ke-size=&quot;size16&quot;&gt;학습 속도를 높입니다.&lt;/p&gt;
&lt;p data-end=&quot;1490&quot; data-start=&quot;1455&quot; data-ke-size=&quot;size16&quot;&gt;특정 채널이나 픽셀값이 지나치게 큰 영향을 주는 것을 줄입니다.&lt;/p&gt;
&lt;p data-end=&quot;1516&quot; data-start=&quot;1492&quot; data-ke-size=&quot;size16&quot;&gt;경사하강법이 더 안정적으로 작동하게 합니다.&lt;/p&gt;
&lt;p data-end=&quot;1570&quot; data-start=&quot;1518&quot; data-ke-size=&quot;size16&quot;&gt;정규화는 CNN 내부의 핵심 연산은 아니지만, 실제 학습에서는 매우 중요한 전처리 단계입니다.&lt;/p&gt;
&lt;h1 data-end=&quot;1587&quot; data-start=&quot;1572&quot; data-section-id=&quot;qgcicw&quot;&gt;5. 합성곱 계층의 역할&lt;/h1&gt;
&lt;p data-end=&quot;1608&quot; data-start=&quot;1589&quot; data-ke-size=&quot;size16&quot;&gt;합성곱 계층은 CNN의 핵심입니다.&lt;/p&gt;
&lt;p data-end=&quot;1679&quot; data-start=&quot;1610&quot; data-ke-size=&quot;size16&quot;&gt;합성곱 계층은 이미지 전체를 한 번에 보는 것이 아니라, 작은 필터를 이용해 이미지의 작은 영역을 훑으면서 특징을 찾습니다.&lt;/p&gt;
&lt;p data-end=&quot;1798&quot; data-start=&quot;1681&quot; data-ke-size=&quot;size16&quot;&gt;필터는 작은 숫자 배열입니다. 예를 들어 3&amp;times;3 필터는 이미지의 3&amp;times;3 영역을 한 번에 봅니다. 이 필터가 이미지 위를 왼쪽에서 오른쪽으로, 위에서 아래로 이동하면서 각 위치에서 특정 패턴이 있는지 확인합니다.&lt;/p&gt;
&lt;p data-end=&quot;1826&quot; data-start=&quot;1800&quot; data-ke-size=&quot;size16&quot;&gt;필터는 다음과 같은 특징을 감지할 수 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;1831&quot; data-start=&quot;1828&quot; data-ke-size=&quot;size16&quot;&gt;수직선, 수평선, 대각선, 모서리, 색 변화, 질감, 반복 패턴, 곡선&lt;/p&gt;
&lt;p data-end=&quot;1960&quot; data-start=&quot;1880&quot; data-ke-size=&quot;size16&quot;&gt;초기 CNN 층에서는 단순한 선이나 경계가 주로 감지됩니다. 깊은 층으로 갈수록 눈, 코, 창문 같은 더 복잡한 특징이 감지됩니다.&lt;/p&gt;
&lt;h1 data-end=&quot;1973&quot; data-start=&quot;1962&quot; data-section-id=&quot;t188i&quot;&gt;6. 필터의 의미&lt;/h1&gt;
&lt;p data-end=&quot;1997&quot; data-start=&quot;1975&quot; data-ke-size=&quot;size16&quot;&gt;필터는 CNN이 학습하는 파라미터입니다.&lt;/p&gt;
&lt;p data-end=&quot;2084&quot; data-start=&quot;1999&quot; data-ke-size=&quot;size16&quot;&gt;처음에는 필터 값이 무작위로 초기화됩니다. 이때 필터는 아무 의미 있는 패턴도 잘 찾지 못합니다. 하지만 학습을 반복하면서 필터 값이 조금씩 조정됩니다.&lt;/p&gt;
&lt;p data-end=&quot;2162&quot; data-start=&quot;2086&quot; data-ke-size=&quot;size16&quot;&gt;학습이 진행되면 어떤 필터는 세로선을 잘 찾게 되고, 어떤 필터는 둥근 모양을 잘 찾게 되고, 어떤 필터는 질감을 찾습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;2202&quot; data-start=&quot;2164&quot; data-ke-size=&quot;size16&quot;&gt;즉 필터는 사람이 직접 설계하는 것이 아니라 데이터로부터 학습됩니다.&lt;/p&gt;
&lt;p data-end=&quot;2312&quot; data-start=&quot;2204&quot; data-ke-size=&quot;size16&quot;&gt;이것이 CNN의 중요한 장점입니다. 과거의 이미지 처리에서는 사람이 직접 &amp;ldquo;모서리 검출기&amp;rdquo;, &amp;ldquo;색상 특징&amp;rdquo;, &amp;ldquo;질감 특징&amp;rdquo;을 설계해야 했습니다. CNN은 이러한 특징 추출기를 스스로 학습합니다.&lt;/p&gt;
&lt;h1 data-end=&quot;2332&quot; data-start=&quot;2314&quot; data-section-id=&quot;1wgl2fq&quot;&gt;7. 합성곱 연산의 실제 의미&lt;/h1&gt;
&lt;p data-end=&quot;2369&quot; data-start=&quot;2334&quot; data-ke-size=&quot;size16&quot;&gt;합성곱 연산은 필터와 이미지의 작은 영역을 비교하는 과정입니다.&lt;/p&gt;
&lt;p data-end=&quot;2468&quot; data-start=&quot;2371&quot; data-ke-size=&quot;size16&quot;&gt;필터가 이미지의 한 위치에 놓이면, 그 위치의 작은 이미지 조각과 필터가 서로 얼마나 잘 맞는지 계산합니다. 잘 맞으면 큰 값이 나오고, 잘 맞지 않으면 작은 값이 나옵니다.&lt;/p&gt;
&lt;p data-end=&quot;2565&quot; data-start=&quot;2470&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 어떤 필터가 세로선을 감지하도록 학습되었다고 가정합니다. 이미지의 특정 위치에 세로선이 있으면 그 필터의 출력값이 커집니다. 세로선이 없으면 출력값이 작습니다.&lt;/p&gt;
&lt;p data-end=&quot;2676&quot; data-start=&quot;2567&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 필터가 이미지 전체를 훑으면, &amp;ldquo;이미지의 어느 위치에 해당 특징이 있는지&amp;rdquo;를 나타내는 새로운 지도가 만들어집니다. 이것을 feature map 또는 activation map이라고 합니다.&lt;/p&gt;
&lt;h1 data-end=&quot;2698&quot; data-start=&quot;2678&quot; data-section-id=&quot;1p1jvvk&quot;&gt;8. Feature Map의 의미&lt;/h1&gt;
&lt;p data-end=&quot;2743&quot; data-start=&quot;2700&quot; data-ke-size=&quot;size16&quot;&gt;Feature map은 특정 필터가 감지한 특징의 위치 정보를 담고 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;2820&quot; data-start=&quot;2745&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 첫 번째 필터가 수직선을 감지한다면, 첫 번째 feature map은 이미지에서 수직선이 강하게 나타나는 위치를 표시합니다.&lt;/p&gt;
&lt;p data-end=&quot;2879&quot; data-start=&quot;2822&quot; data-ke-size=&quot;size16&quot;&gt;두 번째 필터가 수평선을 감지한다면, 두 번째 feature map은 수평선이 있는 위치를 표시합니다.&lt;/p&gt;
&lt;p data-end=&quot;2938&quot; data-start=&quot;2881&quot; data-ke-size=&quot;size16&quot;&gt;세 번째 필터가 모서리를 감지한다면, 세 번째 feature map은 모서리가 있는 위치를 표시합니다.&lt;/p&gt;
&lt;p data-end=&quot;2983&quot; data-start=&quot;2940&quot; data-ke-size=&quot;size16&quot;&gt;즉 합성곱 계층의 출력은 단순한 이미지가 아니라 여러 종류의 특징 지도입니다.&lt;/p&gt;
&lt;p data-end=&quot;3056&quot; data-start=&quot;2985&quot; data-ke-size=&quot;size16&quot;&gt;필터가 많을수록 더 다양한 특징을 추출할 수 있습니다. 예를 들어 필터가 32개라면 32개의 feature map이 생성됩니다.&lt;/p&gt;
&lt;h1 data-end=&quot;3069&quot; data-start=&quot;3058&quot; data-section-id=&quot;pmxicp&quot;&gt;9. 채널의 변화&lt;/h1&gt;
&lt;p data-end=&quot;3102&quot; data-start=&quot;3071&quot; data-ke-size=&quot;size16&quot;&gt;입력 이미지가 RGB 이미지라면 입력 채널은 3개입니다.&lt;/p&gt;
&lt;p data-end=&quot;3190&quot; data-start=&quot;3104&quot; data-ke-size=&quot;size16&quot;&gt;합성곱 필터는 이 3개 채널을 동시에 봅니다. 즉 빨강 채널, 초록 채널, 파랑 채널 각각에서 정보를 가져와 하나의 출력 feature map을 만듭니다.&lt;/p&gt;
&lt;p data-end=&quot;3224&quot; data-start=&quot;3192&quot; data-ke-size=&quot;size16&quot;&gt;필터가 여러 개 있으면 출력 채널 수도 여러 개가 됩니다.&lt;/p&gt;
&lt;p data-end=&quot;3307&quot; data-start=&quot;3226&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 입력이 RGB 이미지라서 채널이 3개이고, 합성곱 계층에 필터가 64개 있다면 출력 feature map은 64개 채널을 갖게 됩니다.&lt;/p&gt;
&lt;p data-end=&quot;3343&quot; data-start=&quot;3309&quot; data-ke-size=&quot;size16&quot;&gt;즉 CNN에서는 공간 크기뿐 아니라 채널 수도 계속 변합니다.&lt;/p&gt;
&lt;p data-end=&quot;3448&quot; data-start=&quot;3345&quot; data-ke-size=&quot;size16&quot;&gt;초기에는 이미지의 실제 색상 채널이 중요하지만, 깊은 층으로 갈수록 채널은 더 이상 빨강, 초록, 파랑을 의미하지 않습니다. 대신 각각의 채널은 CNN이 학습한 특정 특징을 의미합니다.&lt;/p&gt;
&lt;h1 data-end=&quot;3467&quot; data-start=&quot;3450&quot; data-section-id=&quot;ecftsd&quot;&gt;10. Padding의 역할&lt;/h1&gt;
&lt;p data-end=&quot;3550&quot; data-start=&quot;3469&quot; data-ke-size=&quot;size16&quot;&gt;합성곱을 할 때 필터가 이미지의 가장자리까지 이동하면 문제가 생깁니다. 필터가 가장자리에 놓일 때는 필터 일부가 이미지 밖으로 나가기 때문입니다.&lt;/p&gt;
&lt;p data-end=&quot;3611&quot; data-start=&quot;3552&quot; data-ke-size=&quot;size16&quot;&gt;이를 해결하기 위해 이미지 주변에 0 또는 특정 값을 덧붙이는 작업을 합니다. 이것이 padding입니다.&lt;/p&gt;
&lt;p data-end=&quot;3635&quot; data-start=&quot;3613&quot; data-ke-size=&quot;size16&quot;&gt;Padding의 목적은 다음과 같습니다.&lt;/p&gt;
&lt;p data-end=&quot;3650&quot; data-start=&quot;3637&quot; data-ke-size=&quot;size16&quot;&gt;출력 크기를 유지합니다.&lt;/p&gt;
&lt;p data-end=&quot;3684&quot; data-start=&quot;3652&quot; data-ke-size=&quot;size16&quot;&gt;이미지 가장자리 정보가 너무 빨리 사라지는 것을 막습니다.&lt;/p&gt;
&lt;p data-end=&quot;3721&quot; data-start=&quot;3686&quot; data-ke-size=&quot;size16&quot;&gt;깊은 네트워크에서 공간 크기가 급격히 줄어드는 것을 방지합니다.&lt;/p&gt;
&lt;p data-end=&quot;3749&quot; data-start=&quot;3723&quot; data-ke-size=&quot;size16&quot;&gt;가장자리 픽셀도 충분히 연산에 참여하게 합니다.&lt;/p&gt;
&lt;p data-end=&quot;3857&quot; data-start=&quot;3751&quot; data-ke-size=&quot;size16&quot;&gt;Padding이 없으면 합성곱을 할 때마다 이미지 크기가 줄어듭니다. 여러 층을 지나면 feature map이 너무 작아질 수 있습니다. 따라서 많은 CNN에서는 padding을 사용합니다.&lt;/p&gt;
&lt;h1 data-end=&quot;3875&quot; data-start=&quot;3859&quot; data-section-id=&quot;qaw4ao&quot;&gt;11. Stride의 역할&lt;/h1&gt;
&lt;p data-end=&quot;3912&quot; data-start=&quot;3877&quot; data-ke-size=&quot;size16&quot;&gt;Stride는 필터가 한 번에 몇 칸씩 이동하는지를 의미합니다.&lt;/p&gt;
&lt;p data-end=&quot;3962&quot; data-start=&quot;3914&quot; data-ke-size=&quot;size16&quot;&gt;Stride가 1이면 필터가 한 칸씩 이동합니다. 이 경우 세밀하게 이미지를 훑습니다.&lt;/p&gt;
&lt;p data-end=&quot;4023&quot; data-start=&quot;3964&quot; data-ke-size=&quot;size16&quot;&gt;Stride가 2이면 필터가 두 칸씩 이동합니다. 이 경우 출력 feature map의 크기가 줄어듭니다.&lt;/p&gt;
&lt;p data-end=&quot;4053&quot; data-start=&quot;4025&quot; data-ke-size=&quot;size16&quot;&gt;Stride가 클수록 다음과 같은 효과가 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;4066&quot; data-start=&quot;4055&quot; data-ke-size=&quot;size16&quot;&gt;계산량이 줄어듭니다.&lt;/p&gt;
&lt;p data-end=&quot;4081&quot; data-start=&quot;4068&quot; data-ke-size=&quot;size16&quot;&gt;출력 크기가 작아집니다.&lt;/p&gt;
&lt;p data-end=&quot;4103&quot; data-start=&quot;4083&quot; data-ke-size=&quot;size16&quot;&gt;세밀한 위치 정보는 일부 손실됩니다.&lt;/p&gt;
&lt;p data-end=&quot;4129&quot; data-start=&quot;4105&quot; data-ke-size=&quot;size16&quot;&gt;더 넓은 영역을 빠르게 압축할 수 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;4170&quot; data-start=&quot;4131&quot; data-ke-size=&quot;size16&quot;&gt;즉 stride는 정보의 세밀함과 계산 효율 사이의 균형을 조절합니다.&lt;/p&gt;
&lt;h1 data-end=&quot;4186&quot; data-start=&quot;4172&quot; data-section-id=&quot;polwav&quot;&gt;12. Bias의 역할&lt;/h1&gt;
&lt;p data-end=&quot;4216&quot; data-start=&quot;4188&quot; data-ke-size=&quot;size16&quot;&gt;합성곱 계층에는 필터뿐 아니라 bias도 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;4278&quot; data-start=&quot;4218&quot; data-ke-size=&quot;size16&quot;&gt;Bias는 각 필터의 출력에 추가되는 값입니다. Bias는 해당 필터가 얼마나 쉽게 활성화될지를 조절합니다.&lt;/p&gt;
&lt;p data-end=&quot;4373&quot; data-start=&quot;4280&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 어떤 필터가 특정 패턴을 감지할 때, bias가 크면 조금 약한 패턴에도 반응할 수 있습니다. bias가 작거나 음수이면 더 강한 패턴이 있어야 반응합니다.&lt;/p&gt;
&lt;p data-end=&quot;4405&quot; data-start=&quot;4375&quot; data-ke-size=&quot;size16&quot;&gt;즉 bias는 필터의 기준점을 조절하는 역할을 합니다.&lt;/p&gt;
&lt;h1 data-end=&quot;4424&quot; data-start=&quot;4407&quot; data-section-id=&quot;khe5ei&quot;&gt;13. 활성화 함수의 필요성&lt;/h1&gt;
&lt;p data-end=&quot;4496&quot; data-start=&quot;4426&quot; data-ke-size=&quot;size16&quot;&gt;합성곱 연산만 반복하면 CNN은 복잡한 문제를 잘 풀 수 없습니다. 이유는 합성곱 자체가 기본적으로 선형 연산이기 때문입니다.&lt;/p&gt;
&lt;p data-end=&quot;4575&quot; data-start=&quot;4498&quot; data-ke-size=&quot;size16&quot;&gt;선형 연산만 여러 번 쌓아도 결국 하나의 큰 선형 연산과 비슷한 효과밖에 내지 못합니다. 따라서 복잡한 이미지 패턴을 표현하기 어렵습니다.&lt;/p&gt;
&lt;p data-end=&quot;4602&quot; data-start=&quot;4577&quot; data-ke-size=&quot;size16&quot;&gt;이를 해결하기 위해 활성화 함수를 사용합니다.&lt;/p&gt;
&lt;p data-end=&quot;4687&quot; data-start=&quot;4604&quot; data-ke-size=&quot;size16&quot;&gt;활성화 함수는 합성곱 결과에 비선형성을 추가합니다. 비선형성이 있어야 CNN은 단순한 선, 모서리뿐 아니라 복잡한 물체 형태까지 학습할 수 있습니다.&lt;/p&gt;
&lt;h1 data-end=&quot;4703&quot; data-start=&quot;4689&quot; data-section-id=&quot;hvky46&quot;&gt;14. ReLU의 역할&lt;/h1&gt;
&lt;p data-end=&quot;4738&quot; data-start=&quot;4705&quot; data-ke-size=&quot;size16&quot;&gt;CNN에서 가장 많이 사용되는 활성화 함수는 ReLU입니다.&lt;/p&gt;
&lt;p data-end=&quot;4778&quot; data-start=&quot;4740&quot; data-ke-size=&quot;size16&quot;&gt;ReLU는 양수 값은 그대로 통과시키고, 음수 값은 0으로 만듭니다.&lt;/p&gt;
&lt;p data-end=&quot;4797&quot; data-start=&quot;4780&quot; data-ke-size=&quot;size16&quot;&gt;이것의 의미는 다음과 같습니다.&lt;/p&gt;
&lt;p data-end=&quot;4838&quot; data-start=&quot;4799&quot; data-ke-size=&quot;size16&quot;&gt;특정 필터가 어떤 위치에서 패턴을 강하게 감지하면 그 값은 유지합니다.&lt;/p&gt;
&lt;p data-end=&quot;4869&quot; data-start=&quot;4840&quot; data-ke-size=&quot;size16&quot;&gt;패턴이 없거나 반대로 나타난 위치는 0으로 만듭니다.&lt;/p&gt;
&lt;p data-end=&quot;4889&quot; data-start=&quot;4871&quot; data-ke-size=&quot;size16&quot;&gt;불필요한 음수 반응을 제거합니다.&lt;/p&gt;
&lt;p data-end=&quot;4903&quot; data-start=&quot;4891&quot; data-ke-size=&quot;size16&quot;&gt;계산이 매우 빠릅니다.&lt;/p&gt;
&lt;p data-end=&quot;4926&quot; data-start=&quot;4905&quot; data-ke-size=&quot;size16&quot;&gt;gradient가 비교적 잘 흐릅니다.&lt;/p&gt;
&lt;p data-end=&quot;5018&quot; data-start=&quot;4928&quot; data-ke-size=&quot;size16&quot;&gt;ReLU를 사용하면 feature map이 더 희소해집니다. 즉 많은 위치가 0이 되고, 중요한 위치만 남습니다. 이것은 계산 효율과 특징 선택에 도움이 됩니다.&lt;/p&gt;
&lt;h1 data-end=&quot;5048&quot; data-start=&quot;5020&quot; data-section-id=&quot;yzzed1&quot;&gt;15. 활성화 이후 feature map의 의미&lt;/h1&gt;
&lt;p data-end=&quot;5086&quot; data-start=&quot;5050&quot; data-ke-size=&quot;size16&quot;&gt;합성곱 직후의 출력은 필터와 입력 영역의 일치 정도를 나타냅니다.&lt;/p&gt;
&lt;p data-end=&quot;5137&quot; data-start=&quot;5088&quot; data-ke-size=&quot;size16&quot;&gt;활성화 함수를 거친 뒤에는 &amp;ldquo;해당 특징이 실제로 의미 있게 존재하는 위치&amp;rdquo;만 강조됩니다.&lt;/p&gt;
&lt;p data-end=&quot;5220&quot; data-start=&quot;5139&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 어떤 필터가 눈 모양을 찾는 필터라면, ReLU 이후에는 눈 모양이 있다고 판단되는 위치만 양수로 남고 나머지는 0이 될 수 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;5287&quot; data-start=&quot;5222&quot; data-ke-size=&quot;size16&quot;&gt;따라서 활성화 함수는 단순한 숫자 변환이 아니라, CNN이 어떤 특징을 중요하게 볼지 결정하는 데 큰 역할을 합니다.&lt;/p&gt;
&lt;h1 data-end=&quot;5306&quot; data-start=&quot;5289&quot; data-section-id=&quot;1da0nt2&quot;&gt;16. Pooling의 역할&lt;/h1&gt;
&lt;p data-end=&quot;5347&quot; data-start=&quot;5308&quot; data-ke-size=&quot;size16&quot;&gt;Pooling은 feature map의 공간 크기를 줄이는 연산입니다.&lt;/p&gt;
&lt;p data-end=&quot;5417&quot; data-start=&quot;5349&quot; data-ke-size=&quot;size16&quot;&gt;이미지에서 특징이 정확히 어느 픽셀에 있는지도 중요하지만, 많은 경우에는 &amp;ldquo;대략 어느 영역에 있는지&amp;rdquo;만 알아도 충분합니다.&lt;/p&gt;
&lt;p data-end=&quot;5495&quot; data-start=&quot;5419&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 고양이 귀가 이미지의 왼쪽 위에 조금 있든, 왼쪽 위에서 몇 픽셀 아래에 있든, 여전히 고양이 귀라는 사실은 변하지 않습니다.&lt;/p&gt;
&lt;p data-end=&quot;5534&quot; data-start=&quot;5497&quot; data-ke-size=&quot;size16&quot;&gt;Pooling은 이런 작은 위치 변화에 덜 민감하게 만들어 줍니다.&lt;/p&gt;
&lt;p data-end=&quot;5558&quot; data-start=&quot;5536&quot; data-ke-size=&quot;size16&quot;&gt;Pooling의 목적은 다음과 같습니다.&lt;/p&gt;
&lt;p data-end=&quot;5572&quot; data-start=&quot;5560&quot; data-ke-size=&quot;size16&quot;&gt;공간 크기를 줄입니다.&lt;/p&gt;
&lt;p data-end=&quot;5584&quot; data-start=&quot;5574&quot; data-ke-size=&quot;size16&quot;&gt;계산량을 줄입니다.&lt;/p&gt;
&lt;p data-end=&quot;5599&quot; data-start=&quot;5586&quot; data-ke-size=&quot;size16&quot;&gt;중요한 특징만 남깁니다.&lt;/p&gt;
&lt;p data-end=&quot;5624&quot; data-start=&quot;5601&quot; data-ke-size=&quot;size16&quot;&gt;작은 위치 변화에 대한 안정성을 높입니다.&lt;/p&gt;
&lt;p data-end=&quot;5645&quot; data-start=&quot;5626&quot; data-ke-size=&quot;size16&quot;&gt;과적합을 줄이는 데 도움을 줍니다.&lt;/p&gt;
&lt;h1 data-end=&quot;5664&quot; data-start=&quot;5647&quot; data-section-id=&quot;14l4vqe&quot;&gt;17. Max Pooling&lt;/h1&gt;
&lt;p data-end=&quot;5703&quot; data-start=&quot;5666&quot; data-ke-size=&quot;size16&quot;&gt;Max Pooling은 작은 영역 안에서 가장 큰 값만 선택합니다.&lt;/p&gt;
&lt;p data-end=&quot;5718&quot; data-start=&quot;5705&quot; data-ke-size=&quot;size16&quot;&gt;의미는 다음과 같습니다.&lt;/p&gt;
&lt;p data-end=&quot;5773&quot; data-start=&quot;5720&quot; data-ke-size=&quot;size16&quot;&gt;어떤 영역 안에서 특정 특징이 한 번이라도 강하게 나타났다면, 그 특징이 존재한다고 판단합니다.&lt;/p&gt;
&lt;p data-end=&quot;5841&quot; data-start=&quot;5775&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 2&amp;times;2 영역 안에 네 개의 값이 있을 때, 가장 큰 값 하나만 다음 층으로 보냅니다. 나머지 값은 버립니다.&lt;/p&gt;
&lt;p data-end=&quot;5896&quot; data-start=&quot;5843&quot; data-ke-size=&quot;size16&quot;&gt;Max Pooling은 특징의 존재 여부를 강조합니다. 그래서 CNN에서 매우 자주 사용됩니다.&lt;/p&gt;
&lt;p data-end=&quot;5976&quot; data-start=&quot;5898&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 어떤 영역 안에 모서리 반응이 강하게 나타났다면, 정확한 위치는 조금 버리더라도 &amp;ldquo;이 영역에 모서리가 있다&amp;rdquo;는 정보를 유지합니다.&lt;/p&gt;
&lt;h1 data-end=&quot;5999&quot; data-start=&quot;5978&quot; data-section-id=&quot;1kikace&quot;&gt;18. Average Pooling&lt;/h1&gt;
&lt;p data-end=&quot;6037&quot; data-start=&quot;6001&quot; data-ke-size=&quot;size16&quot;&gt;Average Pooling은 작은 영역 안의 값들을 평균냅니다.&lt;/p&gt;
&lt;p data-end=&quot;6105&quot; data-start=&quot;6039&quot; data-ke-size=&quot;size16&quot;&gt;Max Pooling이 가장 강한 특징 하나를 선택한다면, Average Pooling은 전체적인 평균 반응을 봅니다.&lt;/p&gt;
&lt;p data-end=&quot;6144&quot; data-start=&quot;6107&quot; data-ke-size=&quot;size16&quot;&gt;Average Pooling은 다음과 같은 경우에 의미가 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;6160&quot; data-start=&quot;6146&quot; data-ke-size=&quot;size16&quot;&gt;전체적인 분포가 중요할 때&lt;/p&gt;
&lt;p data-end=&quot;6198&quot; data-start=&quot;6162&quot; data-ke-size=&quot;size16&quot;&gt;너무 강한 하나의 값보다 영역 전체의 평균적 특징을 보고 싶을 때&lt;/p&gt;
&lt;p data-end=&quot;6234&quot; data-start=&quot;6200&quot; data-ke-size=&quot;size16&quot;&gt;마지막 단계에서 전체 feature map을 요약하고 싶을 때&lt;/p&gt;
&lt;p data-end=&quot;6341&quot; data-start=&quot;6236&quot; data-ke-size=&quot;size16&quot;&gt;특히 Global Average Pooling은 CNN의 마지막 부분에서 자주 사용됩니다. 전체 feature map을 하나의 평균값으로 줄여 각 채널이 얼마나 활성화되었는지를 요약합니다.&lt;/p&gt;
&lt;h1 data-end=&quot;6362&quot; data-start=&quot;6343&quot; data-section-id=&quot;fwm7hx&quot;&gt;19. 여러 합성곱 블록의 반복&lt;/h1&gt;
&lt;p data-end=&quot;6399&quot; data-start=&quot;6364&quot; data-ke-size=&quot;size16&quot;&gt;실제 CNN은 합성곱, 활성화, 풀링을 한 번만 하지 않습니다.&lt;/p&gt;
&lt;p data-end=&quot;6426&quot; data-start=&quot;6401&quot; data-ke-size=&quot;size16&quot;&gt;보통 다음과 같은 블록을 여러 번 반복합니다.&lt;/p&gt;
&lt;p data-end=&quot;6454&quot; data-start=&quot;6428&quot; data-ke-size=&quot;size16&quot;&gt;합성곱 &amp;rarr; 활성화 &amp;rarr; 합성곱 &amp;rarr; 활성화 &amp;rarr; 풀링&lt;/p&gt;
&lt;p data-end=&quot;6458&quot; data-start=&quot;6456&quot; data-ke-size=&quot;size16&quot;&gt;또는&lt;/p&gt;
&lt;p data-end=&quot;6483&quot; data-start=&quot;6460&quot; data-ke-size=&quot;size16&quot;&gt;합성곱 &amp;rarr; 배치 정규화 &amp;rarr; 활성화 &amp;rarr; 풀링&lt;/p&gt;
&lt;p data-end=&quot;6544&quot; data-start=&quot;6485&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 여러 층을 쌓는 이유는 낮은 수준의 특징에서 높은 수준의 특징으로 점진적으로 올라가기 위해서입니다.&lt;/p&gt;
&lt;h1 data-end=&quot;6760&quot; data-start=&quot;6735&quot; data-section-id=&quot;1tl7ncv&quot;&gt;20. Receptive Field의 의미&lt;/h1&gt;
&lt;p data-end=&quot;6825&quot; data-start=&quot;6762&quot; data-ke-size=&quot;size16&quot;&gt;Receptive field는 어떤 출력값 하나가 입력 이미지의 어느 정도 영역을 보고 만들어졌는지를 의미합니다.&lt;/p&gt;
&lt;p data-end=&quot;6892&quot; data-start=&quot;6827&quot; data-ke-size=&quot;size16&quot;&gt;초기 합성곱 층의 출력값 하나는 입력 이미지의 작은 영역만 봅니다. 예를 들어 3&amp;times;3 정도의 영역만 볼 수 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;6957&quot; data-start=&quot;6894&quot; data-ke-size=&quot;size16&quot;&gt;하지만 여러 합성곱 층과 풀링 층을 지나면, 깊은 층의 출력값 하나는 입력 이미지의 훨씬 넓은 영역을 반영합니다.&lt;/p&gt;
&lt;p data-end=&quot;7001&quot; data-start=&quot;6959&quot; data-ke-size=&quot;size16&quot;&gt;즉 깊은 층으로 갈수록 각 뉴런은 이미지의 더 넓은 문맥을 이해하게 됩니다.&lt;/p&gt;
&lt;p data-end=&quot;7020&quot; data-start=&quot;7003&quot; data-ke-size=&quot;size16&quot;&gt;초기 층: 작은 선, 점, 경계&lt;/p&gt;
&lt;p data-end=&quot;7034&quot; data-start=&quot;7022&quot; data-ke-size=&quot;size16&quot;&gt;중간 층: 물체의 일부&lt;/p&gt;
&lt;p data-end=&quot;7055&quot; data-start=&quot;7036&quot; data-ke-size=&quot;size16&quot;&gt;깊은 층: 물체 전체 또는 큰 구조&lt;/p&gt;
&lt;p data-end=&quot;7092&quot; data-start=&quot;7057&quot; data-ke-size=&quot;size16&quot;&gt;이것이 CNN이 계층적으로 특징을 학습한다고 말하는 이유입니다.&lt;/p&gt;
&lt;h1 data-end=&quot;7110&quot; data-start=&quot;7094&quot; data-section-id=&quot;bzznif&quot;&gt;21. Flatten 단계&lt;/h1&gt;
&lt;p data-end=&quot;7163&quot; data-start=&quot;7112&quot; data-ke-size=&quot;size16&quot;&gt;합성곱과 풀링을 여러 번 거치면, 출력은 여전히 여러 개의 feature map 형태입니다.&lt;/p&gt;
&lt;p data-end=&quot;7241&quot; data-start=&quot;7165&quot; data-ke-size=&quot;size16&quot;&gt;하지만 마지막 분류기에서는 보통 이 feature map들을 하나의 긴 벡터로 펼쳐서 사용합니다. 이 과정을 flatten이라고 합니다.&lt;/p&gt;
&lt;p data-end=&quot;7300&quot; data-start=&quot;7243&quot; data-ke-size=&quot;size16&quot;&gt;Flatten은 계산 자체가 복잡한 연산은 아닙니다. 단순히 다차원 배열을 일렬로 나열하는 작업입니다.&lt;/p&gt;
&lt;p data-end=&quot;7340&quot; data-start=&quot;7302&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 여러 장의 특징 지도를 한 줄의 긴 특징 벡터로 바꿉니다.&lt;/p&gt;
&lt;p data-end=&quot;7405&quot; data-start=&quot;7342&quot; data-ke-size=&quot;size16&quot;&gt;이 벡터에는 이미지에서 추출된 고수준 특징들이 들어 있습니다. 분류기는 이 벡터를 보고 최종 클래스를 판단합니다.&lt;/p&gt;
&lt;h1 data-end=&quot;7422&quot; data-start=&quot;7407&quot; data-section-id=&quot;3bjjew&quot;&gt;22. 완전연결층의 역할&lt;/h1&gt;
&lt;p data-end=&quot;7457&quot; data-start=&quot;7424&quot; data-ke-size=&quot;size16&quot;&gt;완전연결층은 추출된 특징을 바탕으로 최종 판단을 수행합니다.&lt;/p&gt;
&lt;p data-end=&quot;7495&quot; data-start=&quot;7459&quot; data-ke-size=&quot;size16&quot;&gt;합성곱 부분이 &amp;ldquo;특징 추출기&amp;rdquo;라면, 완전연결층은 &amp;ldquo;분류기&amp;rdquo;입니다.&lt;/p&gt;
&lt;p data-end=&quot;7531&quot; data-start=&quot;7497&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 CNN 앞부분이 다음 정보를 추출했다고 가정합니다.&lt;/p&gt;
&lt;p data-end=&quot;7542&quot; data-start=&quot;7533&quot; data-ke-size=&quot;size16&quot;&gt;둥근 귀가 있다.&lt;/p&gt;
&lt;p data-end=&quot;7556&quot; data-start=&quot;7544&quot; data-ke-size=&quot;size16&quot;&gt;수염 같은 선이 있다.&lt;/p&gt;
&lt;p data-end=&quot;7566&quot; data-start=&quot;7558&quot; data-ke-size=&quot;size16&quot;&gt;두 눈이 있다.&lt;/p&gt;
&lt;p data-end=&quot;7577&quot; data-start=&quot;7568&quot; data-ke-size=&quot;size16&quot;&gt;털 질감이 있다.&lt;/p&gt;
&lt;p data-end=&quot;7589&quot; data-start=&quot;7579&quot; data-ke-size=&quot;size16&quot;&gt;얼굴 형태가 있다.&lt;/p&gt;
&lt;p data-end=&quot;7632&quot; data-start=&quot;7591&quot; data-ke-size=&quot;size16&quot;&gt;완전연결층은 이 특징들을 종합해서 &amp;ldquo;고양이일 가능성이 높다&amp;rdquo;고 판단합니다.&lt;/p&gt;
&lt;p data-end=&quot;7662&quot; data-start=&quot;7634&quot; data-ke-size=&quot;size16&quot;&gt;즉 완전연결층은 추출된 특징들의 조합을 학습합니다.&lt;/p&gt;
&lt;h1 data-end=&quot;7679&quot; data-start=&quot;7664&quot; data-section-id=&quot;1qqjsi0&quot;&gt;23. Logit의 의미&lt;/h1&gt;
&lt;p data-end=&quot;7713&quot; data-start=&quot;7681&quot; data-ke-size=&quot;size16&quot;&gt;완전연결층의 마지막 출력은 보통 logit이라고 부릅니다.&lt;/p&gt;
&lt;p data-end=&quot;7751&quot; data-start=&quot;7715&quot; data-ke-size=&quot;size16&quot;&gt;Logit은 아직 확률이 아닙니다. 각 클래스에 대한 점수입니다.&lt;/p&gt;
&lt;p data-end=&quot;7785&quot; data-start=&quot;7753&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 모델이 세 가지 클래스를 분류한다고 가정합니다.&lt;/p&gt;
&lt;p data-end=&quot;7793&quot; data-start=&quot;7787&quot; data-ke-size=&quot;size16&quot;&gt;고양이 점수&lt;/p&gt;
&lt;p data-end=&quot;7801&quot; data-start=&quot;7795&quot; data-ke-size=&quot;size16&quot;&gt;강아지 점수&lt;/p&gt;
&lt;p data-end=&quot;7809&quot; data-start=&quot;7803&quot; data-ke-size=&quot;size16&quot;&gt;자동차 점수&lt;/p&gt;
&lt;p data-end=&quot;7867&quot; data-start=&quot;7811&quot; data-ke-size=&quot;size16&quot;&gt;이 점수들은 확률처럼 0부터 1 사이일 필요가 없습니다. 음수일 수도 있고 큰 양수일 수도 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;7904&quot; data-start=&quot;7869&quot; data-ke-size=&quot;size16&quot;&gt;이 logit을 확률로 바꾸기 위해 Softmax를 사용합니다.&lt;/p&gt;
&lt;h1 data-end=&quot;7923&quot; data-start=&quot;7906&quot; data-section-id=&quot;1m6kxcx&quot;&gt;24. Softmax의 역할&lt;/h1&gt;
&lt;p data-end=&quot;7969&quot; data-start=&quot;7925&quot; data-ke-size=&quot;size16&quot;&gt;Softmax는 여러 클래스 점수를 확률처럼 해석할 수 있게 바꾸는 함수입니다.&lt;/p&gt;
&lt;p data-end=&quot;8023&quot; data-start=&quot;7971&quot; data-ke-size=&quot;size16&quot;&gt;Softmax를 거치면 모든 클래스의 출력값이 0과 1 사이가 되고, 전체 합이 1이 됩니다.&lt;/p&gt;
&lt;p data-end=&quot;8054&quot; data-start=&quot;8025&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 최종 출력이 다음처럼 해석될 수 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;8065&quot; data-start=&quot;8056&quot; data-ke-size=&quot;size16&quot;&gt;고양이: 0.82&lt;/p&gt;
&lt;p data-end=&quot;8076&quot; data-start=&quot;8067&quot; data-ke-size=&quot;size16&quot;&gt;강아지: 0.15&lt;/p&gt;
&lt;p data-end=&quot;8087&quot; data-start=&quot;8078&quot; data-ke-size=&quot;size16&quot;&gt;자동차: 0.03&lt;/p&gt;
&lt;p data-end=&quot;8110&quot; data-start=&quot;8089&quot; data-ke-size=&quot;size16&quot;&gt;이 경우 모델은 고양이라고 예측합니다.&lt;/p&gt;
&lt;p data-end=&quot;8185&quot; data-start=&quot;8112&quot; data-ke-size=&quot;size16&quot;&gt;Softmax의 역할은 단순히 가장 큰 점수를 찾는 것이 아니라, 각 클래스에 대한 상대적 확신도를 확률 형태로 표현하는 것입니다.&lt;/p&gt;
&lt;h1 data-end=&quot;8202&quot; data-start=&quot;8187&quot; data-section-id=&quot;1ua36ym&quot;&gt;25. 손실 함수의 역할&lt;/h1&gt;
&lt;p data-end=&quot;8237&quot; data-start=&quot;8204&quot; data-ke-size=&quot;size16&quot;&gt;손실 함수는 모델의 예측이 정답과 얼마나 다른지 측정합니다.&lt;/p&gt;
&lt;p data-end=&quot;8286&quot; data-start=&quot;8239&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 정답은 고양이인데 모델이 강아지라고 높은 확률로 예측했다면 손실이 큽니다.&lt;/p&gt;
&lt;p data-end=&quot;8328&quot; data-start=&quot;8288&quot; data-ke-size=&quot;size16&quot;&gt;정답이 고양이이고 모델도 고양이에 높은 확률을 주었다면 손실이 작습니다.&lt;/p&gt;
&lt;p data-end=&quot;8368&quot; data-start=&quot;8330&quot; data-ke-size=&quot;size16&quot;&gt;분류 문제에서는 보통 Cross Entropy Loss를 사용합니다.&lt;/p&gt;
&lt;p data-end=&quot;8423&quot; data-start=&quot;8370&quot; data-ke-size=&quot;size16&quot;&gt;이 손실 함수는 정답 클래스에 모델이 얼마나 높은 확률을 주었는지를 기준으로 손실을 계산합니다.&lt;/p&gt;
&lt;p data-end=&quot;8452&quot; data-start=&quot;8425&quot; data-ke-size=&quot;size16&quot;&gt;정답 클래스의 확률이 높을수록 손실은 작아집니다.&lt;/p&gt;
&lt;p data-end=&quot;8480&quot; data-start=&quot;8454&quot; data-ke-size=&quot;size16&quot;&gt;정답 클래스의 확률이 낮을수록 손실은 커집니다.&lt;/p&gt;
&lt;p data-end=&quot;8521&quot; data-start=&quot;8482&quot; data-ke-size=&quot;size16&quot;&gt;손실은 학습의 기준입니다. 역전파는 이 손실을 줄이기 위해 진행됩니다.&lt;/p&gt;
&lt;h1 data-end=&quot;8538&quot; data-start=&quot;8523&quot; data-section-id=&quot;qbuald&quot;&gt;26. 순전파 전체 요약&lt;/h1&gt;
&lt;p data-end=&quot;8557&quot; data-start=&quot;8540&quot; data-ke-size=&quot;size16&quot;&gt;순전파는 다음 의미를 갖습니다.&lt;/p&gt;
&lt;p data-end=&quot;8578&quot; data-start=&quot;8559&quot; data-ke-size=&quot;size16&quot;&gt;이미지를 숫자 배열로 입력받습니다.&lt;/p&gt;
&lt;p data-end=&quot;8613&quot; data-start=&quot;8580&quot; data-ke-size=&quot;size16&quot;&gt;합성곱 필터가 이미지의 작은 영역을 훑으며 특징을 찾습니다.&lt;/p&gt;
&lt;p data-end=&quot;8656&quot; data-start=&quot;8615&quot; data-ke-size=&quot;size16&quot;&gt;각 필터는 특정 패턴이 어디에 있는지 feature map으로 표시합니다.&lt;/p&gt;
&lt;p data-end=&quot;8690&quot; data-start=&quot;8658&quot; data-ke-size=&quot;size16&quot;&gt;활성화 함수는 중요한 반응만 남기고 비선형성을 추가합니다.&lt;/p&gt;
&lt;p data-end=&quot;8721&quot; data-start=&quot;8692&quot; data-ke-size=&quot;size16&quot;&gt;풀링은 공간 크기를 줄이고 중요한 특징을 압축합니다.&lt;/p&gt;
&lt;p data-end=&quot;8762&quot; data-start=&quot;8723&quot; data-ke-size=&quot;size16&quot;&gt;이 과정을 여러 번 반복하면서 단순한 특징이 복잡한 특징으로 변합니다.&lt;/p&gt;
&lt;p data-end=&quot;8795&quot; data-start=&quot;8764&quot; data-ke-size=&quot;size16&quot;&gt;Flatten은 feature map을 벡터로 펼칩니다.&lt;/p&gt;
&lt;p data-end=&quot;8830&quot; data-start=&quot;8797&quot; data-ke-size=&quot;size16&quot;&gt;완전연결층은 특징 벡터를 바탕으로 클래스 점수를 계산합니다.&lt;/p&gt;
&lt;p data-end=&quot;8854&quot; data-start=&quot;8832&quot; data-ke-size=&quot;size16&quot;&gt;Softmax는 점수를 확률로 바꿉니다.&lt;/p&gt;
&lt;p data-end=&quot;8884&quot; data-start=&quot;8856&quot; data-ke-size=&quot;size16&quot;&gt;손실 함수는 예측 확률과 정답의 차이를 계산합니다.&lt;/p&gt;
&lt;h1 data-end=&quot;8899&quot; data-start=&quot;8886&quot; data-section-id=&quot;10g18og&quot;&gt;27. 역전파의 의미&lt;/h1&gt;
&lt;p data-end=&quot;8932&quot; data-start=&quot;8901&quot; data-ke-size=&quot;size16&quot;&gt;역전파는 모델이 틀린 이유를 거꾸로 추적하는 과정입니다.&lt;/p&gt;
&lt;p data-end=&quot;8963&quot; data-start=&quot;8934&quot; data-ke-size=&quot;size16&quot;&gt;순전파에서는 입력에서 출력 방향으로 정보가 흐릅니다.&lt;/p&gt;
&lt;p data-end=&quot;9000&quot; data-start=&quot;8965&quot; data-ke-size=&quot;size16&quot;&gt;역전파에서는 손실에서 입력 방향으로 gradient가 흐릅니다.&lt;/p&gt;
&lt;p data-end=&quot;9050&quot; data-start=&quot;9002&quot; data-ke-size=&quot;size16&quot;&gt;여기서 gradient는 &amp;ldquo;이 값이 조금 변하면 손실이 얼마나 변하는가&amp;rdquo;를 의미합니다.&lt;/p&gt;
&lt;p data-end=&quot;9085&quot; data-start=&quot;9052&quot; data-ke-size=&quot;size16&quot;&gt;즉 역전파는 각 파라미터에게 다음 질문을 던지는 과정입니다.&lt;/p&gt;
&lt;p data-end=&quot;9109&quot; data-start=&quot;9087&quot; data-ke-size=&quot;size16&quot;&gt;이 필터 값이 손실을 키웠는가 줄였는가?&lt;/p&gt;
&lt;p data-end=&quot;9139&quot; data-start=&quot;9111&quot; data-ke-size=&quot;size16&quot;&gt;이 bias가 예측 오류에 얼마나 영향을 주었는가?&lt;/p&gt;
&lt;p data-end=&quot;9173&quot; data-start=&quot;9141&quot; data-ke-size=&quot;size16&quot;&gt;이 feature map의 어떤 위치가 오답에 기여했는가?&lt;/p&gt;
&lt;p data-end=&quot;9201&quot; data-start=&quot;9175&quot; data-ke-size=&quot;size16&quot;&gt;어떤 입력 특징이 최종 판단에 영향을 주었는가?&lt;/p&gt;
&lt;p data-end=&quot;9232&quot; data-start=&quot;9203&quot; data-ke-size=&quot;size16&quot;&gt;이 질문의 답을 바탕으로 모델은 가중치를 수정합니다.&lt;/p&gt;
&lt;h1 data-end=&quot;9250&quot; data-start=&quot;9234&quot; data-section-id=&quot;1yq7cjv&quot;&gt;28. 역전파의 기본 원리&lt;/h1&gt;
&lt;p data-end=&quot;9270&quot; data-start=&quot;9252&quot; data-ke-size=&quot;size16&quot;&gt;역전파는 연쇄 법칙을 사용합니다.&lt;/p&gt;
&lt;p data-end=&quot;9347&quot; data-start=&quot;9272&quot; data-ke-size=&quot;size16&quot;&gt;하지만 수식 없이 말하면, 복잡한 계산을 여러 작은 단계로 나눈 뒤, 마지막 손실에서부터 각 단계의 책임을 거꾸로 계산하는 방식입니다.&lt;/p&gt;
&lt;p data-end=&quot;9372&quot; data-start=&quot;9349&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 다음 흐름이 있다고 가정합니다.&lt;/p&gt;
&lt;p data-end=&quot;9417&quot; data-start=&quot;9374&quot; data-ke-size=&quot;size16&quot;&gt;입력 &amp;rarr; 합성곱 &amp;rarr; ReLU &amp;rarr; Pooling &amp;rarr; 완전연결층 &amp;rarr; 출력 &amp;rarr; 손실&lt;/p&gt;
&lt;p data-end=&quot;9434&quot; data-start=&quot;9419&quot; data-ke-size=&quot;size16&quot;&gt;역전파는 반대로 진행됩니다.&lt;/p&gt;
&lt;p data-end=&quot;9479&quot; data-start=&quot;9436&quot; data-ke-size=&quot;size16&quot;&gt;손실 &amp;rarr; 출력 &amp;rarr; 완전연결층 &amp;rarr; Pooling &amp;rarr; ReLU &amp;rarr; 합성곱 &amp;rarr; 입력&lt;/p&gt;
&lt;p data-end=&quot;9555&quot; data-start=&quot;9481&quot; data-ke-size=&quot;size16&quot;&gt;각 단계는 자신이 순전파 때 어떤 계산을 했는지 기억하고 있다가, 역전파 때 그 계산에 맞게 gradient를 이전 단계로 넘깁니다.&lt;/p&gt;
&lt;h1 data-end=&quot;9576&quot; data-start=&quot;9557&quot; data-section-id=&quot;sbpt27&quot;&gt;29. 손실에서 시작하는 역전파&lt;/h1&gt;
&lt;p data-end=&quot;9597&quot; data-start=&quot;9578&quot; data-ke-size=&quot;size16&quot;&gt;역전파는 손실 함수에서 시작합니다.&lt;/p&gt;
&lt;p data-end=&quot;9661&quot; data-start=&quot;9599&quot; data-ke-size=&quot;size16&quot;&gt;손실 함수는 모델의 예측과 정답의 차이를 나타냅니다. 따라서 손실이 크다는 것은 모델이 많이 틀렸다는 뜻입니다.&lt;/p&gt;
&lt;p data-end=&quot;9712&quot; data-start=&quot;9663&quot; data-ke-size=&quot;size16&quot;&gt;역전파의 첫 단계는 &amp;ldquo;최종 출력이 어떻게 바뀌면 손실이 줄어드는가&amp;rdquo;를 계산하는 것입니다.&lt;/p&gt;
&lt;p data-end=&quot;9772&quot; data-start=&quot;9714&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 정답이 고양이인데 모델이 강아지 확률을 높게 주었다면, 역전파는 다음 방향의 신호를 만듭니다.&lt;/p&gt;
&lt;p data-end=&quot;9789&quot; data-start=&quot;9774&quot; data-ke-size=&quot;size16&quot;&gt;고양이 점수는 높여야 한다.&lt;/p&gt;
&lt;p data-end=&quot;9806&quot; data-start=&quot;9791&quot; data-ke-size=&quot;size16&quot;&gt;강아지 점수는 낮춰야 한다.&lt;/p&gt;
&lt;p data-end=&quot;9828&quot; data-start=&quot;9808&quot; data-ke-size=&quot;size16&quot;&gt;자동차 점수도 필요하면 낮춰야 한다.&lt;/p&gt;
&lt;p data-end=&quot;9858&quot; data-start=&quot;9830&quot; data-ke-size=&quot;size16&quot;&gt;이 신호가 뒤쪽 계층에서 앞쪽 계층으로 전달됩니다.&lt;/p&gt;
&lt;h1 data-end=&quot;9896&quot; data-start=&quot;9860&quot; data-section-id=&quot;1czeimx&quot;&gt;30. Softmax와 Cross Entropy의 역전파 의미&lt;/h1&gt;
&lt;p data-end=&quot;9953&quot; data-start=&quot;9898&quot; data-ke-size=&quot;size16&quot;&gt;Softmax와 Cross Entropy를 함께 사용하면 역전파 신호가 매우 직관적으로 해석됩니다.&lt;/p&gt;
&lt;p data-end=&quot;10001&quot; data-start=&quot;9955&quot; data-ke-size=&quot;size16&quot;&gt;각 클래스에 대해 모델의 예측 확률과 실제 정답의 차이가 gradient가 됩니다.&lt;/p&gt;
&lt;p data-end=&quot;10047&quot; data-start=&quot;10003&quot; data-ke-size=&quot;size16&quot;&gt;정답 클래스의 예측 확률이 낮으면, 그 클래스 점수를 올리라는 신호가 생깁니다.&lt;/p&gt;
&lt;p data-end=&quot;10097&quot; data-start=&quot;10049&quot; data-ke-size=&quot;size16&quot;&gt;정답이 아닌 클래스의 예측 확률이 높으면, 그 클래스 점수를 낮추라는 신호가 생깁니다.&lt;/p&gt;
&lt;p data-end=&quot;10138&quot; data-start=&quot;10099&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 정답은 고양이인데 모델이 다음과 같이 예측했다고 가정합니다.&lt;/p&gt;
&lt;p data-end=&quot;10147&quot; data-start=&quot;10140&quot; data-ke-size=&quot;size16&quot;&gt;고양이: 낮음&lt;/p&gt;
&lt;p data-end=&quot;10156&quot; data-start=&quot;10149&quot; data-ke-size=&quot;size16&quot;&gt;강아지: 높음&lt;/p&gt;
&lt;p data-end=&quot;10168&quot; data-start=&quot;10158&quot; data-ke-size=&quot;size16&quot;&gt;자동차: 조금 높음&lt;/p&gt;
&lt;p data-end=&quot;10195&quot; data-start=&quot;10170&quot; data-ke-size=&quot;size16&quot;&gt;그러면 역전파는 다음과 같은 방향을 만듭니다.&lt;/p&gt;
&lt;p data-end=&quot;10217&quot; data-start=&quot;10197&quot; data-ke-size=&quot;size16&quot;&gt;고양이로 이어지는 연결을 강화합니다.&lt;/p&gt;
&lt;p data-end=&quot;10243&quot; data-start=&quot;10219&quot; data-ke-size=&quot;size16&quot;&gt;강아지로 이어지는 잘못된 연결을 약화합니다.&lt;/p&gt;
&lt;p data-end=&quot;10270&quot; data-start=&quot;10245&quot; data-ke-size=&quot;size16&quot;&gt;자동차로 이어지는 불필요한 연결도 조정합니다.&lt;/p&gt;
&lt;h1 data-end=&quot;10287&quot; data-start=&quot;10272&quot; data-section-id=&quot;bgem2&quot;&gt;31. 완전연결층 역전파&lt;/h1&gt;
&lt;p data-end=&quot;10333&quot; data-start=&quot;10289&quot; data-ke-size=&quot;size16&quot;&gt;완전연결층에서는 입력 특징 벡터와 가중치가 결합되어 클래스 점수가 만들어집니다.&lt;/p&gt;
&lt;p data-end=&quot;10354&quot; data-start=&quot;10335&quot; data-ke-size=&quot;size16&quot;&gt;역전파에서는 세 가지를 계산합니다.&lt;/p&gt;
&lt;p data-end=&quot;10391&quot; data-start=&quot;10356&quot; data-ke-size=&quot;size16&quot;&gt;첫째, 완전연결층의 가중치를 어떻게 수정해야 하는지 계산합니다.&lt;/p&gt;
&lt;p data-end=&quot;10429&quot; data-start=&quot;10393&quot; data-ke-size=&quot;size16&quot;&gt;둘째, 완전연결층의 bias를 어떻게 수정해야 하는지 계산합니다.&lt;/p&gt;
&lt;p data-end=&quot;10479&quot; data-start=&quot;10431&quot; data-ke-size=&quot;size16&quot;&gt;셋째, 이전 단계인 flatten된 feature 벡터로 gradient를 전달합니다.&lt;/p&gt;
&lt;p data-end=&quot;10530&quot; data-start=&quot;10481&quot; data-ke-size=&quot;size16&quot;&gt;완전연결층의 가중치는 &amp;ldquo;어떤 특징이 어떤 클래스 판단에 얼마나 기여했는지&amp;rdquo;를 나타냅니다.&lt;/p&gt;
&lt;p data-end=&quot;10592&quot; data-start=&quot;10532&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 어떤 특징이 고양이 판단에 사용되었는데 실제로 정답도 고양이라면, 그 연결은 강화될 수 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;10646&quot; data-start=&quot;10594&quot; data-ke-size=&quot;size16&quot;&gt;반대로 어떤 특징이 강아지 판단에 강하게 기여했지만 정답이 고양이라면, 그 연결은 약화됩니다.&lt;/p&gt;
&lt;p data-end=&quot;10683&quot; data-start=&quot;10648&quot; data-ke-size=&quot;size16&quot;&gt;즉 완전연결층 역전파는 특징과 클래스 사이의 관계를 조정합니다.&lt;/p&gt;
&lt;h1 data-end=&quot;10702&quot; data-start=&quot;10685&quot; data-section-id=&quot;1j6ubws&quot;&gt;32. Flatten 역전파&lt;/h1&gt;
&lt;p data-end=&quot;10744&quot; data-start=&quot;10704&quot; data-ke-size=&quot;size16&quot;&gt;Flatten은 순전파에서 feature map을 긴 벡터로 바꿨습니다.&lt;/p&gt;
&lt;p data-end=&quot;10801&quot; data-start=&quot;10746&quot; data-ke-size=&quot;size16&quot;&gt;역전파에서는 이 벡터 형태의 gradient를 다시 원래 feature map 모양으로 되돌립니다.&lt;/p&gt;
&lt;p data-end=&quot;10888&quot; data-start=&quot;10803&quot; data-ke-size=&quot;size16&quot;&gt;Flatten은 값을 계산해서 바꾸는 연산이 아니라 모양만 바꾸는 연산입니다. 따라서 역전파에서도 gradient 값 자체를 복잡하게 변형하지 않습니다.&lt;/p&gt;
&lt;p data-end=&quot;10947&quot; data-start=&quot;10890&quot; data-ke-size=&quot;size16&quot;&gt;단순히 &amp;ldquo;이 벡터의 각 원소가 원래 feature map의 어느 위치였는지&amp;rdquo;를 찾아서 다시 배치합니다.&lt;/p&gt;
&lt;h1 data-end=&quot;10970&quot; data-start=&quot;10949&quot; data-section-id=&quot;x7kpt5&quot;&gt;33. Pooling 역전파의 의미&lt;/h1&gt;
&lt;p data-end=&quot;11000&quot; data-start=&quot;10972&quot; data-ke-size=&quot;size16&quot;&gt;Pooling은 순전파에서 공간 정보를 줄였습니다.&lt;/p&gt;
&lt;p data-end=&quot;11050&quot; data-start=&quot;11002&quot; data-ke-size=&quot;size16&quot;&gt;역전파에서는 줄어든 gradient를 원래 pooling 이전 크기로 되돌려야 합니다.&lt;/p&gt;
&lt;p data-end=&quot;11091&quot; data-start=&quot;11052&quot; data-ke-size=&quot;size16&quot;&gt;Pooling 방식에 따라 gradient를 되돌리는 방법이 다릅니다.&lt;/p&gt;
&lt;p data-end=&quot;11135&quot; data-start=&quot;11093&quot; data-ke-size=&quot;size16&quot;&gt;Max Pooling은 최댓값이 선택된 위치로만 gradient를 보냅니다.&lt;/p&gt;
&lt;p data-end=&quot;11183&quot; data-start=&quot;11137&quot; data-ke-size=&quot;size16&quot;&gt;Average Pooling은 해당 영역 전체에 gradient를 나누어 보냅니다.&lt;/p&gt;
&lt;h1 data-end=&quot;11206&quot; data-start=&quot;11185&quot; data-section-id=&quot;mhma9u&quot;&gt;34. Max Pooling 역전파&lt;/h1&gt;
&lt;p data-end=&quot;11252&quot; data-start=&quot;11208&quot; data-ke-size=&quot;size16&quot;&gt;Max Pooling은 순전파 때 각 영역에서 가장 큰 값 하나만 선택했습니다.&lt;/p&gt;
&lt;p data-end=&quot;11283&quot; data-start=&quot;11254&quot; data-ke-size=&quot;size16&quot;&gt;따라서 역전파에서도 그 선택된 위치만 책임을 집니다.&lt;/p&gt;
&lt;p data-end=&quot;11387&quot; data-start=&quot;11285&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 2&amp;times;2 영역에서 네 값 중 하나가 가장 커서 출력으로 선택되었다면, 역전파 때 gradient는 그 위치로만 전달됩니다. 나머지 세 위치는 gradient를 받지 않습니다.&lt;/p&gt;
&lt;p data-end=&quot;11399&quot; data-start=&quot;11389&quot; data-ke-size=&quot;size16&quot;&gt;이유는 간단합니다.&lt;/p&gt;
&lt;p data-end=&quot;11490&quot; data-start=&quot;11401&quot; data-ke-size=&quot;size16&quot;&gt;순전파 결과에 실제로 영향을 준 값은 최댓값 하나뿐이기 때문입니다. 나머지 값들은 출력에 선택되지 않았으므로, 그 출력의 오류에 대한 직접적인 책임이 없습니다.&lt;/p&gt;
&lt;p data-end=&quot;11545&quot; data-start=&quot;11492&quot; data-ke-size=&quot;size16&quot;&gt;즉 Max Pooling 역전파는 &amp;ldquo;순전파 때 이긴 위치에게만 책임을 준다&amp;rdquo;고 이해하면 됩니다.&lt;/p&gt;
&lt;h1 data-end=&quot;11572&quot; data-start=&quot;11547&quot; data-section-id=&quot;10v1xo4&quot;&gt;35. Average Pooling 역전파&lt;/h1&gt;
&lt;p data-end=&quot;11616&quot; data-start=&quot;11574&quot; data-ke-size=&quot;size16&quot;&gt;Average Pooling은 순전파 때 영역 안의 모든 값을 평균냈습니다.&lt;/p&gt;
&lt;p data-end=&quot;11656&quot; data-start=&quot;11618&quot; data-ke-size=&quot;size16&quot;&gt;따라서 역전파에서는 해당 영역의 모든 값이 출력에 기여했다고 봅니다.&lt;/p&gt;
&lt;p data-end=&quot;11702&quot; data-start=&quot;11658&quot; data-ke-size=&quot;size16&quot;&gt;결과적으로 gradient는 영역 안의 모든 위치에 균등하게 나누어 전달됩니다.&lt;/p&gt;
&lt;p data-end=&quot;11763&quot; data-start=&quot;11704&quot; data-ke-size=&quot;size16&quot;&gt;즉 Average Pooling 역전파는 &amp;ldquo;모든 참여자가 동일하게 책임을 나눠 갖는다&amp;rdquo;고 이해하면 됩니다.&lt;/p&gt;
&lt;h1 data-end=&quot;11779&quot; data-start=&quot;11765&quot; data-section-id=&quot;3y4n1i&quot;&gt;36. ReLU 역전파&lt;/h1&gt;
&lt;p data-end=&quot;11818&quot; data-start=&quot;11781&quot; data-ke-size=&quot;size16&quot;&gt;ReLU는 순전파에서 양수는 통과시키고 음수는 0으로 만들었습니다.&lt;/p&gt;
&lt;p data-end=&quot;11859&quot; data-start=&quot;11820&quot; data-ke-size=&quot;size16&quot;&gt;역전파에서는 순전파 때 양수였던 위치만 gradient를 통과시킵니다.&lt;/p&gt;
&lt;p data-end=&quot;11931&quot; data-start=&quot;11861&quot; data-ke-size=&quot;size16&quot;&gt;순전파 때 값이 양수였다는 것은 해당 뉴런이 활성화되었다는 뜻입니다. 따라서 그 뉴런은 이후 출력에 영향을 줄 수 있었습니다.&lt;/p&gt;
&lt;p data-end=&quot;12023&quot; data-start=&quot;11933&quot; data-ke-size=&quot;size16&quot;&gt;반대로 순전파 때 값이 0 이하라서 ReLU에 의해 0이 된 위치는 이후 계산에 영향을 주지 못했습니다. 따라서 역전파 때도 gradient가 통과하지 않습니다.&lt;/p&gt;
&lt;p data-end=&quot;12055&quot; data-start=&quot;12025&quot; data-ke-size=&quot;size16&quot;&gt;즉 ReLU 역전파는 다음과 같이 이해할 수 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;12075&quot; data-start=&quot;12057&quot; data-ke-size=&quot;size16&quot;&gt;켜져 있던 뉴런은 책임을 받는다.&lt;/p&gt;
&lt;p data-end=&quot;12098&quot; data-start=&quot;12077&quot; data-ke-size=&quot;size16&quot;&gt;꺼져 있던 뉴런은 책임을 받지 않는다.&lt;/p&gt;
&lt;h1 data-end=&quot;12127&quot; data-start=&quot;12100&quot; data-section-id=&quot;13cepo0&quot;&gt;37. Sigmoid와 Tanh 역전파의 의미&lt;/h1&gt;
&lt;p data-end=&quot;12176&quot; data-start=&quot;12129&quot; data-ke-size=&quot;size16&quot;&gt;Sigmoid와 Tanh는 ReLU와 다르게 부드러운 곡선을 가진 활성화 함수입니다.&lt;/p&gt;
&lt;p data-end=&quot;12255&quot; data-start=&quot;12178&quot; data-ke-size=&quot;size16&quot;&gt;이 함수들은 입력이 너무 크거나 너무 작으면 출력이 거의 변하지 않는 구간에 들어갑니다. 이 구간에서는 gradient가 매우 작아집니다.&lt;/p&gt;
&lt;p data-end=&quot;12297&quot; data-start=&quot;12257&quot; data-ke-size=&quot;size16&quot;&gt;이것이 vanishing gradient 문제의 원인이 될 수 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;12404&quot; data-start=&quot;12299&quot; data-ke-size=&quot;size16&quot;&gt;CNN에서는 은닉층 활성화 함수로 Sigmoid나 Tanh보다 ReLU 계열이 더 많이 사용됩니다. ReLU는 계산이 빠르고, 양수 영역에서 gradient가 비교적 잘 흐르기 때문입니다.&lt;/p&gt;
&lt;h1 data-end=&quot;12426&quot; data-start=&quot;12406&quot; data-section-id=&quot;k3ruwv&quot;&gt;38. 합성곱 계층 역전파의 핵심&lt;/h1&gt;
&lt;p data-end=&quot;12454&quot; data-start=&quot;12428&quot; data-ke-size=&quot;size16&quot;&gt;합성곱 계층 역전파는 CNN 학습의 핵심입니다.&lt;/p&gt;
&lt;p data-end=&quot;12484&quot; data-start=&quot;12456&quot; data-ke-size=&quot;size16&quot;&gt;합성곱 계층에서는 다음 세 가지를 계산해야 합니다.&lt;/p&gt;
&lt;p data-end=&quot;12506&quot; data-start=&quot;12486&quot; data-ke-size=&quot;size16&quot;&gt;첫째, 필터를 어떻게 바꿔야 하는가.&lt;/p&gt;
&lt;p data-end=&quot;12530&quot; data-start=&quot;12508&quot; data-ke-size=&quot;size16&quot;&gt;둘째, bias를 어떻게 바꿔야 하는가.&lt;/p&gt;
&lt;p data-end=&quot;12565&quot; data-start=&quot;12532&quot; data-ke-size=&quot;size16&quot;&gt;셋째, 이전 계층으로 어떤 gradient를 보내야 하는가.&lt;/p&gt;
&lt;p data-end=&quot;12631&quot; data-start=&quot;12567&quot; data-ke-size=&quot;size16&quot;&gt;합성곱 계층의 필터는 이미지의 여러 위치에서 반복적으로 사용됩니다. 이것을 weight sharing이라고 합니다.&lt;/p&gt;
&lt;p data-end=&quot;12691&quot; data-start=&quot;12633&quot; data-ke-size=&quot;size16&quot;&gt;하나의 필터 값은 이미지의 한 위치에서만 쓰이는 것이 아니라, 필터가 이동하는 모든 위치에서 사용됩니다.&lt;/p&gt;
&lt;p data-end=&quot;12736&quot; data-start=&quot;12693&quot; data-ke-size=&quot;size16&quot;&gt;따라서 필터의 gradient는 모든 위치에서 받은 책임을 합쳐서 계산됩니다.&lt;/p&gt;
&lt;h1 data-end=&quot;12759&quot; data-start=&quot;12738&quot; data-section-id=&quot;1kvomeg&quot;&gt;39. 필터 gradient의 의미&lt;/h1&gt;
&lt;p data-end=&quot;12808&quot; data-start=&quot;12761&quot; data-ke-size=&quot;size16&quot;&gt;필터 gradient는 &amp;ldquo;이 필터 값이 손실에 얼마나 영향을 주었는지&amp;rdquo;를 나타냅니다.&lt;/p&gt;
&lt;p data-end=&quot;12909&quot; data-start=&quot;12810&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 어떤 필터가 고양이 귀를 잘 찾도록 학습되어야 하는데, 현재 필터가 엉뚱한 배경 패턴에 반응하고 있다면 역전파는 그 필터를 수정하는 방향의 gradient를 만듭니다.&lt;/p&gt;
&lt;p data-end=&quot;12940&quot; data-start=&quot;12911&quot; data-ke-size=&quot;size16&quot;&gt;필터가 올바른 특징에 반응하면 그 방향은 강화됩니다.&lt;/p&gt;
&lt;p data-end=&quot;12971&quot; data-start=&quot;12942&quot; data-ke-size=&quot;size16&quot;&gt;필터가 잘못된 특징에 반응하면 그 방향은 약화됩니다.&lt;/p&gt;
&lt;p data-end=&quot;13051&quot; data-start=&quot;12973&quot; data-ke-size=&quot;size16&quot;&gt;중요한 점은 필터 하나가 이미지 전체를 훑기 때문에, 필터 gradient는 이미지의 모든 위치에서의 반응을 종합해서 만들어진다는 것입니다.&lt;/p&gt;
&lt;p data-end=&quot;13108&quot; data-start=&quot;13053&quot; data-ke-size=&quot;size16&quot;&gt;즉 필터는 한 위치에서만 학습되는 것이 아니라, 전체 이미지와 전체 배치에서 반복적으로 학습됩니다.&lt;/p&gt;
&lt;h1 data-end=&quot;13133&quot; data-start=&quot;13110&quot; data-section-id=&quot;18wrwgb&quot;&gt;40. Bias gradient의 의미&lt;/h1&gt;
&lt;p data-end=&quot;13164&quot; data-start=&quot;13135&quot; data-ke-size=&quot;size16&quot;&gt;Bias는 필터의 출력 전체에 더해지는 기준값입니다.&lt;/p&gt;
&lt;p data-end=&quot;13220&quot; data-start=&quot;13166&quot; data-ke-size=&quot;size16&quot;&gt;역전파에서는 해당 필터의 모든 출력 위치에서 들어온 gradient를 모아 bias를 수정합니다.&lt;/p&gt;
&lt;p data-end=&quot;13276&quot; data-start=&quot;13222&quot; data-ke-size=&quot;size16&quot;&gt;만약 어떤 필터가 전체적으로 너무 쉽게 활성화되어 오답을 만든다면 bias가 낮아질 수 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;13329&quot; data-start=&quot;13278&quot; data-ke-size=&quot;size16&quot;&gt;반대로 어떤 필터가 필요한 상황에서도 잘 활성화되지 않는다면 bias가 높아질 수 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;13359&quot; data-start=&quot;13331&quot; data-ke-size=&quot;size16&quot;&gt;Bias는 필터의 민감도를 조절하는 역할을 합니다.&lt;/p&gt;
&lt;h1 data-end=&quot;13382&quot; data-start=&quot;13361&quot; data-section-id=&quot;z9wwsz&quot;&gt;41. 입력 gradient의 의미&lt;/h1&gt;
&lt;p data-end=&quot;13427&quot; data-start=&quot;13384&quot; data-ke-size=&quot;size16&quot;&gt;합성곱 계층은 이전 계층에서 받은 feature map을 입력으로 사용합니다.&lt;/p&gt;
&lt;p data-end=&quot;13467&quot; data-start=&quot;13429&quot; data-ke-size=&quot;size16&quot;&gt;역전파에서는 현재 계층의 오류 신호를 이전 계층으로 전달해야 합니다.&lt;/p&gt;
&lt;p data-end=&quot;13494&quot; data-start=&quot;13469&quot; data-ke-size=&quot;size16&quot;&gt;이를 위해 입력 gradient를 계산합니다.&lt;/p&gt;
&lt;p data-end=&quot;13556&quot; data-start=&quot;13496&quot; data-ke-size=&quot;size16&quot;&gt;입력 gradient는 &amp;ldquo;이전 계층의 어떤 위치가 현재 계층의 오류에 얼마나 영향을 주었는지&amp;rdquo;를 나타냅니다.&lt;/p&gt;
&lt;p data-end=&quot;13605&quot; data-start=&quot;13558&quot; data-ke-size=&quot;size16&quot;&gt;이 값은 다시 이전 계층의 활성화 함수, pooling, 합성곱 계층으로 전달됩니다.&lt;/p&gt;
&lt;p data-end=&quot;13653&quot; data-start=&quot;13607&quot; data-ke-size=&quot;size16&quot;&gt;즉 입력 gradient는 학습 신호를 더 앞쪽 계층으로 되돌려 보내는 통로입니다.&lt;/p&gt;
&lt;h1 data-end=&quot;13680&quot; data-start=&quot;13655&quot; data-section-id=&quot;12ropjz&quot;&gt;42. Weight Sharing과 역전파&lt;/h1&gt;
&lt;p data-end=&quot;13713&quot; data-start=&quot;13682&quot; data-ke-size=&quot;size16&quot;&gt;CNN의 중요한 특징은 weight sharing입니다.&lt;/p&gt;
&lt;p data-end=&quot;13782&quot; data-start=&quot;13715&quot; data-ke-size=&quot;size16&quot;&gt;완전연결층에서는 위치마다 다른 가중치를 사용할 수 있습니다. 하지만 합성곱에서는 하나의 필터가 이미지 전체에 공유됩니다.&lt;/p&gt;
&lt;p data-end=&quot;13826&quot; data-start=&quot;13784&quot; data-ke-size=&quot;size16&quot;&gt;이 때문에 CNN은 같은 패턴이 이미지 어디에 나타나도 감지할 수 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;13886&quot; data-start=&quot;13828&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 눈이라는 패턴은 이미지의 왼쪽에 있어도, 오른쪽에 있어도, 위쪽에 있어도 감지될 수 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;13910&quot; data-start=&quot;13888&quot; data-ke-size=&quot;size16&quot;&gt;역전파에서도 이 공유 구조가 반영됩니다.&lt;/p&gt;
&lt;p data-end=&quot;13976&quot; data-start=&quot;13912&quot; data-ke-size=&quot;size16&quot;&gt;하나의 필터는 여러 위치에서 사용되므로, 모든 위치에서 발생한 gradient가 하나의 필터 업데이트에 합산됩니다.&lt;/p&gt;
&lt;p data-end=&quot;14024&quot; data-start=&quot;13978&quot; data-ke-size=&quot;size16&quot;&gt;이것이 CNN이 파라미터 수를 줄이면서도 강력한 특징 추출 능력을 갖는 이유입니다.&lt;/p&gt;
&lt;h1 data-end=&quot;15195&quot; data-start=&quot;15176&quot; data-section-id=&quot;1xogmpb&quot;&gt;47. 한 번의 학습 반복 과정&lt;/h1&gt;
&lt;p data-end=&quot;15224&quot; data-start=&quot;15197&quot; data-ke-size=&quot;size16&quot;&gt;CNN 학습의 한 반복은 다음 순서로 진행됩니다.&lt;/p&gt;
&lt;p data-end=&quot;15244&quot; data-start=&quot;15226&quot; data-ke-size=&quot;size16&quot;&gt;첫째, 배치 데이터를 가져옵니다.&lt;/p&gt;
&lt;p data-end=&quot;15266&quot; data-start=&quot;15246&quot; data-ke-size=&quot;size16&quot;&gt;둘째, 이미지를 CNN에 입력합니다.&lt;/p&gt;
&lt;p data-end=&quot;15301&quot; data-start=&quot;15268&quot; data-ke-size=&quot;size16&quot;&gt;셋째, 합성곱, 활성화, 풀링 등을 거쳐 예측값을 만듭니다.&lt;/p&gt;
&lt;p data-end=&quot;15330&quot; data-start=&quot;15303&quot; data-ke-size=&quot;size16&quot;&gt;넷째, 예측값과 정답을 비교해 손실을 계산합니다.&lt;/p&gt;
&lt;p data-end=&quot;15355&quot; data-start=&quot;15332&quot; data-ke-size=&quot;size16&quot;&gt;다섯째, 손실에서부터 역전파를 수행합니다.&lt;/p&gt;
&lt;p data-end=&quot;15386&quot; data-start=&quot;15357&quot; data-ke-size=&quot;size16&quot;&gt;여섯째, 각 파라미터의 gradient를 계산합니다.&lt;/p&gt;
&lt;p data-end=&quot;15416&quot; data-start=&quot;15388&quot; data-ke-size=&quot;size16&quot;&gt;일곱째, optimizer가 파라미터를 수정합니다.&lt;/p&gt;
&lt;p data-end=&quot;15443&quot; data-start=&quot;15418&quot; data-ke-size=&quot;size16&quot;&gt;여덟째, 다음 배치에서 이 과정을 반복합니다.&lt;/p&gt;
&lt;p data-end=&quot;15496&quot; data-start=&quot;15445&quot; data-ke-size=&quot;size16&quot;&gt;이 과정을 수천 번, 수만 번 반복하면서 CNN은 점점 더 좋은 필터와 분류기를 학습합니다.&lt;/p&gt;
&lt;p data-end=&quot;16200&quot; data-start=&quot;16138&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1 data-end=&quot;16231&quot; data-start=&quot;16202&quot; data-section-id=&quot;15t28k8&quot;&gt;51. Batch Normalization의 역할&lt;/h1&gt;
&lt;p data-end=&quot;16286&quot; data-start=&quot;16233&quot; data-ke-size=&quot;size16&quot;&gt;Batch Normalization은 중간 feature map의 분포를 안정화하는 방법입니다.&lt;/p&gt;
&lt;p data-end=&quot;16381&quot; data-start=&quot;16288&quot; data-ke-size=&quot;size16&quot;&gt;신경망의 각 층은 앞 층의 출력 분포가 계속 바뀌면 학습하기 어렵습니다. Batch Normalization은 각 층의 입력 분포를 일정하게 맞춰 학습을 안정화합니다.&lt;/p&gt;
&lt;p data-end=&quot;16396&quot; data-start=&quot;16383&quot; data-ke-size=&quot;size16&quot;&gt;효과는 다음과 같습니다.&lt;/p&gt;
&lt;p data-end=&quot;16408&quot; data-start=&quot;16398&quot; data-ke-size=&quot;size16&quot;&gt;학습이 빨라집니다.&lt;/p&gt;
&lt;p data-end=&quot;16429&quot; data-start=&quot;16410&quot; data-ke-size=&quot;size16&quot;&gt;gradient 흐름이 안정됩니다.&lt;/p&gt;
&lt;p data-end=&quot;16445&quot; data-start=&quot;16431&quot; data-ke-size=&quot;size16&quot;&gt;초기값에 덜 민감해집니다.&lt;/p&gt;
&lt;p data-end=&quot;16464&quot; data-start=&quot;16447&quot; data-ke-size=&quot;size16&quot;&gt;약간의 정규화 효과도 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;16528&quot; data-start=&quot;16466&quot; data-ke-size=&quot;size16&quot;&gt;CNN에서는 합성곱 뒤, 활성화 함수 앞 또는 뒤에 Batch Normalization을 넣는 경우가 많습니다.&lt;/p&gt;
&lt;h1 data-end=&quot;16752&quot; data-start=&quot;16729&quot; data-section-id=&quot;1e1ylbw&quot;&gt;53. CNN이 위치 변화에 강한 이유&lt;/h1&gt;
&lt;p data-end=&quot;16780&quot; data-start=&quot;16754&quot; data-ke-size=&quot;size16&quot;&gt;CNN은 완전연결망보다 이미지 처리에 강합니다.&lt;/p&gt;
&lt;p data-end=&quot;16794&quot; data-start=&quot;16782&quot; data-ke-size=&quot;size16&quot;&gt;이유는 세 가지입니다.&lt;/p&gt;
&lt;p data-end=&quot;16841&quot; data-start=&quot;16796&quot; data-ke-size=&quot;size16&quot;&gt;첫째, 지역 연결입니다. CNN은 이미지의 작은 영역을 중심으로 특징을 찾습니다.&lt;/p&gt;
&lt;p data-end=&quot;16900&quot; data-start=&quot;16843&quot; data-ke-size=&quot;size16&quot;&gt;둘째, 가중치 공유입니다. 같은 필터가 이미지 전체를 훑으므로 같은 패턴을 어디서든 찾을 수 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;16949&quot; data-start=&quot;16902&quot; data-ke-size=&quot;size16&quot;&gt;셋째, 풀링입니다. 작은 위치 변화가 있어도 비슷한 특징 표현을 유지할 수 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;16982&quot; data-start=&quot;16951&quot; data-ke-size=&quot;size16&quot;&gt;이 때문에 CNN은 이미지의 공간 구조를 잘 활용합니다.&lt;/p&gt;
&lt;h1 data-end=&quot;17007&quot; data-start=&quot;16984&quot; data-section-id=&quot;1agg7ij&quot;&gt;54. CNN과 일반 완전연결망의 차이&lt;/h1&gt;
&lt;p data-end=&quot;17038&quot; data-start=&quot;17009&quot; data-ke-size=&quot;size16&quot;&gt;완전연결망은 이미지를 일렬 벡터로 펼쳐서 처리합니다.&lt;/p&gt;
&lt;p data-end=&quot;17110&quot; data-start=&quot;17040&quot; data-ke-size=&quot;size16&quot;&gt;이 경우 이미지의 위치 구조가 사라집니다. 예를 들어 서로 가까운 픽셀들이 원래 이웃이었다는 정보를 직접 활용하기 어렵습니다.&lt;/p&gt;
&lt;p data-end=&quot;17145&quot; data-start=&quot;17112&quot; data-ke-size=&quot;size16&quot;&gt;반면 CNN은 이미지의 2차원 구조를 유지한 채 처리합니다.&lt;/p&gt;
&lt;p data-end=&quot;17186&quot; data-start=&quot;17147&quot; data-ke-size=&quot;size16&quot;&gt;가까운 픽셀끼리 먼저 묶어서 보고, 필터를 통해 지역 패턴을 찾습니다.&lt;/p&gt;
&lt;p data-end=&quot;17225&quot; data-start=&quot;17188&quot; data-ke-size=&quot;size16&quot;&gt;또한 CNN은 필터를 공유하기 때문에 파라미터 수가 훨씬 적습니다.&lt;/p&gt;
&lt;p data-end=&quot;17255&quot; data-start=&quot;17227&quot; data-ke-size=&quot;size16&quot;&gt;따라서 이미지 처리에는 CNN이 훨씬 효율적입니다.&lt;/p&gt;
&lt;h1 data-end=&quot;17276&quot; data-start=&quot;17257&quot; data-section-id=&quot;mhyz1r&quot;&gt;55. 역전파에서 중요한 저장값&lt;/h1&gt;
&lt;p data-end=&quot;17308&quot; data-start=&quot;17278&quot; data-ke-size=&quot;size16&quot;&gt;역전파를 하려면 순전파 때의 중간값을 저장해야 합니다.&lt;/p&gt;
&lt;p data-end=&quot;17329&quot; data-start=&quot;17310&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 다음 정보가 필요합니다.&lt;/p&gt;
&lt;p data-end=&quot;17337&quot; data-start=&quot;17331&quot; data-ke-size=&quot;size16&quot;&gt;합성곱 입력&lt;/p&gt;
&lt;p data-end=&quot;17341&quot; data-start=&quot;17339&quot; data-ke-size=&quot;size16&quot;&gt;필터&lt;/p&gt;
&lt;p data-end=&quot;17349&quot; data-start=&quot;17343&quot; data-ke-size=&quot;size16&quot;&gt;합성곱 출력&lt;/p&gt;
&lt;p data-end=&quot;17362&quot; data-start=&quot;17351&quot; data-ke-size=&quot;size16&quot;&gt;ReLU 적용 전 값&lt;/p&gt;
&lt;p data-end=&quot;17385&quot; data-start=&quot;17364&quot; data-ke-size=&quot;size16&quot;&gt;Pooling에서 최댓값이 선택된 위치&lt;/p&gt;
&lt;p data-end=&quot;17407&quot; data-start=&quot;17387&quot; data-ke-size=&quot;size16&quot;&gt;Flatten 이전의 원래 shape&lt;/p&gt;
&lt;p data-end=&quot;17417&quot; data-start=&quot;17409&quot; data-ke-size=&quot;size16&quot;&gt;완전연결층 입력&lt;/p&gt;
&lt;p data-end=&quot;17429&quot; data-start=&quot;17419&quot; data-ke-size=&quot;size16&quot;&gt;Softmax 출력&lt;/p&gt;
&lt;p data-end=&quot;17472&quot; data-start=&quot;17431&quot; data-ke-size=&quot;size16&quot;&gt;이 값들이 있어야 역전파 때 gradient를 정확히 계산할 수 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;17557&quot; data-start=&quot;17474&quot; data-ke-size=&quot;size16&quot;&gt;그래서 학습 중에는 추론보다 메모리를 더 많이 사용합니다. 추론은 순전파만 하면 되지만, 학습은 역전파를 위해 중간 결과를 저장해야 하기 때문입니다.&lt;/p&gt;
&lt;h1 data-end=&quot;17936&quot; data-start=&quot;17910&quot; data-section-id=&quot;m5xan8&quot;&gt;57. CNN 학습이 진행되며 일어나는 변화&lt;/h1&gt;
&lt;p data-end=&quot;17979&quot; data-start=&quot;17938&quot; data-ke-size=&quot;size16&quot;&gt;학습 초기에는 필터가 무작위이므로 feature map도 의미가 없습니다.&lt;/p&gt;
&lt;p data-end=&quot;18002&quot; data-start=&quot;17981&quot; data-ke-size=&quot;size16&quot;&gt;모델의 예측은 거의 랜덤에 가깝습니다.&lt;/p&gt;
&lt;p data-end=&quot;18024&quot; data-start=&quot;18004&quot; data-ke-size=&quot;size16&quot;&gt;손실이 크고, 역전파 신호도 큽니다.&lt;/p&gt;
&lt;p data-end=&quot;18063&quot; data-start=&quot;18026&quot; data-ke-size=&quot;size16&quot;&gt;학습이 진행되면 필터가 점점 의미 있는 패턴에 반응하기 시작합니다.&lt;/p&gt;
&lt;p data-end=&quot;18083&quot; data-start=&quot;18065&quot; data-ke-size=&quot;size16&quot;&gt;초기 층은 선과 경계를 찾습니다.&lt;/p&gt;
&lt;p data-end=&quot;18107&quot; data-start=&quot;18085&quot; data-ke-size=&quot;size16&quot;&gt;중간 층은 모양과 부분 구조를 찾습니다.&lt;/p&gt;
&lt;p data-end=&quot;18140&quot; data-start=&quot;18109&quot; data-ke-size=&quot;size16&quot;&gt;깊은 층은 클래스 구분에 중요한 고수준 특징을 찾습니다.&lt;/p&gt;
&lt;p data-end=&quot;18190&quot; data-start=&quot;18142&quot; data-ke-size=&quot;size16&quot;&gt;마지막 분류기는 이 특징들을 조합하여 정답 클래스의 점수를 높이는 방향으로 학습됩니다.&lt;/p&gt;
&lt;h1 data-end=&quot;18218&quot; data-start=&quot;18192&quot; data-section-id=&quot;13rdmcy&quot;&gt;58. CNN 순전파와 역전파를 비유로 설명&lt;/h1&gt;
&lt;p data-end=&quot;18260&quot; data-start=&quot;18220&quot; data-ke-size=&quot;size16&quot;&gt;CNN 순전파는 검사관들이 이미지를 단계별로 분석하는 과정과 비슷합니다.&lt;/p&gt;
&lt;p data-end=&quot;18285&quot; data-start=&quot;18262&quot; data-ke-size=&quot;size16&quot;&gt;첫 번째 검사관은 선과 모서리를 찾습니다.&lt;/p&gt;
&lt;p data-end=&quot;18331&quot; data-start=&quot;18287&quot; data-ke-size=&quot;size16&quot;&gt;두 번째 검사관은 선과 모서리를 조합해서 눈, 코, 바퀴 같은 부품을 찾습니다.&lt;/p&gt;
&lt;p data-end=&quot;18381&quot; data-start=&quot;18333&quot; data-ke-size=&quot;size16&quot;&gt;세 번째 검사관은 부품들을 조합해서 얼굴, 자동차, 동물 같은 더 큰 구조를 찾습니다.&lt;/p&gt;
&lt;p data-end=&quot;18412&quot; data-start=&quot;18383&quot; data-ke-size=&quot;size16&quot;&gt;마지막 판정관은 이 정보를 보고 최종 결론을 냅니다.&lt;/p&gt;
&lt;p data-end=&quot;18446&quot; data-start=&quot;18414&quot; data-ke-size=&quot;size16&quot;&gt;역전파는 판정이 틀렸을 때 책임을 되돌려 묻는 과정입니다.&lt;/p&gt;
&lt;p data-end=&quot;18469&quot; data-start=&quot;18448&quot; data-ke-size=&quot;size16&quot;&gt;최종 판정관이 왜 틀렸는지 확인합니다.&lt;/p&gt;
&lt;p data-end=&quot;18497&quot; data-start=&quot;18471&quot; data-ke-size=&quot;size16&quot;&gt;그 판정에 영향을 준 고수준 특징을 확인합니다.&lt;/p&gt;
&lt;p data-end=&quot;18525&quot; data-start=&quot;18499&quot; data-ke-size=&quot;size16&quot;&gt;그 고수준 특징을 만든 중간 특징을 확인합니다.&lt;/p&gt;
&lt;p data-end=&quot;18549&quot; data-start=&quot;18527&quot; data-ke-size=&quot;size16&quot;&gt;그 중간 특징을 만든 필터를 확인합니다.&lt;/p&gt;
&lt;p data-end=&quot;18587&quot; data-start=&quot;18551&quot; data-ke-size=&quot;size16&quot;&gt;각 필터에게 &amp;ldquo;다음에는 이 방향으로 조금 수정하라&amp;rdquo;고 지시합니다.&lt;/p&gt;
&lt;p data-end=&quot;18626&quot; data-start=&quot;18589&quot; data-ke-size=&quot;size16&quot;&gt;이 과정을 반복하면 CNN은 점점 더 정확한 검사관 집단이 됩니다.&lt;/p&gt;
&lt;h1 data-end=&quot;18645&quot; data-start=&quot;18628&quot; data-section-id=&quot;ye3h5s&quot;&gt;59. 전체 흐름 최종 정리&lt;/h1&gt;
&lt;p data-end=&quot;18708&quot; data-start=&quot;18647&quot; data-ke-size=&quot;size16&quot;&gt;CNN의 순전파는 이미지를 입력받아 특징을 단계적으로 추출하고, 최종적으로 클래스 확률을 출력하는 과정입니다.&lt;/p&gt;
&lt;p data-end=&quot;18734&quot; data-start=&quot;18710&quot; data-ke-size=&quot;size16&quot;&gt;합성곱은 작은 필터로 지역 특징을 찾습니다.&lt;/p&gt;
&lt;p data-end=&quot;18768&quot; data-start=&quot;18736&quot; data-ke-size=&quot;size16&quot;&gt;활성화 함수는 중요한 반응을 남기고 비선형성을 추가합니다.&lt;/p&gt;
&lt;p data-end=&quot;18799&quot; data-start=&quot;18770&quot; data-ke-size=&quot;size16&quot;&gt;풀링은 특징을 압축하고 위치 변화에 강하게 만듭니다.&lt;/p&gt;
&lt;p data-end=&quot;18835&quot; data-start=&quot;18801&quot; data-ke-size=&quot;size16&quot;&gt;여러 층을 반복하면 단순한 특징이 복잡한 특징으로 발전합니다.&lt;/p&gt;
&lt;p data-end=&quot;18882&quot; data-start=&quot;18837&quot; data-ke-size=&quot;size16&quot;&gt;Flatten은 feature map을 분류기가 사용할 수 있는 벡터로 바꿉니다.&lt;/p&gt;
&lt;p data-end=&quot;18918&quot; data-start=&quot;18884&quot; data-ke-size=&quot;size16&quot;&gt;완전연결층은 추출된 특징을 바탕으로 클래스 점수를 계산합니다.&lt;/p&gt;
&lt;p data-end=&quot;18942&quot; data-start=&quot;18920&quot; data-ke-size=&quot;size16&quot;&gt;Softmax는 점수를 확률로 바꿉니다.&lt;/p&gt;
&lt;p data-end=&quot;18973&quot; data-start=&quot;18944&quot; data-ke-size=&quot;size16&quot;&gt;손실 함수는 예측이 정답과 얼마나 다른지 측정합니다.&lt;/p&gt;
&lt;p data-end=&quot;19022&quot; data-start=&quot;18975&quot; data-ke-size=&quot;size16&quot;&gt;CNN의 역전파는 손실에서 시작해 각 계층으로 오류 책임을 되돌려 보내는 과정입니다.&lt;/p&gt;
&lt;p data-end=&quot;19058&quot; data-start=&quot;19024&quot; data-ke-size=&quot;size16&quot;&gt;출력층은 어떤 클래스 점수를 올리고 내려야 하는지 계산합니다.&lt;/p&gt;
&lt;p data-end=&quot;19089&quot; data-start=&quot;19060&quot; data-ke-size=&quot;size16&quot;&gt;완전연결층은 특징과 클래스 사이의 연결을 수정합니다.&lt;/p&gt;
&lt;p data-end=&quot;19136&quot; data-start=&quot;19091&quot; data-ke-size=&quot;size16&quot;&gt;Flatten은 gradient 모양을 원래 feature map으로 되돌립니다.&lt;/p&gt;
&lt;p data-end=&quot;19174&quot; data-start=&quot;19138&quot; data-ke-size=&quot;size16&quot;&gt;Pooling은 순전파 방식에 맞게 gradient를 되돌립니다.&lt;/p&gt;
&lt;p data-end=&quot;19211&quot; data-start=&quot;19176&quot; data-ke-size=&quot;size16&quot;&gt;ReLU는 활성화되었던 위치에만 gradient를 통과시킵니다.&lt;/p&gt;
&lt;p data-end=&quot;19254&quot; data-start=&quot;19213&quot; data-ke-size=&quot;size16&quot;&gt;합성곱 계층은 필터, bias, 입력에 대한 gradient를 계산합니다.&lt;/p&gt;
&lt;p data-end=&quot;19299&quot; data-start=&quot;19256&quot; data-ke-size=&quot;size16&quot;&gt;Optimizer는 계산된 gradient를 사용해 파라미터를 업데이트합니다.&lt;/p&gt;</description>
      <category>AL,ML 학부연구생/공부 기록</category>
      <author>김형준</author>
      <guid isPermaLink="true">https://devreco.tistory.com/29</guid>
      <comments>https://devreco.tistory.com/29#entry29comment</comments>
      <pubDate>Fri, 10 Apr 2026 12:33:20 +0900</pubDate>
    </item>
  </channel>
</rss>