<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>JeongSae</title>
    <link>https://jeongsae.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Sat, 23 May 2026 17:55:28 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>정새님</managingEditor>
    <item>
      <title>성균관 데이터사이언스융합학과 1학기 - 3주차 후기</title>
      <link>https://jeongsae.tistory.com/25</link>
      <description>&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;1. 기초통계 (이준석 교수님)&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;3주차 수업&lt;/span&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;베이즈 정리(통계학원론 예제 풀이)&lt;/li&gt;
&lt;li&gt;확률 변수 (이산, 연속, 확률질량함수, 확률밀도함수, 누적분포함수) 설명 및 계산&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;2. 인공지능을 위한 수학 (윤인식 교수님)&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;3주차 수업
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;행렬에 관한 기초/계산 방법 (역행렬, 대각행렬, 삼각행렬, 전치행렬, 블록행렬 등)&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;3주차 과제
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;행렬 관련 문제풀이 PDF 업로드&lt;/li&gt;
&lt;/ol&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;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;3. 자료구조와 알고리즘 (배시영 교수님)&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;3주차 수업
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;재귀 알고리즘 이론 (팩토리얼, 피보나치, 하노이)&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;4. 논문 작성법 및 연구 윤리&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;중간고사 과제 공지
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;본인의 연구 주제에 대해 abstract 작성 (영문, 500자 이내)&lt;/li&gt;
&lt;li&gt;기간은 2주로 널널한 편, 어떤 주제를 선정할 지에 대해 조금 깊게 생각해봐야 할듯 하다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>대학원/2026 1학기</category>
      <category>데사융</category>
      <category>데이터사이언스융합학과</category>
      <author>정새님</author>
      <guid isPermaLink="true">https://jeongsae.tistory.com/25</guid>
      <comments>https://jeongsae.tistory.com/25#entry25comment</comments>
      <pubDate>Mon, 30 Mar 2026 21:24:33 +0900</pubDate>
    </item>
    <item>
      <title>성균관 데이터사이언스융합학과 1학기 - 1주차 및 2주차 후기</title>
      <link>https://jeongsae.tistory.com/24</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이번 2026 전기 데이터사이언스융합학과 합격 후 1학기 수강 신청에서 3가지 과목을 선택했다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. 기초통계&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;지금까지 현업에서 통계를 사용할 일이 많지 않았고, 해도 간단한 차트/대표값만 보면 되었었다.&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. 인공지능을위한수학&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;개념 수업을 제외한 ZOOM 수업에선 자율 공부 시간을 주시는데, 편하게 문제풀이를 하면 될 것 같다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3. 자료구조와 알고리즘&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;공부했던 내용들을 조금 더 살을 붙여가면서, 다시 복습하기 좋을 것 같아 신청했다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 이유들로 1학기엔 위 3가지 과목을 신청했고, 각 과목의 1/2주차 수업 내용 및 분위기는 아래와 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;1. 기초통계 (이준석 교수님)&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;1주차 수업
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;앞으로의 수업 방식에 대해 (내용, 레포트, 과제, 토론 등)&lt;/li&gt;
&lt;li&gt;모수, 표본, 대표값, 평균의 함정 등&lt;/li&gt;
&lt;li&gt;표본분산의 자유도 (왜 얘는 n-1일까? 에 대해 아주 약간만 다룸, 추후에 다시)&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;2주차 수업
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;확률, 독립, 조건부 확률, 베이즈 정리
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;과제아닌 과제 (토론 탭 활용하여 2가지 내용에 대해 토론)
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;상호 독립 - 쌍별 독립은 가능하지만, 완전 독립은 안되는 케이스 및 이유&lt;/li&gt;
&lt;li&gt;몬티홀 딜레마 - 무조건 바꾸는게 확률을 높이는 이유&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&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;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;2. 인공지능을 위한 수학 (윤인식 교수님)&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;1주차 수업
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;휴일로 인해 ZOOM 수업 없이, 온라인 강의로 대체&lt;/li&gt;
&lt;li&gt;선형대수학의 개요&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;2주차 수업
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;선형방정식에 대한 온라인 강의&lt;/li&gt;
&lt;li&gt;ZOOM 수업은 질문/문제풀이/자유스터디 시간&lt;/li&gt;
&lt;/ol&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;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;3. 자료구조와 알고리즘 (배시영 교수님)&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;1주차 수업
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;플립 러닝 기반 1.5 오프라인 + 1.5 온라인 수업&lt;/li&gt;
&lt;li&gt;수강생 전체의 중간에 맞추어 수업 방식 결정 (2주차에 설문 예정)&lt;/li&gt;
&lt;li&gt;생활 속에서의 자료구조&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;2주차 수업
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;2주차 설문 - 파이썬 등 프로그래밍 언어에 익숙하지 않은 수강생 다수 / 실습 제외 강의로만 구성&lt;/li&gt;
&lt;li&gt;의사코드, 시간복잡도, 자료구조/알고리즘 개요 등&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>대학원/2026 1학기</category>
      <category>대학원</category>
      <category>데사융</category>
      <category>데이터사이언스융합학과</category>
      <category>성균관대학교</category>
      <author>정새님</author>
      <guid isPermaLink="true">https://jeongsae.tistory.com/24</guid>
      <comments>https://jeongsae.tistory.com/24#entry24comment</comments>
      <pubDate>Sat, 14 Mar 2026 11:37:30 +0900</pubDate>
    </item>
    <item>
      <title>2025 회고</title>
      <link>https://jeongsae.tistory.com/23</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;근 1년만에 티스토리로 돌아와 처음 작성하는 글은, 2025년 나의 회고이다.&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;대학원 불합격과 여러 개인적인 요인들로 인해 큰 번아웃을 겪게 되었고, 1년간 번아웃을 극복한 내용을 담고 있다.&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;다가오는 2026년을 잘 맞이하여, 끊김 없이 노력하고 나아갈 수 있는 한 해가 되고자 다짐하는 마음도 담겨 있다.&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;2025 어떤 일들이 있었는지 본론으로 들어가보자.&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;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 대학원 불합격&lt;/h3&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 지원한 대학원은 직장인 대학원으로 잘 알려진 &lt;u&gt;성균관대학교 데이터사이언스융합학과&lt;/u&gt;이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과적으로 총 3번 지원하여 첫번째는 면접 후 탈락, 두번째는 서류 탈락, 마지막은 우여곡절 끝에 합격할 수 있었다.&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;첫 지원 당시 나는 4년차 AI 및 비전 개발자로 경진대회 수상, 논문 작성, 관련 자격증 등을 보유하고 있었고, &lt;br /&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Q : 현재 업무에서 머신러닝을 사용해본 경험이 있으신가요?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A : 머신러닝을 적용해본 적은 없지만, 현재 센서 데이터 EDA와 함께 Isolation Forest 등의 탐지를 적용하려 한다.&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;또한 경진 대회에선 LightGBM, XGBoost 등을 즐겨 사용하며 좋은 성적을 거둔 경험이 있다.&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;/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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 면접관님의 질문에서 &quot;머신러닝&quot;이라는 말이 100% 머신 러닝만을 사용한 프로젝트를 의미하는 줄 알았다.&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4년차 비전 개발자인데 머신러닝을 사용해본 경험이 없다니, 이상하지 않은가?&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;결국 1차 지원에서 면접 후 탈락하였고, 2차는 기존 서류에서 학업계획서만 약간 수정해서 제출했었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;이 두번의 불합격이 내가 쉽사리 멘탈을 잡지 못했던 가장 큰 이유이지 않을까 싶다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 대학원 합격&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막이라고 생각한 3차 지원에선 결과적으로 2026년 전기 데이터사이언스융합학과에 합격할 수 있었다.&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 학업계획서의 항목들과 &quot;데이터&quot;사이언스융합학과 라는 점, 그리고 교육과정에서 다루는 전공들을 확인했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 확인해보았을 때, 결국 &quot;데이터&quot;와 관련한 어필이 필요하지 않을까? 라는 것을 느끼게 되었다.&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;일반적인 컴퓨터 비전 개발자의 관점에서가 아니라 업무 중 데이터 분석의 &quot;중요성을 느낀 개발자&quot; 말이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;물론 스터디 등은 과거에도 학업계획서에 작성했지만, 이번엔 모두 캡쳐하여 증빙 자료로 함께 넣었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;말로만 공부를 계속 해오고 있다가 아니라, 실제 기록한 것들을 모두 증빙 자료로 첨부하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(스터디 기록, 6개월 간 출석 기록, 티스토리 글 작성 기록 등)&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;/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;면접 준비는 전반적으로 1차 면접보다 설렁설렁 준비했다. 다만 아래 질문들은 더욱 더 준비했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 첫 자기소개&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 내가 했던 가장 자랑스러운 혹은 잘했던 업무나 프로젝트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. &lt;b&gt;마지막으로 하고싶은 말&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 기본 선대 이론 (복잡하게 말고, 한두줄로 정리 가능한 정도로만)&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;특히 마지막 말은, 부족한 점이 많지만 &quot;태도&quot;로 보여드리겠다, 진심을 다해 노력하겠다. 라고 말씀드렸다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;진심이 전해졌을지, 내가 준비한 내용들이 만족스러우셨을지 모르겠지만 다행히 합격할 수 있었다.&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 조금씩 나아지고 있던 번아웃도 이제는 거의 잊을 만큼 극복하게 된 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;3. 업무와 성과&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2024년엔 좋은 기업에 성공적으로 이직하여 많은 업무를 해왔고, 주변에서 인정받을만큼의 성과도 냈다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;근데 이게 무슨일인지, 2025년엔 더 어렵고 난해한 문제를 받아, 개선해야하는 업무를 맡게되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존에 적용된 AI와 알고리즘이 있지만, 많은 오알람으로 인해 문제인 상황이었다.&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;여기서 기존 Segmentation을 기반으로 한 알고리즘이 오인식을 크게 개선하기 어렵다고 판단했고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터 구축 난이도, 문제 난이도, 강건함 등을 고려하여 Detection 기반의 방식으로 전면 수정했다.&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;gt; 박스 좌표로 변환해서 사용하여 공수를 줄였고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;결과적으로 기존 20만 건의 검사 중 5% 가량 발생하던 오알람은 0.075% 수준까지 감소했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 과정에서 문제가 될만한 Recall 지표는 더욱 개선되어, 검사의 신뢰성을 크게 높였다.&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;또한 기존의 방법 대비 Detection 방식은 데이터 구축 난이도가 압도적으로 낮다는 장점이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 오알람이 발생했다고 하여도, 간단한 Rect 시각화를 통해 해석 및 개선 또한 매우 유리했다.&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;많이 생각했고, 실험해봤으며, 스트레스도 엄청 받았지만 모두 긍정적인 결과로 돌아오게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. 나에게 있어 올 한 해와 앞으로의 목표는?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2025년 상반기는 내가 올바른 방향으로 잘 나아가고 있는지에 대한 의심이 커졌던 시기이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연이은 대학원 불합격, 어려운 업무, 개인적인 사정 등 많은 것들이 나를 압박하고 힘들게 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;2025년 하반기는 업무적으로 많은 성과를 냈고, 그토록 바라던 대학원에 합격할 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;말로 표현하긴 어렵지만 많이 힘들었고, 잘 버텨내려고 노력했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;앞으로의 목표는 매우 단순하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금까지 해왔던 것처럼 묵묵히 버티고, 조금씩 나아가는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;명확하게 무엇을 해야겠다! 토익 000점을 해야겠다! 뭘 해야겠다! 는 아직 잘 모르겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;언제 또 번아웃이 와서 나를 힘들게 할진 모르겠지만, 그때도 잘 이겨낼 수 있을 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;2026년 회고를 작성하게 될 내년 이맘때 쯤, 부끄럽지 않은 한 해를 보냈다고 할 수 있기 위해,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당장 펜을 잡고 묵묵히 노력해보려 한다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2025년 비전 개발자의 회고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>회고</category>
      <category>회고</category>
      <author>정새님</author>
      <guid isPermaLink="true">https://jeongsae.tistory.com/23</guid>
      <comments>https://jeongsae.tistory.com/23#entry23comment</comments>
      <pubDate>Wed, 17 Dec 2025 00:46:36 +0900</pubDate>
    </item>
    <item>
      <title>번아웃, 2024 회고</title>
      <link>https://jeongsae.tistory.com/22</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&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;작년 한 해 동안, 가장 큰 걱정 중 하나였던 이직을 성공적으로 마무리했고 많은 것을 배울 수 있었다.&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;/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;/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;/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;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;대학원 지원&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;당시 스스로의 실력에 대한 확신, 면접 과정, 경력, 연구들이 담긴 포트폴리오 모두 차고 넘친다고 생각하였다.&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;/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;/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;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;번아웃&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;글을 쓰고, 글을 쓰기 위한 공부를 하고, 스터디를 하고, 개인적으로 부족한 것을 채울 수 있도록 노력하고자 했다.&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;/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;/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;약 2달 간, 아무 것도 하지 않았고 결국 글또 제출도 미제출만 늘어가고 있었다.&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;다만 회사 일을 게을리하는 경우는 없었지만, 이는 6시까지만 가능했고 이후의 시간은 아무런 의미가 없었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(이직 후 거의 매일 10~11시까지 야근했었고, 업무 이 외의 남는 시간엔 공부하던 습관이 사라져버렸다.)&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;번아웃 극복의 기미&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 이 글을 쓰고있는 2월 16일 오전까지도 번아웃을 극복했다! 라고는 전혀 말할 수 없을 것 같다.&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;/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;/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;/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;/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;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;앞으로&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;탁구를 조금 더 잘치고 싶고, 글 제출을 미루지 않고, 전공 공부를 이어가고, 대학원에 합격하여 다니고 싶다.&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;/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;/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;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;+ 기폭제&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;그래도 항상 글또에서 어떤 말들이 오가나 열심히 챙겨보는데, 성윤님 공지사항을 읽고 그냥 홀린듯 작성했다.&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;/p&gt;</description>
      <category>회고</category>
      <category>데이터 사이언티스트</category>
      <category>번아웃</category>
      <author>정새님</author>
      <guid isPermaLink="true">https://jeongsae.tistory.com/22</guid>
      <comments>https://jeongsae.tistory.com/22#entry22comment</comments>
      <pubDate>Sun, 16 Feb 2025 12:49:29 +0900</pubDate>
    </item>
    <item>
      <title>[도서 리뷰] 개발자 오늘도 마음 튼튼하게 성장하기</title>
      <link>https://jeongsae.tistory.com/20</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&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;&lt;span style=&quot;background-color: #ffffff; color: #1d1c1d; text-align: start;&quot;&gt;이번 도서 리뷰는 감사하게도 길벗 출판사의 후원을 받아 서평을 작성하게 되었습니다.&lt;/span&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;&lt;span style=&quot;background-color: #ffffff; color: #1d1c1d; text-align: start;&quot;&gt;개발자 뿐만 아니라, 성장하기 위해 노력하는 모든 사람들이 한번은 겪었을 법한 문제에 대해 다루는 도서입니다.&lt;/span&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;&lt;span style=&quot;background-color: #ffffff; color: #1d1c1d; text-align: start;&quot;&gt;다루는 내용이 최근 저의 습관과 유사한 부분이 많아, 읽는 동안 많은 반성을 하게되었습니다.&lt;/span&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;&lt;span style=&quot;background-color: #ffffff; color: #1d1c1d; text-align: start;&quot;&gt;성장을 위해 노력하시는 많은 분들이 이 도서를 읽고, 다가오는 새해에 맞추어 재정비할 수 있으셨으면 좋겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;530&quot; data-origin-height=&quot;802&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPasfx/btsLaCtvuh3/ANmXzaMG8qWOq7f2hkRSGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPasfx/btsLaCtvuh3/ANmXzaMG8qWOq7f2hkRSGK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPasfx/btsLaCtvuh3/ANmXzaMG8qWOq7f2hkRSGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPasfx%2FbtsLaCtvuh3%2FANmXzaMG8qWOq7f2hkRSGK%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;318&quot; height=&quot;481&quot; data-origin-width=&quot;530&quot; data-origin-height=&quot;802&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;&lt;span style=&quot;color: #1d1c1d;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;최근 기술적인 성장을 위해 노력하면서도 한편으론 스스로의 마음가짐이 약해짐을 항상 느끼고 있었습니다.&lt;/span&gt;&lt;/span&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;업무 시간에 집중이 잘 되는 날도 존재하지만, 그렇지 않은 날엔 하루종일 일과 휴대폰을 오가기도 했습니다.&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;/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;스스로도 휴대폰을 보거나 딴짓을 하는 행동이 좋지 못하다는 걸 100% 알고 있음에도 끊기 매우 어렵습니다.&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;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도서에서 다루는 내용 중, 가장 인상 깊게 읽은 내용은 아래 3가지 내용입니다.&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;1. 소셜미디어가 가장 큰 적인 이유 &amp;amp; 소셜미디어를 유리하게 활용하는 방법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 마이크로태스크로 미루는 습관 극복하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 뽀모도로와 타이머로 더 쉽게 일하기&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;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;소셜미디어가 가장 큰 적인 이유 &amp;amp; 소셜미디어를 유리하게 활용하는 방법&lt;/h3&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;br /&gt;EX) 의사가 담배를 광고하거나 .. 다같이 모여 흡연하는 영상을 규제 없이 방송하거나 .. ETC ...&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;/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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;물론 최근 소셜미디어를 경계해야한다는 내용이 점차 알려지고 있지만, 아직 많은 시간이 필요하다 생각합니다.&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;이를 보면서 느낀 점으론, 실제 저도 유튜브 알고리즘을 경제 관련 뉴스나 수학, 논문 등으로 채워주었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;결과적으로 알고리즘을 바꿔나가는게 쉽진 않지만, 이를 바꿔주었을 때의 결과는 충분히 가치있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나에게 큰 방해물인 소셜미디어에 대해, 먼저 알고 이를 잘 경계하고 이롭게 활용할 수 있도록 해보는 건 어떨까요?&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;마이크로태스크로 미루는 습관 극복하기&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;막상 출근하고 난 뒤, 커피를 한잔 내려와 업무를 준비하는 시간엔 아닌 날도 있지만, 대부분 일을 하기 싫습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;일이 너무 어렵다의 개념이 아닌, 할게 너무 많고 큰 목표로 구성되어 있으니 너무 할게 많다고 느끼는 것이 큽니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;저도 항상 느끼는 부분이며, 새로운 알고리즘의 개발이나 모듈의 개발이 필요한 상황에서 주로 느껴집니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&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;이에 대해 도서에선, 하나의 태스크를 아주 작게 나누어 조금씩 실행하는 방법에 대해 다루고 있습니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;주제를 아주 작게 나누어 실행과 달성을 반복하며, 점차 몸과 뇌가 적응하도록 조정됩니다.&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;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;실제로도 업무를 수행하며, 큰 일을 아주 잘게 나누어 개발할 내용을 생각하다보면 생각보다 별거 없네?&lt;br /&gt;하고 느끼는 경우도 종종 있으며, 이 과정 속에서 자연스럽게 몰입하는 순간이 찾아오기도 합니다.&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;p data-ke-size=&quot;size16&quot;&gt;단순히 집중력을 위한 부분 이외에도, 내가 개발할 내용을 정리하고 나누며 적절한 알고리즘을 떠올리거나,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A의 개발을 위해선 B가 필요하고 B를 위해선 C가 필요한데 C를 알기 위해선 어떻게 해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;이러한 과정을 거치며 진행된 개발의 경우, 경험적으로 대부분의 상황에서 잘 개발된 경우가 많았던 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;뽀모도로와 타이머로 더 쉽게 일하기&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;뽀모도로와 타이머라는 내용을 읽을 때, 놀라웠던 부분은 실제 제가 업무를 수행하는 내용과 유사했다는 것입니다.&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;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;자연스런 몰입과는 약간 다르지만, 개발 내용이 너무 어렵거나 집중이 어려운 순간 이를 주로 활용했었습니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&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;이러한 방식과 함께 마이크로태스크를 결합해서 활용했을 때, 많은 상황에서 긍정적이었습니다.&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;25분의 명확한 집중 시간, 5분 동안 스트레칭 등의 짧은 휴식을 통해 나만의 작업 리듬을 구성할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;최근 저도 작업 시간과 휴식 시간을 명확하게하되 명상, 스트레칭, 물 마시기 등의 휴식을 반복하고 있습니다.&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;뽀모도로와 타이머 방법을 통해, 집중과 휴식이란 사이클을 구성하여, 효과적으로 관리해보는 것을 추천드립니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞선 내용들과 여러 실천이 모여, 안좋은 습관들이 점차 줄어드는 것을 느끼실 수 있을거라 생각합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;가끔 찾아오는 몰입의 순간이 매번 다가왔으면 하지만, 항상 몰입하긴 쉽지 않은 것 같습니다.&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;/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;/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;/p&gt;</description>
      <category>회고</category>
      <category>개발자 오늘도 마음 튼튼하게 성장하기</category>
      <category>길벗</category>
      <author>정새님</author>
      <guid isPermaLink="true">https://jeongsae.tistory.com/20</guid>
      <comments>https://jeongsae.tistory.com/20#entry20comment</comments>
      <pubDate>Sun, 8 Dec 2024 18:00:35 +0900</pubDate>
    </item>
    <item>
      <title>Support Vector Machine (SVM)</title>
      <link>https://jeongsae.tistory.com/18</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 포스트에선 Support Vector Machine에 대해 다뤄보고자 합니다.&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;잘못된 부분 등이 있다면 언제든 피드백 부탁드립니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Support Vector Machine ?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Support Vector Machine, 줄여서 SVM은 분류, 회귀 및 이상 탐지 과제 모두 수행 가능한 ML 모델입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전통적인 ML 모델들 사이에서 &lt;b&gt;성능이 매우 뛰어난 편&lt;/b&gt;에 속하며, &lt;b&gt;강건한 성능의 모델&lt;/b&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;이러한 강건한 성능은 SVM 모델의 학습 방식에서 나타나는 특징이라고 할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;794&quot; data-origin-height=&quot;687&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzuefh/btsKMFEowu1/pQA68VtSW1bxnouDWwGv90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzuefh/btsKMFEowu1/pQA68VtSW1bxnouDWwGv90/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzuefh/btsKMFEowu1/pQA68VtSW1bxnouDWwGv90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbzuefh%2FbtsKMFEowu1%2FpQA68VtSW1bxnouDWwGv90%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;465&quot; height=&quot;402&quot; data-origin-width=&quot;794&quot; data-origin-height=&quot;687&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금까지 SVM에 대한 내용을 다룰 때, 위 이미지와 같은 형태로 설명하는 자료들을 자주 볼 수 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 파트에서부턴 SVM에 대한 여러 내용들을 풀어보며, 정리해보도록 하겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Support Vector, Hyperplane and Margin&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SVM의 기본 개념은 우리가 잘 알고있는 &lt;b&gt;선형 분류&lt;/b&gt;의 개념으로, 데이터를 잘 구분하는 &lt;i&gt;직선&lt;/i&gt;을 찾도록 학습됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 추가적으로 &lt;b&gt;Support Vector&lt;/b&gt;, &lt;b&gt;Hyperplane&lt;/b&gt; 그리고 &lt;b&gt;Margin&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;794&quot; data-origin-height=&quot;687&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzuefh/btsKMFEowu1/pQA68VtSW1bxnouDWwGv90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzuefh/btsKMFEowu1/pQA68VtSW1bxnouDWwGv90/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzuefh/btsKMFEowu1/pQA68VtSW1bxnouDWwGv90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbzuefh%2FbtsKMFEowu1%2FpQA68VtSW1bxnouDWwGv90%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;465&quot; height=&quot;402&quot; data-origin-width=&quot;794&quot; data-origin-height=&quot;687&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서의 빨간 직선을 &lt;b&gt;초평면&lt;/b&gt;(Hyperplane), 초평면에 가까운 데이터를 &lt;b&gt;서포트 벡터&lt;/b&gt;(Support Vector)라고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 초평면에서부터 &lt;b&gt;서포트 벡터까지의 거리를 마진&lt;/b&gt;(Margin)이라 정의합니다.&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;마진의 크기는 직선과 점 사이의 거리를 구하는 공식&lt;/b&gt;과 동일합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 초평면의 경우, 다루는 데이터의 차원에 맞추어 형태가 달라지며 &lt;b&gt;선, 면, 공간 등으로 정의&lt;/b&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;이러한 개념들을 기본으로 다음 파트에선, SVM의 학습 과정에 대해 다뤄보도록 하겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;SVM Algorithm (Training, Optimization)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 SVM은 어떤 선을 기준으로 데이터를 분류하는 선형 분류를 기반으로 한다고 설명드렸습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 학습하는 과정에서 약간의 다른 점으론 초평면을 기준으로 하지만, &lt;b&gt;마진을 최대화하도록 학습&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;794&quot; data-origin-height=&quot;687&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzuefh/btsKMFEowu1/pQA68VtSW1bxnouDWwGv90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzuefh/btsKMFEowu1/pQA68VtSW1bxnouDWwGv90/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzuefh/btsKMFEowu1/pQA68VtSW1bxnouDWwGv90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbzuefh%2FbtsKMFEowu1%2FpQA68VtSW1bxnouDWwGv90%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;465&quot; height=&quot;402&quot; data-origin-width=&quot;794&quot; data-origin-height=&quot;687&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마진을 최대화하도록 학습한다는 것이 어떠한 의미일까요?&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;515&quot; data-origin-height=&quot;99&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WwuLb/btsKN1TKF07/ttfwYcHiSKvsi6pcVo9H21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WwuLb/btsKN1TKF07/ttfwYcHiSKvsi6pcVo9H21/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WwuLb/btsKN1TKF07/ttfwYcHiSKvsi6pcVo9H21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWwuLb%2FbtsKN1TKF07%2FttfwYcHiSKvsi6pcVo9H21%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;515&quot; height=&quot;99&quot; data-origin-width=&quot;515&quot; data-origin-height=&quot;99&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마진은 위와 같은 형태로 정의되며, &lt;b&gt;W는 법선 벡터로 SVM이 학습하는 파라미터&lt;/b&gt;를 의미합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마진이 최대가 되기 위해선 &lt;b&gt;전체 가중치의 크기&lt;/b&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;이렇게 생각했을 때, 무조건 W가 아주아주 작아져야 하겠구나! 로 볼 수 있지만 다르게 생각해볼 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리가 가진 데이터는 움직이지 않습니다. &lt;b&gt;다만 데이터에 맞추어 우리의 직선이 이리저리 기울여질뿐&lt;/b&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;이 과정에서 SVM은 &lt;b&gt;직선(초평면)&lt;/b&gt;과 &lt;b&gt;가장 가까운 데이터(서포트 벡터)&lt;/b&gt;와의 &lt;b&gt;거리가 최대&lt;/b&gt;이도록 직선을 배치합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설령 직선의 기울기가 아주 가파르거나, 아주 완만하다고 하여도 &lt;b&gt;마진만 최대&lt;/b&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;다시 말해서, 마진을 최대로 한다는 건 가중치가 할 수 있는만큼 최대한 어떻게든 파라미터를 조정하는 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 과정에서 &lt;b&gt;W 가중치의 크기가 커질 수도 있지만&lt;/b&gt;, &lt;b&gt;그 상태가 마진이 최대이며 최선인 상태&lt;/b&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;이러한 직선(초평면)의 &lt;b&gt;기울기는 학습에 사용할 데이터의 분포에 따라&lt;/b&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;결과적으로 학습된 SVM은 마진을 최대화하도록 학습되기에 &lt;b&gt;효과적인 분류를 위한 최적의 초평면&lt;/b&gt;을 찾게됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇기에 앞서 SVM이 단순 선형 분류 대비, 강건한 성능을 갖는 모델이라고 말씀 드렸던 이유입니다.&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;여기까지 봤을 때, 어느 정도 SVM의 마진과 관련한 내용이 이해가 되셨을까요?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;다음 파트에선 학습된 SVM이 새로운 데이터에 대해 추론하는 과정에 대해 다룹니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Inference (inner product, 내적)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학습된 SVM을 활용하여 새로운 데이터를 추론하는 과정은 일반적인 선형 분류와 다르지 않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단한 개념이지만, 본인이 잘 알고있는지 한번 짚고 넘어가는 것도 좋을 것 같습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1010&quot; data-origin-height=&quot;520&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c40dOK/btsKMKeiFZo/ptnL1UW0WakjLv3nrXcip0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c40dOK/btsKMKeiFZo/ptnL1UW0WakjLv3nrXcip0/img.png&quot; data-alt=&quot;https://datahacker.rs/dot-product-inner-product/&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c40dOK/btsKMKeiFZo/ptnL1UW0WakjLv3nrXcip0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc40dOK%2FbtsKMKeiFZo%2FptnL1UW0WakjLv3nrXcip0%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;654&quot; height=&quot;337&quot; data-origin-width=&quot;1010&quot; data-origin-height=&quot;520&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://datahacker.rs/dot-product-inner-product/&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ML 모델들은 데이터를 구분하기 위한 직선(초평면)을 가지며, 이는 우리가 잘 아는 가중치(파라미터)입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내 데이터가 2차원 데이터라고 가정했을 때, &lt;b&gt;2차원 평면 위에는 데이터의 수만큼 많은 점&lt;/b&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;만약 평면 위에, &lt;b&gt;학습에 사용하지 않은 새로운 점&lt;/b&gt;이 나타난다면 우리의 모델은 이 점을 어떻게 구분할까요?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 우리에게 잘 알려져 있는 &lt;b&gt;내적&lt;/b&gt;을 통해 계산하며, &lt;b&gt;입력 데이터와 가중치&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;475&quot; data-origin-height=&quot;388&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yGci6/btsKOkZG87M/2SYKvSE8yOzMTdI4VeKlU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yGci6/btsKOkZG87M/2SYKvSE8yOzMTdI4VeKlU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yGci6/btsKOkZG87M/2SYKvSE8yOzMTdI4VeKlU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyGci6%2FbtsKOkZG87M%2F2SYKvSE8yOzMTdI4VeKlU0%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;344&quot; height=&quot;281&quot; data-origin-width=&quot;475&quot; data-origin-height=&quot;388&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단한 예시를 들어보면, 위와 같은 형태로 내적을 계산하고 &lt;b&gt;내적의 결과 부호에 따라 클래스&lt;/b&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;여기서 더 나아가, 결과에 &lt;b&gt;Sigmoid 함수를 씌워준다면 우리가 잘 아는 0~1 사이의 확률&lt;/b&gt;로 나타내게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SVM의 학습 아이디어는 약간 복잡했지만, &lt;b&gt;추론 과정은 일반 분류기&lt;/b&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;다음 파트에선 Hard Margin SVM의 한계와 Soft Margin SVM에 대해 다뤄보도록 하겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Hard Margin SVM and Soft Margin SVM&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금까지 다루었던 내용들은 모두 &lt;b&gt;Hard Margin SVM&lt;/b&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;이는 &lt;b&gt;초평면과 서포트벡터 사이에 어떠한 데이터도 있을 수 없다&lt;/b&gt;는 전제하에 학습되는 엄격한 기준을 갖고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;엄격한 기준의 Hard Margin보다 조금 더 유연하고 일반화 성능이 보장된 방법은 없을까요?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 물음에 대한 것이 바로 &lt;b&gt;Soft Margin SVM&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;934&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MZwIz/btsKNXSwBDM/uEsJJkGV0Lc2BPDpxuZoN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MZwIz/btsKNXSwBDM/uEsJJkGV0Lc2BPDpxuZoN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MZwIz/btsKNXSwBDM/uEsJJkGV0Lc2BPDpxuZoN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMZwIz%2FbtsKNXSwBDM%2FuEsJJkGV0Lc2BPDpxuZoN0%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;521&quot; height=&quot;357&quot; data-origin-width=&quot;934&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Soft 방식은 Hard와는 다르게 &lt;b&gt;마진 내에 데이터가 존재할 수 있도록 정의&lt;/b&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;다만 &lt;b&gt;슬랙(Slack) 변수&lt;/b&gt;라는 값을 기반으로, 이를 &lt;b&gt;최적화 문제에 패널티&lt;/b&gt;의 형태로 추가적으로 적용해줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;슬랙 변수는 데이터 포인트가 SVM의 &lt;b&gt;마진 조건을 어느 정도 어기고 있는지&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;441&quot; data-origin-height=&quot;53&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSfG0n/btsKPbWyvIv/WcQATENWr056e7Fic0XLY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSfG0n/btsKPbWyvIv/WcQATENWr056e7Fic0XLY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSfG0n/btsKPbWyvIv/WcQATENWr056e7Fic0XLY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSfG0n%2FbtsKPbWyvIv%2FWcQATENWr056e7Fic0XLY1%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;441&quot; height=&quot;53&quot; data-origin-width=&quot;441&quot; data-origin-height=&quot;53&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;슬랙 변수의 오차인 패널티는 &lt;b&gt;힌지 손실&lt;/b&gt;이라는 것을 기반으로 측정하여 나타냅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 마진 내에 존재하는 포인트가 &lt;b&gt;어느 정도 마진 조건을 어기는지에 대해서&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;253&quot; data-origin-height=&quot;86&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dicXlq/btsKOHuFBGO/pcak3rUeo8NTQMKrdodTI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dicXlq/btsKOHuFBGO/pcak3rUeo8NTQMKrdodTI1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dicXlq/btsKOHuFBGO/pcak3rUeo8NTQMKrdodTI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdicXlq%2FbtsKOHuFBGO%2Fpcak3rUeo8NTQMKrdodTI1%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;253&quot; height=&quot;86&quot; data-origin-width=&quot;253&quot; data-origin-height=&quot;86&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 &lt;b&gt;손실을 모두 합&lt;/b&gt;하여 나타낸 것을 &lt;b&gt;패널티 항의 합으로 정의&lt;/b&gt;하고, &lt;b&gt;최적화 문제를 정의&lt;/b&gt;할 수 있게됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;이를 통해 최적화 문제를 푸는 과정에서 뒤쪽 패널티(마진 오차/규제) 또한 동일하게 최소화하라는 의미입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 패널티는 C라는 하이퍼 파라미터로 우리가 조정할 수 있는데, 방식에 따라 학습 양상이 변화하게 됩니다.&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;C라는 패널티에 대한 가중치가 높은 경우&lt;/b&gt;, 마진 최대화보다 더 중요하게 생각하여 오차를 줄이게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반대의 경우엔 오차를 조금 많이 허용하더라도, &lt;b&gt;마진을 최대로 하도록 최적화됩니다&lt;/b&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;어느 정도의 가중치를 부여하느냐에 따라 변화하기에 까다롭고, 적절한 파라미터의 탐색이 매우 중요합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;여기까지 Soft Margin SVM과 함께 SVM에 대해 어느 정도 다뤄보고 정리해보았습니다. 잘 이해 되셨을까요?&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;마치며&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;SVM에 대한 내용 중 특히나 Kernel Trick에 대한 내용이 큰 비중을 차지하기 때문이라고 생각됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 이전에 리뷰한 PCA와 동일하게 겹치는 주제로, 제대로 준비하여 정리하는 것이 낫다고 판단하였습니다.&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;/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;개인적으로 SVM은 PCA와 함께 ML 분야에서 개념적, 아이디어적으로 매우 중요하다 생각하고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;여기까지 긴 글 읽어주셔서 감사합니다.&lt;/p&gt;</description>
      <category>Machine Learning/Machine Learning</category>
      <category>hyperplane</category>
      <category>Machine Learning</category>
      <category>Margin</category>
      <category>support vector</category>
      <category>svm</category>
      <author>정새님</author>
      <guid isPermaLink="true">https://jeongsae.tistory.com/18</guid>
      <comments>https://jeongsae.tistory.com/18#entry18comment</comments>
      <pubDate>Tue, 19 Nov 2024 21:57:04 +0900</pubDate>
    </item>
    <item>
      <title>FCN (Fully Convolutional Network, 2014) 논문 리뷰</title>
      <link>https://jeongsae.tistory.com/16</link>
      <description>&lt;p style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이번에 읽고 리뷰해볼 논문은 Image Segmentation 분야의 FCN(2014) 논문입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;정리된 내용 중 부정확하거나 내용과 다른 부분에 대해선 언제든 피드백 부탁드립니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style6&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Abstact&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 논문에선 Semantic Segmentation에서 큰 발전을 이룬 FCN에 대해 다뤄보고자 합니다.&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;FCN은 Fully Convolutional Network의 줄임말로, &lt;b&gt;Fully Convolutional&lt;/b&gt;이란 핵심 키워드를 중심으로 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Fully Convolutional이란, Network의 모든 Layer가 Convolution으로 이루어진 구조를 의미합니다.&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;Fully Connected를 Convolution으로 변경했을 때,&lt;/b&gt; 어떠한 이득을 취할 수 있을까요?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파라미터 수의 감소로 &lt;b&gt;학습/추론 속도의 개선&lt;/b&gt; 그리고 &lt;b&gt;Spatial Information의 손실을 방지&lt;/b&gt;할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 고정된 크기로 정의된 Fully Connected Layer가 없으니, &lt;b&gt;어떠한 크기의 입력&lt;/b&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;이러한 Fully Convolutional 구조와 함께 FCN에선 성능 개선을 위한 &lt;b&gt;추가적인 구조 또한 제안&lt;/b&gt;합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;결과적으로 Segmentation 성능을 20% 가량 개선할 수 있었고, 추론 속도 또한 200ms 이하가 소요됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;다음 파트에서부턴, Abstract에서 다룬 여러 내용들을 조금 자세하게 풀어보도록 하겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;Introduction&lt;/h3&gt;
&lt;p style=&quot;color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;AlexNet을 시작으로, Convolution Network를 통해 아래 분야 등에서 여러 성공이 확인되었습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;다만 FCN이 등장하기 전 시점을 기준으로 아직까지 Segmentation 과제에서 ConvNet은 입증되지 않았습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;물론 Semantic Segmentation 분야에서 FCN 이전에 ConvNet을 사용한 연구는 있을 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;그렇지만 &lt;b&gt;end-to-end&lt;/b&gt;이면서, &lt;b&gt;pixel-wise prediction&lt;/b&gt;을 적용한 경우는 FCN에서 처음 제안되었습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;FCN에선 ConvNet의 Dense Output에 대해 Up-Sampling을 통해 입력과 같은 크기가 되도록 복원하게 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;이는 Ground-Truth Mask와 Prediction의 &lt;b&gt;직접적인 비교&lt;/b&gt;를 가능하게 하여 매우 효율적이라 할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;이러한 구조적 이점과 함께 FCN에선 기존 SOTA 성능의 ConvNet을 Backbone으로 재해석하여 사용하게 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;이는 VGG 등을 활용한 Transfer learning 및 Fine tuning을 의미하며, RCNN에서 증명된 성능 개선 방법입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;큰 규모의 데이터로 &lt;b&gt;학습된 신경망을 기반&lt;/b&gt;으로, 새로운 신경망을 학습했을 때의 &lt;b&gt;어드밴티지&lt;/b&gt;를 의미합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;앞서 제안된 추가적인 구조는 부족한 정보를 보완하기 위한 구조로 Skip Architecture라고 정의하였습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt; 이는 &lt;b&gt;깊고 얕은 구조를 연결&lt;/b&gt;하며, &lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt;이를 통해 Local &amp;amp; Global Information을 함께 얻을 수 있게됩니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;Abstract에서 확인했다시피, 이러한 구조를 통한 성능 개선은 엄청남을 알 수 있습니다!&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;다음 파트에서부턴 본격적으로 FCN에서 제안하는 내용들에 대해 알아보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;Fully Convolutional Network ?&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;먼저, Fully Connected Layer를 포함하고 있는 일반적인 CNN 구조를 확인해보겠습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;910&quot; data-origin-height=&quot;268&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d4FWHR/btsKpS4xrWv/o920kKpSDN76Kh1xDw2S60/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d4FWHR/btsKpS4xrWv/o920kKpSDN76Kh1xDw2S60/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d4FWHR/btsKpS4xrWv/o920kKpSDN76Kh1xDw2S60/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd4FWHR%2FbtsKpS4xrWv%2Fo920kKpSDN76Kh1xDw2S60%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;646&quot; height=&quot;190&quot; data-origin-width=&quot;910&quot; data-origin-height=&quot;268&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;우리가 잘 알다시피, Conv Layer를 통해 특징을 추출하고 이를 1차원으로 펴서 활용하는 구조를 갖고 있습니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이러한 전통적인 구조는 학습이 불가능하거나 엉터리 모델을 만들진 않지만, 문제가 하나 존재합니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;바로 영상에서 특징을 추출하는 동안 잘 유지하던 &lt;b&gt;공간 정보를 잃어버리는 것&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;Segmentation Task에선 픽셀 마다의 &lt;b&gt;주변 공간 정보가 매우 중요&lt;/b&gt;한데, 이를 잃는 것은 매우 치명적입니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;또한 Fully Connected Layer의 선언 당시 Size에 맞추어, &lt;b&gt;입력 또한 고정&lt;/b&gt;되게 됩니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이뿐만 아니라 Layer 자체의 파라미터가 많기 때문에, &lt;b&gt;학습 및 추론 속도&lt;/b&gt; 또한 매우 느리고 무겁습니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;저자는 이런 단점들을 개선하기 위한 방법으로 &lt;b&gt;Convolutionalization&lt;/b&gt;을 제안했습니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이는 Network에 존재하는 Fully Connected Layer를 모두 Convolution으로 변경하는 방법을 의미합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;665&quot; data-origin-height=&quot;372&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btHRd0/btsKp4RaLBE/F3uW8Rct9bmR76i5FuQKx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btHRd0/btsKp4RaLBE/F3uW8Rct9bmR76i5FuQKx0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btHRd0/btsKp4RaLBE/F3uW8Rct9bmR76i5FuQKx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtHRd0%2FbtsKp4RaLBE%2FF3uW8Rct9bmR76i5FuQKx0%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;665&quot; height=&quot;372&quot; data-origin-width=&quot;665&quot; data-origin-height=&quot;372&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;Convolutionalization을 통해 도출된 출력은 어떤 형태로 어떤 정보를 갖게될까요?&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;기존 FC Layer가 포함된 Network에선 분류 혹은 회귀에 맞추어 &lt;b&gt;N개의 클래스에 대한 확률 혹은 값&lt;/b&gt;을 도출했습니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;위 이미지의 tabby cat 분포와 같이, 확률에 대한 정보만을 나타내었습니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;그렇다면 Convolutionalized Network의 출력은?&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;해상도가 유지&lt;/b&gt;된채로 N개의 클래스에 대한 확률을 갖게 될 것이고, &lt;b&gt;특정 위치의 N번째 맵이 크게 활성화&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;1181&quot; data-origin-height=&quot;657&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RGcNN/btsKrbuYPd9/tPfXLdCcqY3W5hUaIVk1u1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RGcNN/btsKrbuYPd9/tPfXLdCcqY3W5hUaIVk1u1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RGcNN/btsKrbuYPd9/tPfXLdCcqY3W5hUaIVk1u1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRGcNN%2FbtsKrbuYPd9%2FtPfXLdCcqY3W5hUaIVk1u1%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;635&quot; height=&quot;353&quot; data-origin-width=&quot;1181&quot; data-origin-height=&quot;657&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;위 이미지를 기반으로 예시를 하나 들어보겠습니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;100개의 클래스에서 10번째가 고양이 클래스라면 N * N의 맵에서 10번째 맵의 &lt;b&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;고양이 위치가 &lt;/span&gt;크게 활성화&lt;/b&gt;됩니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;만약 72번째 클래스가 강아지 클래스라면 N * N의 맵에서 72번째 맵의 &lt;b&gt;강아지 위치가 크게 활성화&lt;/b&gt;되게 됩니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이처럼 FC Layer가 아닌 Conv Layer를 통해 공간 정보를 유지하는 것이 Segmentation의 핵심입니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 보면, 저자들이 어째서 Conv Layer를 사용할 수 밖에 없었는지 이해할 수 밖에 없을 것 같습니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;다음 파트에선 줄어든 해상도의 특징맵을 원본 해상도만큼 복원하는 Up-Sampling에 대해 다뤄보겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style6&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;Shift and Stitch or Up-sampling (backwards strided convolution)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Up-Sampling 단계는 저자가 설명하는 End-to-End, Pixel-Wise Training을 위한 필수 과정입니다.&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;우리가 잘 알고있는 분류를 위한 ConvNet의 경우, &lt;b&gt;입력의 해상도를 줄여나가며&lt;/b&gt; 특징을 추출합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;Segmentation Task는 입력의 해상도와 동일한 Output Mask를 예측하여 각 픽셀마다 분류를 수행하고자 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 분류된 픽셀마다 &lt;b&gt;실제 정답인 Ground Truth와의 1:1 비교를 통해 분류 성능&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;613&quot; data-origin-height=&quot;300&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/T8DsF/btsKzVFJuZL/hs9f3qL6rP7ys3aNWNTWpk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/T8DsF/btsKzVFJuZL/hs9f3qL6rP7ys3aNWNTWpk/img.png&quot; data-alt=&quot;https://www.v7labs.com/blog/semantic-segmentation-guide&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/T8DsF/btsKzVFJuZL/hs9f3qL6rP7ys3aNWNTWpk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FT8DsF%2FbtsKzVFJuZL%2Fhs9f3qL6rP7ys3aNWNTWpk%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;613&quot; height=&quot;300&quot; data-origin-width=&quot;613&quot; data-origin-height=&quot;300&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://www.v7labs.com/blog/semantic-segmentation-guide&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 1:1 비교를 위해선 &lt;b&gt;입력과 출력을 동일하게 맞추는 과정&lt;/b&gt;이 필요하며, 이를 Up-Sampling이라 합니다.&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;이러한 Up-Sampling은 단순 Interpolation부터 Trainable Layer를 활용하는 방법까지 다양합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FCN의 논문에선 단순 Interpolation, Shift and Stitch 그리고 Trainable Layer까지 모두 소개합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;451&quot; data-origin-height=&quot;289&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d5BL6r/btsKznpqvRI/ybDkY1vqFi5wDOQ54WPF7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d5BL6r/btsKznpqvRI/ybDkY1vqFi5wDOQ54WPF7K/img.png&quot; data-alt=&quot;https://www.sciencedirect.com/topics/computer-science/image-interpolation&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d5BL6r/btsKznpqvRI/ybDkY1vqFi5wDOQ54WPF7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd5BL6r%2FbtsKznpqvRI%2FybDkY1vqFi5wDOQ54WPF7K%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;451&quot; height=&quot;289&quot; data-origin-width=&quot;451&quot; data-origin-height=&quot;289&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://www.sciencedirect.com/topics/computer-science/image-interpolation&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대표적으로 사용되는 &lt;b&gt;Interpolation이란 보간법&lt;/b&gt;으로, 데이터를 압축하거나 팽창시키는 과정에서 활용됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;적은 정보로 값을 근사하거나 줄여주는 과정에서 효과적이고 타당한 결과를 내기 위해 사용됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;641&quot; data-origin-height=&quot;275&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tbmEq/btsKxInQOMT/OwcIHj4IZ9X6e9DdtRTlcK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tbmEq/btsKxInQOMT/OwcIHj4IZ9X6e9DdtRTlcK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tbmEq/btsKxInQOMT/OwcIHj4IZ9X6e9DdtRTlcK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtbmEq%2FbtsKxInQOMT%2FOwcIHj4IZ9X6e9DdtRTlcK%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;469&quot; height=&quot;201&quot; data-origin-width=&quot;641&quot; data-origin-height=&quot;275&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 이러한 Interpolation만을 &lt;b&gt;출력에 대해 곧바로 적용&lt;/b&gt;했을 땐, 낮은 품질의 Mask Result가 생성됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;적은 수의 정보만으로 &lt;b&gt;디테일한 경계 부분을 묘사하기 부족&lt;/b&gt;하기 때문입니다. (FCN-32s Mask 예시)&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;그렇기에 Segmentation Task에선 결과의 품질 개선을 위한 방법으로 Shift and Stitch 방법을 활용하곤 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;논문에서도 설명되며, 과거 Segmentation Task에서 자주 활용된 Shift and Stitch 방법은 어떻게 동작할까요?&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;814&quot; data-origin-height=&quot;457&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNU1qE/btsKyKezIzm/U6Ewtm4klAMLSvggKgOcY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNU1qE/btsKyKezIzm/U6Ewtm4klAMLSvggKgOcY0/img.png&quot; data-alt=&quot;https://stackoverflow.com/questions/40690951/how-does-shift-and-stitch-in-a-fully-convolutional-network-work&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNU1qE/btsKyKezIzm/U6Ewtm4klAMLSvggKgOcY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNU1qE%2FbtsKyKezIzm%2FU6Ewtm4klAMLSvggKgOcY0%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;593&quot; height=&quot;333&quot; data-origin-width=&quot;814&quot; data-origin-height=&quot;457&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://stackoverflow.com/questions/40690951/how-does-shift-and-stitch-in-a-fully-convolutional-network-work&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 방법은 Shift와 Stitch로 나뉘어지며, 원본 데이터와 이를 Shift 한 데이터를 기반으로 Stitch를 진행합니다.&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;Stitch는 Shifted 데이터에 Pooling을 적용한 뒤, 이를 잘 엮어서 새로운 특징맵을 만드는 방법입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇기에 사실 Up-Sampling은 아니지만 &lt;b&gt;Interpolation 이전의 결과 개선을 위한 과정&lt;/b&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;과거 Segmentation Task에선 이러한 방법이 종종 활용된 것으로 보여집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 FCN의 저자는 이러한 방법 대신, 효과적인 Up-Sampling에 대한 &lt;b&gt;새로운 방법을 제안&lt;/b&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;저자들은 Interpolation을 통한 Up-Sampling을 Backwards Strided Convolution으로 볼 수 있다 설명했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 &lt;b&gt;Conv Layer 동작되는 방식을 반대로 수행&lt;/b&gt;하는 것이, &lt;b&gt;Up-Sampling&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;908&quot; data-origin-height=&quot;527&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/leNX6/btsKDxrszlo/7FUJxxoTEwfqgVYf8gFxPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/leNX6/btsKDxrszlo/7FUJxxoTEwfqgVYf8gFxPK/img.png&quot; data-alt=&quot;https://kikaben.com/up-sampling-with-transposed-convolution/#google_vignette&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/leNX6/btsKDxrszlo/7FUJxxoTEwfqgVYf8gFxPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FleNX6%2FbtsKDxrszlo%2F7FUJxxoTEwfqgVYf8gFxPK%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;681&quot; height=&quot;395&quot; data-origin-width=&quot;908&quot; data-origin-height=&quot;527&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://kikaben.com/up-sampling-with-transposed-convolution/#google_vignette&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 일반적인 Up-Sampling과는 다르게, 이러한 방법이 &lt;b&gt;학습 가능한 Up-Sampling 방법&lt;/b&gt;이라는 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재의 특징맵에 대해 &lt;b&gt;최적의 상태로 해상도를 복원할 수 있는 파라미터&lt;/b&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;이 방법이 우리에게 잘 알려진 Transposed Convolution Layer이며, 현재까지도 핵심적으로 활용되고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 통해 저자들은 Shift and Stitch, 단순 Interpolation 기반의 Up-Sampling을 하지 않아도 된다고 설명합니다.&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;저자가 제안한 방법엔 Transposed 이외에도 Segmentation 성능 개선을 위한 추가적인 핵심 제안이 존재합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 파트에선 추가 제안과 함께 FCN의 전반적인 구조에 대해 다뤄보도록 하겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style6&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;Segmentation architecture&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FCN은 특징 추출을 위한 Convolution Network, Up-Sampling을 위한 Transposed Conv로 구성됩니다.&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;먼저 ConvNet은 기존 Classification Task에서 SOTA의 성능을 도출한 &lt;b&gt;Network를 가져와 재구성&lt;/b&gt;합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇기에 FCN에선 AlexNet, VGG16, GoogLeNet 3가지 Network를 Backbone으로 구성하여 비교했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;622&quot; data-origin-height=&quot;250&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EebAc/btsKBLyhFSM/pJDp17MAGNHeXp5dekVdu1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EebAc/btsKBLyhFSM/pJDp17MAGNHeXp5dekVdu1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EebAc/btsKBLyhFSM/pJDp17MAGNHeXp5dekVdu1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEebAc%2FbtsKBLyhFSM%2FpJDp17MAGNHeXp5dekVdu1%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;488&quot; height=&quot;196&quot; data-origin-width=&quot;622&quot; data-origin-height=&quot;250&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 Backbone들은 Classifier를 포함한 FC Layer를 제거한 뒤, Classifer 개념인 1x1 Conv Layer를 추가합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 잘 알려진 Transfer Learning과 같이, Segmentation Task에 맞는 출력을 내기 위함입니다.&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;논문에서의 Backbone으론 위 표를 기준으로 가장 성능이 좋은 VGG16을 선택합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 때의 성능은 Classifer에서 도출된 결과물을 곧바로 원본 해상도로 복구했을 때의 성능을 기준으로 합니다.&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;이러한 구조는 특징맵을 32배 Up-Sampling 한다는 의미에서, FCN-32라고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞선 내용에서 FCN-16, FCN-8 구조의 Seg 결과를 도출하기 위한 추가적인 개선이 존재한다고 설명드렸었습니다.&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;해당 방식은 Network의 &lt;b&gt;얕은 지역과 깊은 지역을 연결하는 새로운 연결 구조&lt;/b&gt;를 의미합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 아래 FCN-32부터 FCN-8까지의 Network 구조를 설명하는 그림에서 확인하실 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1317&quot; data-origin-height=&quot;299&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/by3o9C/btsKDXQYjB8/Eh0kN0Tao5dzjnN5AOtVmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/by3o9C/btsKDXQYjB8/Eh0kN0Tao5dzjnN5AOtVmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/by3o9C/btsKDXQYjB8/Eh0kN0Tao5dzjnN5AOtVmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fby3o9C%2FbtsKDXQYjB8%2FEh0kN0Tao5dzjnN5AOtVmK%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;750&quot; height=&quot;170&quot; data-origin-width=&quot;1317&quot; data-origin-height=&quot;299&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VGG의 Pooling Layer에서 나온 출력물을 Transposed Conv를 통해 Up-Sampling을 수행합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 2배 증가된 해상도의 출력과, VGG의 이전 출력물을 결합하는 방식으로 특징맵의 정보를 보완해나갑니다.&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;이렇게 Network의 &lt;b&gt;얕은 정보(큰 해상도)와 깊은 정보(작은 해상도)의 정보 결합&lt;/b&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;Pool3, Pool4에서 도출된 정보들은 Pool5에 비해 이 객체가 무엇인지에 대한 풍부한 의미 정보는 없지만, &lt;br /&gt;큰 해상도로 인해 &lt;b&gt;입력 이미지 내에서 객체의 위치 및 공간에 대한 정보&lt;/b&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;Segmentation Task의 특성 상, &lt;b&gt;객체의 위치 및 공간 정보는 매우 중요&lt;/b&gt;하게 작용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;이를 잘 보존하는 것이 성능을 개선하기 위한 핵심이라고 할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자는 정보 보존 대신, &lt;b&gt;보존된 정보를 활용&lt;/b&gt;하는 방법으로 Prediction 과정에서 &lt;b&gt;이전 정보를 추가 결합&lt;/b&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;이러한 결합 방법을 Skip Connection이라고 설명하며, 이것이 FCN의 성능 개선을 위한 핵심이라고 할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과적으로 Skip Connection을 통해 &lt;b&gt;낮은 해상도의 특징이 갖는 객체의 경계 부분 디테일&lt;/b&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;다음 파트에선 Skip Connection을 활용한 연구 결과 및 결론에 대해 확인해보겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style6&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;Results and Conclusion&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Segmentation Task에서 정량적인 성능을 측정하는 대표적인 방법으로 &lt;b&gt;IoU Metric&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;358&quot; data-origin-height=&quot;101&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkQlLJ/btsKCRYNZ3X/I6tZvCV47PlJi9IB4cGEMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkQlLJ/btsKCRYNZ3X/I6tZvCV47PlJi9IB4cGEMk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkQlLJ/btsKCRYNZ3X/I6tZvCV47PlJi9IB4cGEMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkQlLJ%2FbtsKCRYNZ3X%2FI6tZvCV47PlJi9IB4cGEMk%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;358&quot; height=&quot;101&quot; data-origin-width=&quot;358&quot; data-origin-height=&quot;101&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IoU Metric은 실제 정답 Mask와 예측 Mask 사이에서, 각 Mask가 &lt;b&gt;서로 얼마나 잘 겹쳐있는지&lt;/b&gt;를 평가하게됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 Mask의 교집합 영역을 합집합 영역으로 나누어서, 0~1 사이의 겹친 비율을 알아내어 평가합니다.&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;또한 IoU와 같은 개념으로 자주 사용되는 &lt;b&gt;mIoU&lt;/b&gt;는 각 클래스에 대한 IoU를 평균내어 계산하는 것을 의미합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마치 mAP와 같은 개념으로, &lt;b&gt;전체 클래스에 대한 성능을 측정&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;638&quot; data-origin-height=&quot;152&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/q7cql/btsKDQRVFX2/NrxoNl9JTUTIsUFFje2201/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/q7cql/btsKDQRVFX2/NrxoNl9JTUTIsUFFje2201/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/q7cql/btsKDQRVFX2/NrxoNl9JTUTIsUFFje2201/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fq7cql%2FbtsKDQRVFX2%2FNrxoNl9JTUTIsUFFje2201%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;638&quot; height=&quot;152&quot; data-origin-width=&quot;638&quot; data-origin-height=&quot;152&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;많은 파라미터를 보유한 VGG16을 Backbone으로 활용했음에도, Fully Convolutional Network가 갖는 &lt;br /&gt;End-to-End 구조와 여러 장점으로 인해 Inference Time이 크게 감소된 것을 확인할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&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;보통 새로운 연구라고 한다면, Trade-off 관계로 어떤 것이 증가한 대신 다른 부분이 부족해지는 경우가 있지만,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FCN의 경우 Segmentation Task에 대한 새로운 비전을 제시할 수 있을만큼 큰 개선을 보여주었습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;616&quot; data-origin-height=&quot;565&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cJn02R/btsKCemwaKN/m6RUaWMK8AhonqXQDG4kX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cJn02R/btsKCemwaKN/m6RUaWMK8AhonqXQDG4kX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cJn02R/btsKCemwaKN/m6RUaWMK8AhonqXQDG4kX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcJn02R%2FbtsKCemwaKN%2Fm6RUaWMK8AhonqXQDG4kX1%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;538&quot; height=&quot;493&quot; data-origin-width=&quot;616&quot; data-origin-height=&quot;565&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;FCN에서 제안된 여러 연구 내용들은 향후 Segmentation Task에서 가이드라인처럼 활용될 수 있을 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FCN 이후의 U-Net, DeepLab 등에선 어떤 식으로 발전되었을지 추후 하나하나 리뷰해보도록 하겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;금방 정리하려고 한 내용인데도 많은 시간이 필요했습니다 .. 항상 미리미리 정리하는 습관은 늘 중요한 것 같습니다.&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;/p&gt;</description>
      <category>Paper Review/Segmentation</category>
      <category>fcn</category>
      <category>Fully Convolutional Network</category>
      <author>정새님</author>
      <guid isPermaLink="true">https://jeongsae.tistory.com/16</guid>
      <comments>https://jeongsae.tistory.com/16#entry16comment</comments>
      <pubDate>Sat, 9 Nov 2024 15:33:34 +0900</pubDate>
    </item>
    <item>
      <title>PCA (Principal component analysis, 차원 축소)</title>
      <link>https://jeongsae.tistory.com/17</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&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;이번 포스트에선 데이터의 시각화 등을 위해 사용되는 대표적인 차원 축소 방법인 PCA에 대해 다뤄보겠습니다.&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;뜬금 없이 PCA에 대한 내용이 나와서, 약간 서순이 안맞는다 느낄 수 있지만 .. 모두 다 리뷰할 예정입니다 ..&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;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;분산이란?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PCA를 다루기 이전에, 가장 먼저 다뤄볼 개념은 데이터의 퍼진 정도를 의미하는 &lt;b&gt;분산&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1027&quot; data-origin-height=&quot;336&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AdYXl/btsJYaLNWy5/7tI86FinwWNqJw9Dfoka61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AdYXl/btsJYaLNWy5/7tI86FinwWNqJw9Dfoka61/img.png&quot; data-alt=&quot;https://wikidocs.net/153147&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AdYXl/btsJYaLNWy5/7tI86FinwWNqJw9Dfoka61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAdYXl%2FbtsJYaLNWy5%2F7tI86FinwWNqJw9Dfoka61%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;560&quot; height=&quot;183&quot; data-origin-width=&quot;1027&quot; data-origin-height=&quot;336&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://wikidocs.net/153147&lt;/figcaption&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;X축을 기준으로 쭉 펴진 1차원 데이터를 분석할 때, 가장 먼저 눈에 들어오는건 &lt;b&gt;데이터가 퍼진 정도&lt;/b&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;기초적인 통계 정보지만 PCA에선, 이렇게 데이터가 퍼진 정도를 가장 기본으로 합니다.&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;분산&lt;/b&gt;이라는 것은 &lt;b&gt;데이터가 퍼진 정도&lt;/b&gt;를 나타내고, &lt;b&gt;위의 이미지처럼 표현된다&lt;/b&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;다만 PCA에선 &lt;b&gt;1차원 데이터의 분산&lt;/b&gt;이 아닌, &lt;b&gt;2차원 이상의 데이터의 분산&lt;/b&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;이러한 분산을 &lt;b&gt;공분산&lt;/b&gt;이라고 하며 다음 파트에서 다뤄볼 주요 내용입니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style6&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h3 style=&quot;color: #000000;&quot; data-ke-size=&quot;size23&quot;&gt;공분산이란?&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;968&quot; data-origin-height=&quot;268&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cdPbwC/btsJY6aWwgu/9wSgs7qr8nBewkJK7JYvZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cdPbwC/btsJY6aWwgu/9wSgs7qr8nBewkJK7JYvZK/img.png&quot; data-alt=&quot;https://datascienceschool.net/02%20mathematics/07.05%20%EA%B3%B5%EB%B6%84%EC%82%B0%EA%B3%BC%20%EC%83%81%EA%B4%80%EA%B3%84%EC%88%98.html&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cdPbwC/btsJY6aWwgu/9wSgs7qr8nBewkJK7JYvZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcdPbwC%2FbtsJY6aWwgu%2F9wSgs7qr8nBewkJK7JYvZK%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;607&quot; height=&quot;168&quot; data-origin-width=&quot;968&quot; data-origin-height=&quot;268&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://datascienceschool.net/02%20mathematics/07.05%20%EA%B3%B5%EB%B6%84%EC%82%B0%EA%B3%BC%20%EC%83%81%EA%B4%80%EA%B3%84%EC%88%98.html&lt;/figcaption&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;공분산의 개념을 다루는 자료에서, 위와 같은 이미지를 가장 많이 보았을 것이라 생각됩니다.&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;/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;공&quot;분산&quot;&lt;/b&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;앞서 우리는 분산에 대해 짚고 넘어갔습니다. 이 때의 분산이라는 것은 결국 &lt;b&gt;데이터가 퍼진 정도&lt;/b&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;공분산도 결국 2차원 이상의 변수들에 대해 &lt;b&gt;각각의 변수들이 각각의 평균에서 얼마나 퍼져있나&lt;/b&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;다만 퍼져있는 정도와 함께 &lt;b&gt;변수 사이의 관계는 어떤가&lt;/b&gt;? 를 함께 보게되며 이를 변수 사이의 &lt;b&gt;관계&lt;/b&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;이때의 관계라는 것은 서로 &lt;b&gt;비례&lt;/b&gt;하거나, &lt;b&gt;반비례&lt;/b&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;이렇게 각각의 변수의 &lt;b&gt;퍼진 정도와 관계를 기반으로 행렬로 나타낸 것을 공분산 행렬&lt;/b&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;이렇게 구해진 공분산 행렬로는 어떤 것을 알 수 있을지 다음 파트에서 다뤄보도록 하겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;color: #000000;&quot; data-ke-size=&quot;size23&quot;&gt;고유값 분해 (Eigen Value Decomposition)&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;앞서 우리는 &lt;b&gt;분산&lt;/b&gt;과 &lt;b&gt;공분산&lt;/b&gt;에 대해서 배워보았고, 어느 정도 이해할 수 있었습니다.&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;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 때 PCA에선, 공분산 행렬을 분해하기 위해 &lt;b&gt;고유값 분해&lt;/b&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;값(크기)과 벡터(방향)&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;677&quot; data-origin-height=&quot;350&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b8Ixvo/btsJZbiX1vC/HlOXJ5m4bzK90FXKqxwXYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b8Ixvo/btsJZbiX1vC/HlOXJ5m4bzK90FXKqxwXYk/img.png&quot; data-alt=&quot;https://blog.naver.com/kiakass/222194097431&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b8Ixvo/btsJZbiX1vC/HlOXJ5m4bzK90FXKqxwXYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8Ixvo%2FbtsJZbiX1vC%2FHlOXJ5m4bzK90FXKqxwXYk%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;573&quot; height=&quot;296&quot; data-origin-width=&quot;677&quot; data-origin-height=&quot;350&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://blog.naver.com/kiakass/222194097431&lt;/figcaption&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;복잡해 보이지만, 조금 풀어서 본다면 고유 값과 고유 벡터의 의미는 다음과 같습니다.&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;고유벡터&lt;/b&gt;는 선형 변환 후에도 &lt;b&gt;방향이 바뀌지 않는&lt;/b&gt; 벡터입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;고유값&lt;/b&gt;은 선형 변환 후 벡터의 크기가 얼마나 &lt;b&gt;커지거나 작아지는지를 나타내는 값&lt;/b&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;고유 벡터라는 말이 어렵게 보일 수 있지만 결국엔 그냥 벡터이고, 우리가 배웠다시피 벡터는 방향을 갖습니다.&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;/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;고유값 분해(크기와 방향으로 분해)&lt;/b&gt;와 &lt;b&gt;공분산(데이터가 퍼진 정도)&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;681&quot; data-origin-height=&quot;597&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Kveop/btsJZJzyTwG/r3zi2Mmx2DJ2qnpwkRhhk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Kveop/btsJZJzyTwG/r3zi2Mmx2DJ2qnpwkRhhk0/img.png&quot; data-alt=&quot;https://angeloyeo.github.io/ppts/3-1-%EA%B3%B5%EB%B6%84%EC%82%B0%20%ED%96%89%EB%A0%AC%EC%9D%98%20%EC%9D%98%EB%AF%B8%EC%99%80%20PCA.pdf&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Kveop/btsJZJzyTwG/r3zi2Mmx2DJ2qnpwkRhhk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKveop%2FbtsJZJzyTwG%2Fr3zi2Mmx2DJ2qnpwkRhhk0%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;489&quot; height=&quot;429&quot; data-origin-width=&quot;681&quot; data-origin-height=&quot;597&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://angeloyeo.github.io/ppts/3-1-%EA%B3%B5%EB%B6%84%EC%82%B0%20%ED%96%89%EB%A0%AC%EC%9D%98%20%EC%9D%98%EB%AF%B8%EC%99%80%20PCA.pdf&lt;/figcaption&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;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;앞선&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;공분산 행렬을 분해&lt;/b&gt;해서, 데이터가 각각 &lt;b&gt;어느 방향으로 얼마나 퍼져있나~&lt;/b&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;물론 많은 부분들이 생략되어있지만, 어느 정도 이해하실 수 있을 것이라 생각합니다.&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;차원 축소&lt;/b&gt;를 수행하는 과정을 다뤄보겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style6&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h3 style=&quot;color: #000000;&quot; data-ke-size=&quot;size23&quot;&gt;내 데이터에 대한 차원 축소&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 공분산과 고유값 분해를 다루며 약간 어지러울 수 있지만, PCA의 설명에 대해선 거의 다 끝났습니다!&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1728395358185&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 1. 데이터 생성 (2차원 데이터)
X = np.random.randn(100, 5) # (100, 5) shape

# 2. 데이터 정규화
X_mean = np.mean(X, axis=0)
X_normalized = X - X_mean

# 3. 공분산 행렬 계산
cov_matrix = np.cov(X_normalized.T) # (5, 5) shape

# 4. 고유값과 고유벡터 계산
eigenvalues, eigenvectors = np.linalg.eig(cov_matrix) # Value : (5), Vector : (5, 5)&lt;/code&gt;&lt;/pre&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;100개의 데이터&lt;/b&gt;와 &lt;b&gt;5개의 특성&lt;/b&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;이러한 데이터에 대해 공분산 행렬을 계산했을 땐, &lt;b&gt;자기자신을 포함해서 여러 특성과의 관계를 행렬&lt;/b&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;5개의 특성이 존재하기에, 전체 공분산 행렬은 &lt;b&gt;정방 행렬의 형태인 (5, 5) 형태&lt;/b&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;이 공분산 행렬의 &lt;b&gt;대각 행렬&lt;/b&gt;은 자기 자신과의 관계를 나타내기에, 전부 1의 값이 도출되게 됩니다.&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개의 고유 값과 5개의 고유 벡터&lt;/b&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;우리가 PCA를 배우며, &lt;b&gt;주성분&lt;/b&gt;이라는 말을 자주 보았는데 이 &lt;b&gt;5개의 고유 값과 벡터가 바로 성분&lt;/b&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;그리고 그 성분들 중, 고유 값을 기준으로 내림차순 하였을 때, &lt;b&gt;가장 큰 값의 고유값과 벡터가 바로 주성분&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;318&quot; data-origin-height=&quot;314&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/F078d/btsJ0cH95FR/mkrgxTRABLGgdyuNFjmj90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/F078d/btsJ0cH95FR/mkrgxTRABLGgdyuNFjmj90/img.png&quot; data-alt=&quot;https://ddongwon.tistory.com/114&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/F078d/btsJ0cH95FR/mkrgxTRABLGgdyuNFjmj90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FF078d%2FbtsJ0cH95FR%2FmkrgxTRABLGgdyuNFjmj90%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;318&quot; height=&quot;314&quot; data-origin-width=&quot;318&quot; data-origin-height=&quot;314&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://ddongwon.tistory.com/114&lt;/figcaption&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;그리고 Scikit-learn에서 PCA를 사용할 때, 파라미터를 입력하는 과정이 고유값의 개수를 선택하는 과정입니다.&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;5차원의 데이터를 2차원으로 낮춘다면, &lt;b&gt;고유값이 작은 뒤쪽의 데이터는 모두 무시하고 앞의 2개만 사용&lt;/b&gt;합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1728445023651&quot; class=&quot;bash&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 5. 축소할 차원의 수만큼 고유 벡터를 선택
k = 1
selected_eigenvectors = eigenvectors[:, :k] 

# 6. 선택한 고유 벡터(방향)를 기반으로 내 데이터를 투영(Projection)
reduced_data = np.dot(centered_data, selected_eigenvectors)&lt;/code&gt;&lt;/pre&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만, 6번 과정에서 고유 값이 큰 고유 벡터의 방향으로 데이터를 투영시킨다는 것은 아래 이미지와 같습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;749&quot; data-origin-height=&quot;774&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oDAsy/btsJX7hwWGy/q1OU5nKItKnPQGjCqOqWe0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oDAsy/btsJX7hwWGy/q1OU5nKItKnPQGjCqOqWe0/img.png&quot; data-alt=&quot;https://tyami.github.io/machine%20learning/PCA/#google_vignette&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oDAsy/btsJX7hwWGy/q1OU5nKItKnPQGjCqOqWe0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoDAsy%2FbtsJX7hwWGy%2Fq1OU5nKItKnPQGjCqOqWe0%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;389&quot; height=&quot;402&quot; data-origin-width=&quot;749&quot; data-origin-height=&quot;774&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://tyami.github.io/machine%20learning/PCA/#google_vignette&lt;/figcaption&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;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot;&gt;&lt;span style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;text-align: left;&quot;&gt;고차원의 데이터를 내가 구한 방향에 맞게, 그 방향을 가리키는 차원으로 &lt;b&gt;전부 투영&lt;/b&gt;시켜준다! 입니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&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;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot;&gt;&lt;span style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;text-align: left;&quot;&gt;Zk를 봤을 때, &lt;b&gt;데이터의 분산을 가장 잘 보존하는 주성분&lt;/b&gt;이면서도 &lt;b&gt;방향&lt;/b&gt;이 있기에 화살표가 있는 것이 보이실까요?&lt;/span&gt;&lt;/span&gt;&lt;/span&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;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot;&gt;&lt;span style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;text-align: left;&quot;&gt;이렇게 PCA는 공분산과 고유값 분해를 통해 데이터의 분산 구조에서 &lt;b&gt;고유 값(크기)과 고유 벡터(방향)&lt;/b&gt;을 구하고 &lt;br /&gt;&lt;b&gt;분산이 보존되는 최대의 방향&lt;/b&gt;으로 &lt;b&gt;데이터를 모두 투영(행렬곱)&lt;/b&gt;하는 과정이다! 라고 정리할 수 있겠습니다.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;그런데 .. 축소한 데이터를 버리고 다시 &lt;b&gt;복구&lt;/b&gt;하고 싶다면 어떻게 해야하나요? 라는 물음이 생길 수 있습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 앞서 활용한 &lt;b&gt;고유 벡터를 전치(Transpose)&lt;/b&gt; 시켜, 뒤집어준 다음 &lt;b&gt;다시 행렬곱&lt;/b&gt;을 수행해주면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1728445568937&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 7. 역투영(Back-Projection)을 통해 데이터를 복구해보자
reconstructed_data = np.dot(reduced_data, selected_eigenvectors.T)&lt;/code&gt;&lt;/pre&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;축소 과정에서 버려진&lt;/b&gt; 나머지(5개 중 3개)들이 있기 때문에 그 볼륨정도의 &lt;b&gt;손실은 무조건적으로 존재&lt;/b&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;그냥 이러한 방식으로 &lt;b&gt;데이터를 복구할 수 있다&lt;/b&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;이렇게 PCA에 대해 90% 이상 모두 다루었습니다! 생각보다 간단하게 이해할 수 있었을거라 생각합니다.&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;비선형 관계&lt;/b&gt;의 데이터에서의 차원 축소 방법을 간단하게만 소개합니다!&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;color: #000000;&quot; data-ke-size=&quot;size23&quot;&gt;비선형 데이터에서의 차원 축소&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 우리가 공분산을 통해 변수 사이의 관계를 구할 때, &lt;b&gt;비례&lt;/b&gt; 혹은 &lt;b&gt;반비례&lt;/b&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;이러한 &lt;b&gt;비례&lt;/b&gt; 혹은 &lt;b&gt;반비례&lt;/b&gt;는 아주 간단한 관계인 &lt;b&gt;선형 관계&lt;/b&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;하지만 현실 세계의 데이터에서, &lt;b&gt;선형 관계보단 비선형 관계가 더욱 많다&lt;/b&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;기본적인 PCA의 경우 데이터의 &lt;b&gt;선형성을 기본&lt;/b&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;다만, SVM에서 &lt;b&gt;Kernel trick&lt;/b&gt;이 사용된 것처럼 PCA에도 &lt;b&gt;비선형을 위한&lt;/b&gt; 축소 방법(t-SNE)도 존재합니다.&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;이번 파트에선 Kernel trick에 대해서만 간단하게 짚고 넘어가도록 하겠습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;656&quot; data-origin-height=&quot;278&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsaEce/btsJZPs29bg/0xylPUWuiDmcXlBYH74R61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsaEce/btsJZPs29bg/0xylPUWuiDmcXlBYH74R61/img.png&quot; data-alt=&quot;https://medium.com/@Suraj_Yadav/what-is-kernel-trick-in-svm-interview-questions-related-to-kernel-trick-97674401c48d&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsaEce/btsJZPs29bg/0xylPUWuiDmcXlBYH74R61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsaEce%2FbtsJZPs29bg%2F0xylPUWuiDmcXlBYH74R61%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;656&quot; height=&quot;278&quot; data-origin-width=&quot;656&quot; data-origin-height=&quot;278&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://medium.com/@Suraj_Yadav/what-is-kernel-trick-in-svm-interview-questions-related-to-kernel-trick-97674401c48d&lt;/figcaption&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;Kernel trick은 데이터를 &lt;b&gt;고차원 공간으로 변환&lt;/b&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;위 이미지에서 왼쪽의 경우에 &lt;b&gt;선으로 분리하는 것이 불가능&lt;/b&gt;하지만, 고차원에선 &lt;b&gt;면으로 분리될 수 있습니다&lt;/b&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;다만, 데이터를 직접적으로 고차원에 매핑하는 것이 아닙니다. 그렇게 한다면 너무 느려져 버립니다 ..&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;그렇기에 Trick이라는 말을 사용하며, &lt;b&gt;마치 늘어난 차원을 사용하는 것처럼&lt;/b&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;이에 대해선 추후에 다시 한번 깊게 리뷰하도록 하겠으며, 이번 PCA에선 여기까지 마무리하도록 하겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;color: #000000;&quot; data-ke-size=&quot;size23&quot;&gt;마치며&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;여기까지 와서 돌이켜보니, PCA에 대해 어느 정도 쉽게 이해하실 수 있었을까요?&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;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;머신러닝을 이해할 땐, 머리 속에서 3차원을 그려놓고 이리저리 돌려가며 이해하는 것이 중요한 것 같습니다.&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;p style=&quot;color: #333333; text-align: start;&quot; 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;/p&gt;</description>
      <category>Machine Learning/Machine Learning</category>
      <category>dimension reduction</category>
      <category>kernel pca</category>
      <category>pca</category>
      <category>고유값 분해</category>
      <category>차원축소</category>
      <author>정새님</author>
      <guid isPermaLink="true">https://jeongsae.tistory.com/17</guid>
      <comments>https://jeongsae.tistory.com/17#entry17comment</comments>
      <pubDate>Tue, 8 Oct 2024 17:55:44 +0900</pubDate>
    </item>
    <item>
      <title>Haar Cascade Detector</title>
      <link>https://jeongsae.tistory.com/14</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이번 포스트에선 고전 물체 검출 알고리즘인 Haar Cascade Detector에 대해 다뤄보고자 합니다.&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;Haar Cascade 알고리즘은 2001년 발표된 특징 추출 기반 검출 알고리즘입니다.&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;이 때의 특징 추출은 고전적인 알고리즘을 기반으로 하며, CNN의 특징 추출과 유사하다 보시면 됩니다.&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;해당 검출기의 특징 추출은 검출기의 이름에서도 알 수 있다시피 Haar Filter라는 것을 기반으로 합니다.&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;Detector의 가장 기본인 Haar Filter부터 Detector 활용까지 천천히 다뤄보도록 하겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Feature Extraction Using Haar Filter&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 먼저 Haar Cascade Detector의 기본이되는 Haar Filter 기반의 Feature Extraction에 대해 다뤄보겠습니다.&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;Haar Filter란 물체 인식을 위해 사용되는 간단한 형태의 필터입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Filter라는 이름에 걸맞게 해당 Filter를 통한 연산은 CNN의 Convolution Filter과 동일하게 동작합니다.&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;일반적인 Convolution Filter와 다른 점으론, Haar Filter는 흑/백 영역으로 나뉘어진 필터라는 것입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;316&quot; data-origin-height=&quot;273&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kLw1Y/btsJyTwr3NQ/Joc3MIBR10RY4tFepmtnN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kLw1Y/btsJyTwr3NQ/Joc3MIBR10RY4tFepmtnN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kLw1Y/btsJyTwr3NQ/Joc3MIBR10RY4tFepmtnN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkLw1Y%2FbtsJyTwr3NQ%2FJoc3MIBR10RY4tFepmtnN0%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;316&quot; height=&quot;273&quot; data-origin-width=&quot;316&quot; data-origin-height=&quot;273&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 이미지와 같이 직사각형의 간단한 모양에, 내부는 흑/백으로 이루어진 Filter를 Haar Filter라고 합니다.&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;Haar Filter는 흰색 영역 및 검은색 영역 각각에 속하는 모든 픽셀을 더해준 뒤, 이를 빼주는 방식으로 연산됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과적으로 해당 Filter를 통해, 이미지 내의 특정한 특징을 강조하거나 패턴을 검출하는 과정을 수행합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;410&quot; data-origin-height=&quot;281&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/90VVe/btsJzNWn7LK/0pSE2V2vX0tFOCwizCwsK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/90VVe/btsJzNWn7LK/0pSE2V2vX0tFOCwizCwsK1/img.png&quot; data-alt=&quot;https://docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/90VVe/btsJzNWn7LK/0pSE2V2vX0tFOCwizCwsK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F90VVe%2FbtsJzNWn7LK%2F0pSE2V2vX0tFOCwizCwsK1%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;410&quot; height=&quot;281&quot; data-origin-width=&quot;410&quot; data-origin-height=&quot;281&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 한가지 구조를 지속적으로 사용하는 것이 아닌, 다양한 Filter를 정의하여 함께 사용하게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단한 패턴을 기반으로 한 여러 패턴이나 다양한 스케일 혹은 방향을 통해 Haar Filter를 정의하게 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;601&quot; data-origin-height=&quot;386&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tasrN/btsJySxyFXj/A7H8uu7OlbWckKYHTl7zo0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tasrN/btsJySxyFXj/A7H8uu7OlbWckKYHTl7zo0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tasrN/btsJySxyFXj/A7H8uu7OlbWckKYHTl7zo0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtasrN%2FbtsJySxyFXj%2FA7H8uu7OlbWckKYHTl7zo0%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;466&quot; height=&quot;299&quot; data-origin-width=&quot;601&quot; data-origin-height=&quot;386&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Haar Filter를 사람의 얼굴과 같은 객체 탐지에서 사용될 수 있는 이유론, 얼굴의 패턴이 정해져있기 때문입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;예를 들어 눈, 코, 턱, 입에 존재하는 명암으로 인한 패턴들이 데이터로 봤을 땐, 모든 사람들이 유사하기 때문입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;이러한 Haar Filter는 연산 방식이 단순하고 직관적이기에, 쉽게 사용되고 빠르게 특징을 추출할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;물론 대부분의 경우에선, Feature Extractor의 역할을 아주 잘 수행한다고 말할 수 있습니다!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;430&quot; data-origin-height=&quot;428&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mBfqA/btsJyH32SUo/BHV3DO5hdi2vrly6ldu240/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mBfqA/btsJyH32SUo/BHV3DO5hdi2vrly6ldu240/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mBfqA/btsJyH32SUo/BHV3DO5hdi2vrly6ldu240/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmBfqA%2FbtsJyH32SUo%2FBHV3DO5hdi2vrly6ldu240%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;430&quot; height=&quot;428&quot; data-origin-width=&quot;430&quot; data-origin-height=&quot;428&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 Haar Filter를 기반으로 Detector를 만들 때, 위와 같은 정면을 보고 있는 얼굴 데이터 셋을 활용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 데이터 셋은 24 * 24 해상도를 가지며, 얼굴이 없는 Negative 이미지도 함께 사용합니다.&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;이렇게 전체적인 Haar Cascade 검출기의 단계 중 가장 기본이 되는 Haar Filter에 대해 알아보았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;검출기는 이러한 Haar Filter를 통해, Sliding window 방식으로 이미지를 훑으며 특징을 추출합니다.&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 파트에선 Haar Filter의 특징 추출 방식을 유지하며, 연산량을 줄이는 방법에 대해 알아보겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style6&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;Integral Image&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Integral Image는 Haar Filter의 반복적인 더하기 연산의 횟수를 크게 줄일 수 있는 방법입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 알고리즘 개선을 통해 검출기의 속도 자체를 개선하여, 검출기는 15 fps로 물체를 검출할 수 있게됩니다.&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;물론 이러한 방법만을 통해, Haar 검출기의 속도가 매우 빠른 것은 아니며, 추가적인 방법 또한 존재합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 내용에 대해선 아래 Cascade 구조 파트에서 다시 한 번 다뤄보도록 하겠습니다.&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;다시 본론으로 돌아와서, Integral Image란 우리 말로 적분 이미지 혹은 통합 이미지의 뜻으로 사용됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;해당 방법이 적분 이미지라는 명칭을 갖게된건, 동작 방식이 수학의 적분 방식을 갖기 때문입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;미분과 반대 개념인 적분을 계속 값을 &lt;b&gt;누적&lt;/b&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;어떤 것을 누적하느냐? 라고 한다면 이는 이미지에 존재하는 픽셀을 해당 방향으로 누적한 것을 의미합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;175&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eia5TU/btsJDxAf3EG/hKz6huRg3Bt8I78cdmyHd1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eia5TU/btsJDxAf3EG/hKz6huRg3Bt8I78cdmyHd1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eia5TU/btsJDxAf3EG/hKz6huRg3Bt8I78cdmyHd1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Feia5TU%2FbtsJDxAf3EG%2FhKz6huRg3Bt8I78cdmyHd1%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;370&quot; height=&quot;216&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;175&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 이미지에서, 어떤 Filter가 픽셀을 반복적으로 더한다고 했을 때, 이를 적분 이미지로 쉽게 구할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;예를 들어, 위에서 왼쪽 영역의 합은 14(3+2+5+4)이고, 적분 이미지에선 (46-20-22+10)로 계산됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2*2 크기의 Filter에선 큰 차이가 없지만, Filter 크기가 커지면 커질수록 차이가 크게 발생하게 됩니다.&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;적분 이미지에선 Filter의 크기가 어떻든 무조건 4개의 포인트를 더하고 빼주기만 하면 되기 때문입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러 크고 작은 비율과 크기의 Filter를 사용하기에 검출 속도를 위해선 무조건 사용해주어야겠죠?&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;그렇기에 Haar Cascade 검출기는 전처리 단계로, 입력에 대해 Integral Image를 생성하는 단계를 수행합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 파트에선 Haar Filter와 Integral Image를 통해 추출된 특징으로 Classifier의 학습 과정을 다뤄보겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;Feature Selection Using Adaboost&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 Integral Image와 Haar Filter를 사용하여, 여러 스케일의 이미지에서 특징을 뽑는 과정을 거쳤습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;Haar Cascade 검출기의 논문에선, 앞선 과정을 통해 추출된 특징이 약 180,000개라고 설명했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;그렇기에 우리는 어떠한 특징이 유효한지, 추출된 특징에서 선택해주는 과정을 거쳐야합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 때, 유효한 특징을 선택하기 위해 Adaboost를 활용합니다.&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;Adaboost 모델은 여러 개의 약한 분류기를 기반으로, 강한 분류기를 만들게됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 여러 약한 학습기들은 얼굴이 있는(positive) 이미지와 없는(negative) 이미지를 구분하도록 학습됩니다.&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;이 때, 하나의 약한 학습기는 하나의 Haar Filter를 통해 도출된 특징으로 학습됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 정의한 Haar Filter들을 Filter 개수 만큼의 학습기에 매칭해서, 어떤 특징이 유효한지 찾는 과정을 거칩니다.&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;유효한 특징이라는 것은, 결국 객체(positive)와 배경(negative)을 잘 분류하는 학습기를 의미합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 과정에서 많은 특징이 버려지고, 지정한 객체를 분류하기 위해 효과적인 특징만이 남게됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;457&quot; data-origin-height=&quot;292&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CqKRY/btsJDuwYK9R/MqxcNhONJ027KksDJxehcK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CqKRY/btsJDuwYK9R/MqxcNhONJ027KksDJxehcK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CqKRY/btsJDuwYK9R/MqxcNhONJ027KksDJxehcK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCqKRY%2FbtsJDuwYK9R%2FMqxcNhONJ027KksDJxehcK%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;457&quot; height=&quot;292&quot; data-origin-width=&quot;457&quot; data-origin-height=&quot;292&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, 얼굴을 효과적으로 검출하는 Filter는 Adaboost를 통해 정의된 위 2개의 Filter라고 할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;여기까지 우리는 Filter를 정의하고, 이미지를 전처리하고, 특징을 추출하고, 특징을 선택하는 과정을 거쳤습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 파트에선, 학습된 약한 학습기들을 순차적으로 이어서 구성하는 Cascade 구조에 대해 다뤄보겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;Cascade&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;머신러닝과 딥러닝에서 Cascade 구조란 순차적으로 만들어주는, 즉 직렬화의 개념을 의미합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;Haar Cascade 구조에서 사용되는 강한 학습기는, 학습된 N개의 약한 학습기를 기반으로 만들어집니다.&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;예를 들어, 20개의 약한 학습기가 있다면 성능이 낮은 순서대로 놓은 뒤, 5개/10개/15개/20개로 구성합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 구성하는 이유는, Cascade 구조와 함께 물체 검출의 속도를 개선하기 위함입니다.&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;4개의 강한 학습기를 성능 순으로 놓은 뒤, 마지막 학습기에 도달하기 전에 negative로 분류되는 경우 무시합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과적으로 가장 성능이 좋은 강한 학습기까지 도달해서, positive 판정을 받은 경우에만 predict로 사용합니다.&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;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;398&quot; data-origin-height=&quot;250&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QkNKy/btsJEOVhJSq/M7C55WsKT6ndVsdG4I2cdk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QkNKy/btsJEOVhJSq/M7C55WsKT6ndVsdG4I2cdk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QkNKy/btsJEOVhJSq/M7C55WsKT6ndVsdG4I2cdk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQkNKy%2FbtsJEOVhJSq%2FM7C55WsKT6ndVsdG4I2cdk%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;398&quot; height=&quot;250&quot; data-origin-width=&quot;398&quot; data-origin-height=&quot;250&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 이미지에서 보여지는 각 단계가 모두 하나의 강한 학습기라고 이해해주시면 될 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;이러한 단계가 길고 복잡할수록 검출 성능 자체는 올라가겠지만, 그에 따라 검출 속도 또한 낮아지게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 Trade-off 관계라고 하며, 이를 잘 조절하여 적절한 성능과 속도를 갖도록 구성해주어야 합니다.&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;이렇게 Cascade 구조까지 알아보았습니다. 다음 파트에선 마지막 검출 결과에 대해 다뤄보겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;Results&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 우리는 Haar Cascade의 전반적인 내용에 대해 다루었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;앞서 구성된 검출기는 어떤 임의의 입력 이미지에 대해, 임의 크기의 윈도우를 이동시키며 타겟 객체를 검출합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;얼굴 데이터로 학습된 검출기는 얼굴만, 눈 데이터로 학습된 검출기는 눈만 검출하게 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;835&quot; data-origin-height=&quot;258&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b0hc0q/btsJDPtS74g/LQgKNBVsBbU3iuDVqqeOK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0hc0q/btsJDPtS74g/LQgKNBVsBbU3iuDVqqeOK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0hc0q/btsJDPtS74g/LQgKNBVsBbU3iuDVqqeOK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0hc0q%2FbtsJDPtS74g%2FLQgKNBVsBbU3iuDVqqeOK0%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;676&quot; height=&quot;209&quot; data-origin-width=&quot;835&quot; data-origin-height=&quot;258&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 이미지는 MIT+CMU 테스트 데이터를 통해, 검출 결과를 시각화한 이미지입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;또한 Sliding Window 방식으로 인해, 하나의 얼굴에서 여러 예측이 도출될 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 경우엔 서로 겹치는 N개의 예측 좌표를 평균내는 등의 후처리를 추가적으로 적용해주게 됩니다.&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;현재는 NMS와 같은 방법을 사용하지만, 과거엔 모든 예측 좌표를 평균내는 등의 방법을 사용한 것으로 보여집니다.&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;이렇게 우리는 고전 물체 검출기인 Haar Cascade Detector에 대해 다뤄보았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;이러한 Haar Cascade Detector는 현재 Python-OpenCV에서도 사용해볼 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 포스트에선 다루지 않지만, 추후 기회가 된다면 OpenCV 기반의 예제 또한 다뤄보도록 하겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 포스트에선 Haar Cascade Detector에 대해 다뤄보았습니다.&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;/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;/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;/p&gt;</description>
      <category>Computer Vision</category>
      <category>AdaBoost</category>
      <category>CASCADE</category>
      <category>Face Detection</category>
      <category>haar cascade detector</category>
      <category>haar filter</category>
      <category>integral image</category>
      <author>정새님</author>
      <guid isPermaLink="true">https://jeongsae.tistory.com/14</guid>
      <comments>https://jeongsae.tistory.com/14#entry14comment</comments>
      <pubDate>Mon, 16 Sep 2024 18:31:00 +0900</pubDate>
    </item>
    <item>
      <title>[글또 10기] 정새 - 삶의 지도</title>
      <link>https://jeongsae.tistory.com/15</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이번 포스트에선 글또 10기 지원을 위한 삶의 지도를 작성하며, 나 자신을 돌아보고자 합니다.&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;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;삶의 지도 작성 방안&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;신규 지원시 글(삶의 지도) 작성
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;글또를 신규로 참여하는 분들은 &amp;ldquo;자신이 어떻게 살아왔는지 - 삶의 지도&amp;rdquo;에 대한 글을 작성해서 &lt;br /&gt;제출해주셔야 합니다(글또 지원 Form에 제출)&lt;/li&gt;
&lt;li&gt;삶의 지도라는 것은 제가 붙인 이름이며, 자신이 어떤 사람이고 어떤 성격을 가지고 있고, &lt;br /&gt;어떤 사건으로 지금의 내가 되었는가에 대해 작성한 내용입니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;자신이 어린 시절부터 여태까지 어떤 시간을 보내왔는지 기록하는 과정을 통해 메타인지가 &lt;br /&gt;향상될 수 있으며, 이 내용을 토대로 이직하실 때 이력서에도 활용할 수 있을겁니다&lt;/li&gt;
&lt;li&gt;생각하시는 과정이 어렵다면 현재 내가 가진 &amp;ldquo;역량&amp;rdquo;이 무엇인지 고민해보시고 그 역량을 &lt;br /&gt;어떻게 얻었는지 시간 역순으로 고민해보셔도 좋습니다&lt;/li&gt;
&lt;li&gt;형식은 자유롭게 하셔도 괜찮으나, 글로 작성 부탁드립니다
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;글자수 제한은 없으나, 글또 지원만을 위한 목적이 아니라 자신을 정리하기 위한 목적으로 &lt;br /&gt;글을 한번 작성해보시길 추천드립니다&lt;br /&gt;(보통 공백 제외 1000자는 넘어야 자신에 대해 정리했다고 생각합니다. 공백 제외 1000자는 &lt;br /&gt;넘게 작성하시는 것을 추천드려요)&lt;/li&gt;
&lt;li&gt;자신은 어떤 사람이고, 왜 이런 사람이 되었고, 뭘 해보고 싶고 등. 여러 내용을 담을 수 있을거에요. &lt;br /&gt;메타인지를 늘릴 수 있는 글이니 이번 기회에 잘 작성해보시는 것을 추천드려요.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;취업을 먼저? 전문대라도?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어린 시절 우리집은 유복하지 않았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;그래서 나는 일반 인문계 고등학교가 아닌, 특성화고를 선택했고 회계나 컴활을 기반으로 한 사무직을 생각했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇게 1학년부터 매일 밤 늦게까지 진행하는 방과후반을 하면서 여러 자격증을 취득하고 취업을 준비했다.&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;약간의 변화가 생긴건 2학년에 진학하면서, 내가 속한 방과후반에서 진행한 c++ 프로그래밍 수업이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;그때 만들었던 게임은 키보드 방향키로 이동하면서, 맵에 랜덤으로 만들어지는 집과 구슬이 있고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;그 당시 수업을 들을 땐 잘 몰랐으나, 지금 와서 생각해보면 꽤나 열정적으로 참여했던 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;그렇게 2학년을 거치면서, 프로그래밍이라는 것에 대해 조금 알게되고 흥미를 느끼게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;3학년에 진학하고 시간이 흘러 취업을 위한 이력서와 자기소개서를 작성하던 시기였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;그 이유로는 취업이 아닌 일단 대학을 가라였고, 못해도 일단 전문대라도 가라는 얘기였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 당시에는 너무 듣고싶지 않았던 말이었고, 내가 노력했던 3년에 가까운 시간이 부정당하는 느낌이었다.&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;그땐 너무 속상했지만, 지금 와서 생각해보면 정말 너무나도 감사한 일이라고 생각한다.&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;졸업과 방황의 시기&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;대학에 와서 나는 2학년을 마치고, 군대를 다녀오고 나서도 전혀 공부에 대한 마음이 없었다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;어떻게든 고등학교때 배웠던 것들을 유지해서 취업을 하고싶었다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;(취업을 위한 공부(회계, 엑셀, PPT 등)와 기술/지식을 배우는 공부와는 다르다고 생각했었다.)&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;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;물론 고등학교때 성적을 열심히 챙긴 기억이 있어서, 학점 관리는 열심히 했지만 큰 의미를 두지 않았다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;그렇게 학점은 챙기지만, 별다른 공부는 하지않고 단지 알바를 하며 하루하루를 버리고 지냈다.&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;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;그렇게 2학년을 마치고 군대를 다녀오고 난 뒤, 3학년으로 복학하여 이전과 동일하게 지냈었다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 대충 시간을 보낸 학부생의 결말이 어떻겠는가?&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;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;다른 이들이 졸업 작품과 팀을 꾸릴 때, 아는게 얼마 없으니 할 수 있는게 거의 없었다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;그 당시에도, 빨리 졸업해서 무슨 일을 준비할지 밖에 머리에 없었다.&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;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;결국 3학년 2학기에 와선, 나는 아무것도 준비하지도, 한것도 없는 바보같은 사람이 되어있었다.&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;우연하게도&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2학기엔 내가 지금까지 준비했던 것들로 아무 스타트업, 중소기업에 이력서를 막 넣기 시작했다.&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;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;사무직이던 개발이던 내가 할 수 있는지, 할 수 없는지 아무것도 생각하지 않고 막 넣었다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;정말 미친짓이었지만, 결과적으론 한 AI/IT 스타트업의 인턴/사무직으로 취업할 수 있었다.&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;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;어떻게 붙었는지도 모르겠고, 왜 나를 뽑아주셨는지 지금 와서 생각해도 잘 모르겠다 ..&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;대표님은 나에게 회사 일도 배우고, 개발과 AI도 같이 공부하면서 열심히 다니라고 해주셨다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;(개발이나 AI에 대한 아주아주 약간의 이론은 아는 사무직으로 키우고자 생각하셨던게 아니셨을까?)&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;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;그렇게 처음 Python에 대해 알게 되었고, 일과 공부를 병행하며 고등학교 시절 내 목표를 달성할 수 있었다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;(결과적으론 돈도 벌고, 일을 잘하기 위한 공부를 하는거라 전혀 부담이 없었다.)&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;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;한달정도 매일 8시부터 6시까지, 그리고 밤 11시~12시까지 매일매일 Python, 서류 작업을 배워나갔다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;약간 Python에 익숙해졌을 쯤, 처음 AI에 대해서도 공부해보았다.&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;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;물론 제대로된 공부는 아니었고, 책을 보고 간단한 분류 모델이나 회귀 모델을 만들어내는 정도였다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;당연하게도 내부 로직이 어떻게 돌아가는지 보단, 코드가 잘 동작하는지에 초점을 두었었다.&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;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;지금도 기억나는게 cifar-10 데이터를 통해 데이터 로드부터 confusion matrix를 도출하는 전체 코드를&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;오류 없이 만들어보고 싶어서, 이 코드만 매일 14시간씩 3일동안 작업했었던 경험도 있다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;(책 안보고 기억대로 만들어보고 싶었고, 지금 생각해봐도 객기를 좀 심하게 부렸다고 생각한다.)&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;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;AI에 대해 배워본지 한달정도 지날 쯤, 대표님께서 내가 몰두하는 모습을 보시곤 멘토를 붙여주셨다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;당시 성균관대에서 석박 통합과정으로 열심히 연구에 몰두하는 같은 나이대의 친구였다.&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;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;나이로는 친구였지만, 나와 친구의 관계는 신입생과 교수님 정도의 아주아주아주 큰 차이가 존재했다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;어떻게 공부해야하고, 무엇을 공부해야하고, 어떤 것을 하면 안되는지 정말 많은 것을 배웠었다.&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;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;그렇게 내가 배우고 익히는 것에 있어서, 아주 약간이나마 가속이 붙기 시작했다.&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;성장을 위해 노력한 시기&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Python과 AI를 배운지 4개월정도 되는 시점에 회사에 문제가 하나 생겼다.&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;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;진행 중이던 AI 모델 개발 사업이 하나 있었는데, 협력 개발 연구원의 실수로 인해 개발이 불가하게 됐다.&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;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;당시 핫한 GAN을 통해, 데이터의 비어있는 값을 채우는 Imputation을 진행하고,&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;생성된 데이터를 기반으로, 채워진 데이터로 예측 모델을 만들어야하는 상황이었다.&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;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;내부적으로 많은 논의를 해본 결과, 내가 맡아서 진행하고 모르는 부분은 멘토에게 물어보자는 결론이 나왔다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;아직 제대로 아는 것이 얼마 없는 상황이었지만, 그만큼 상황이 급박했기에 못한다 할 수 없었다.&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;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;그렇게 사업 종료를 2달 반정도 앞둔 시점에서 내 첫 프로젝트가 시작된 셈이다.&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;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;멘토가 지도해주는 베이스라인과 주의점을 기반으로 정말 많은 자료 조사를 진행하고 정리했다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;또한 필요한 모델이 어떤 모델이고 어떤 원리이며, 어떻게 구현할 수 있는지도 상세하게 알아야했다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;(개발뿐만 아니라, 최종보고서를 위한 자료 정리도 필요했기 때문이다.)&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;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;개발을 수행하는 2달간 정말 많은 질문을 하고 답변을 받고, 부족한 부분은 잠을 줄여서라도 공부했다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;결과적으로 사업은 큰 문제 없이 마무리될 수 있었다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;(지금 와서 개발된 코드를 다시 살펴보니, 부족한 부분이 정말 많았다.)&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;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;해당 프로젝트를 마무리하고 조금 지난 시점에서, 나는 AI에 대해 본격적으로 공부하기 시작했다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;회사 내부에서도 외부 이슈에 대응하기 위해, 내부에 AI를 할 줄 아는 인력이 필요하다는 의견이 있었다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;(지난 프로젝트에서의 이슈나, 멘토에게 항상 요청할 수 없다는 것을 알기 때문이다.)&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;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;첫 회사에 있는 3년동안 독학으로 정말 많은 강의를 보고, 생각을 정리하고, 업무를 하며, 개인 프로젝트틀 했다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;AI를 아는 사람이 나밖에 없다보니, 나는 내가 설명할 내용을 절대로 틀려선 안된다고 생각했기 때문이다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;내가 틀리게 알거나 잘못 설명하는 순간, 외부에서 우리 회사를 무시할 것이라 생각했기 때문이다.&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;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;그렇기에 하나를 공부하더라도 많은 시간을 들여 꼼꼼하게 자료를 살펴보고 정리하면서 공부했으며,&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;외부 발표 자료를 만들때도 하나의 발표 자료를 50번도 넘게 다시 열어볼 정도로 신중하게 정리했다.&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;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이런 내 모습을 봐오던, 내 주변의 동료분들이나 대표님은 나를 믿고 신뢰할 수 있다고 말해주셨다.&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;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;물론 나는 아직도 매우매우 부족하다 느끼지만,&lt;span&gt; 전혀 좌절하진 않았다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;남들보단 조금 돌아왔고, 부족하기도 하지만, 내가 나아가야 할 길을 잘 알고있으니 노력만 하면 되기 때문이다.&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;앞으로의 목표&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;스타트업에 입사해서 3년간 열심히 노력했고, 그 결과를 바탕으로 이직에 성공했다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;그렇게 열심히 했던 스타트업에서 왜 나왔느냐?는 회사의 상황, 나의 성장과 앞으로의 미래 때문이다.&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;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;어쨌든 이직에는 성공했고, 현재는 철도 검측과 관련한 회사에서 비전 기반 이상 탐지를 진행하고 있다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;회사 자체도 마음에 들지만 내가 배워야할 것들이 산더미라 너무 좋은 환경이라고 생각한다.&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;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이곳에선 조금 더 많은 것을 알고 이뤄보기 위해 노력해보고자 마음을 다잡고 있다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;대학원, 수학, 토익, 경진대회, 포트폴리오, 사이드 프로젝트 등 내가 할 수 있는 부분까지 최대한 해보려고 한다.&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;p data-ke-size=&quot;size16&quot;&gt;목표이기도 하고 꿈이기도 하지만, 대기업도 한번 가보고싶고 AI와 관련한 강의도 해보고 싶다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;꿈이 이뤄지는 순간까지 힘들어도 열심히 달려보려고 한다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;마치며&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;조금 글이 길어지긴 했지만, 내가 살아온 과정을 정리해보는 경험이 처음이라 그런지 나름 집중도 잘되고 재밌었다.&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;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;처음엔 글또 지원만을 위해 글을 작성했었지만, 나의 삶을 정리하다보니 이런 기회가 언제 또 있겠나 싶었다.&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;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;글또 기수는 이번 10기가 마지막이기에, 떨어질 수 없다는 마인드로 열심히 적게된 것 같다.&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;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;아무튼 좋은 결과가 있었으면 좋겠다.&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;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;약간 부끄럽긴 하지만 이렇게 긴 글을 읽어주신 분들께 읽어주셔 감사하다는 말씀을 드립니다.&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;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;감사합니다.&lt;/p&gt;</description>
      <category>회고</category>
      <category>jeongsae</category>
      <category>글또</category>
      <category>삶의 지도</category>
      <author>정새님</author>
      <guid isPermaLink="true">https://jeongsae.tistory.com/15</guid>
      <comments>https://jeongsae.tistory.com/15#entry15comment</comments>
      <pubDate>Sat, 14 Sep 2024 09:26:17 +0900</pubDate>
    </item>
  </channel>
</rss>