<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>orange_e7.log</title>
        <link>https://velog.io/</link>
        <description>MS AI School2 Student</description>
        <lastBuildDate>Tue, 23 May 2023 02:03:43 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>orange_e7.log</title>
            <url>https://velog.velcdn.com/images/orange_e7/profile/45aba1ba-4090-4326-9048-b2c3c17ed3cd/image.jpg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. orange_e7.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/orange_e7" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[AI-900 시험 대비 공부]]></title>
            <link>https://velog.io/@orange_e7/AI-900-%EC%8B%9C%ED%97%98-%EB%8C%80%EB%B9%84-%EA%B3%B5%EB%B6%80</link>
            <guid>https://velog.io/@orange_e7/AI-900-%EC%8B%9C%ED%97%98-%EB%8C%80%EB%B9%84-%EA%B3%B5%EB%B6%80</guid>
            <pubDate>Tue, 23 May 2023 02:03:43 GMT</pubDate>
            <description><![CDATA[<p><a href="https://learn.microsoft.com/ko-kr/certifications/resources/study-guides/AI-900">https://learn.microsoft.com/ko-kr/certifications/resources/study-guides/AI-900</a></p>
<p>마이크로소프트 학습 사이트에서 AI-900 시험에 대한 정보를 얻을 수 있다.</p>
<ol>
<li><p>인공지능 기본 사항</p>
<p> AI란? 인간의 능력을 모방하는 SW</p>
<ul>
<li><p>결과 예측 및 기록 데이터를 기반으로 패턴 인식</p>
</li>
<li><p>비정상적인 이벤트 인식 및 의사 결정</p>
</li>
<li><p>시각적 입력 해석 → 테슬라의 자율주행</p>
</li>
<li><p>언어 이해 및 대화 참여 → 챗gpt</p>
</li>
<li><p>정보를 얻기 위해 원본에서 정보 추출</p>
<p>⭐일반적인 인공 지능 워크로드</p>
<p>워크로드 : 주어진 시간 안에 컴퓨터 시스템이 처리해야 하는 작업의 양과 작업의 성과</p>
</li>
<li><p>머신러닝 : 데이터 및 통계를 기반으로 한 예측 모델 -AI의 기초</p>
</li>
<li><p>이상 감지 : 비정상적인 패턴이나 이벤트를 감지하여 선제적 조치를 가능하게 하는 시스템</p>
</li>
<li><p>computer vision : 카메라, 이미지 또는 비디오 시각적 입력을 해석하는 애플리케이션</p>
</li>
<li><p>자연어 처리 : 서면 또는 음성 언어를 해석하고 사용자와 대화에 참여할 수 있는 애플리케이션</p>
</li>
<li><p>정보 마이닝 : 데이터 원본에서 정보를 추출하여 검색 가능한 지식 저장소 만들</p>
<p>⭐ 책임있는 AI의 원칙</p>
<table>
<thead>
<tr>
<th>구분</th>
<th>해결 과제 또는 위험</th>
<th>예제</th>
</tr>
</thead>
<tbody><tr>
<td>공정성</td>
<td>바이어스는(편향) 결과에 영향을 줄 수 있다.</td>
<td>대출 승인 모델은 학습된 데이터의 바이어스로 인해 성별에 따라 차별한다.</td>
</tr>
<tr>
<td>신뢰성</td>
<td>오류로 인해 해로울 수 있다.</td>
<td>자율 주행 차량에서 시스템 오류가 발생하여 충돌이 발생</td>
</tr>
<tr>
<td>프라이버시 및 보안</td>
<td>데이터가 노출될 수 있다.</td>
<td>의료 진단 봇이 중요한 환자 데이터로 학습되지만 이러한 데이터가 안전하지 않게 저장되어 있다.</td>
</tr>
<tr>
<td>포용성</td>
<td>해결방법이 모든 사용자에게 작동하지 않을 수 있다. (모든사람이 골고루 받아야함)</td>
<td>예측 앱은 시각 장애가 있는 사용자를 위한 오디오 출력을 제공하지 않는다.</td>
</tr>
<tr>
<td>투명도</td>
<td>사용자는 복잡한 시스템을 신뢰해야한다.</td>
<td>AI기반 재무 도구는 투자 권장 지침을 제공한다. 이러한 권장 사항은 무엇을 기준으로 할까?</td>
</tr>
<tr>
<td>책임</td>
<td>AI 기반 결정은 누구의 책임?</td>
<td>안면 인식 증거에 따라 죄없는 사람이 번죄자로 확인되었다. 누구의 책임인가?</td>
</tr>
</tbody></table>
</li>
</ul>
</br></li>
<li><p>Azure 인공지능</p>
<p> Azure 기본 : 스케일링 가능하고 신뢰할 수 있는 클라우드 플랫폼</p>
<ul>
<li><p>데이터스토리지</p>
</li>
<li><p>compute</p>
</li>
<li><p>서비스</p>
<p>Azure의 AI 서비스</p>
</li>
<li><p>기계 학습 : 기계 학습 모델의 학습, 배포 및 관리를 위한 플랫폼</p>
</li>
<li><p>cognitive services : 4가지 주요 요소가 있는 서비스 모음 : 비전, 음성, 언어, 결정</p>
</li>
<li><p>Azure Bot Servive : 대화형 봇 개발 및 관리를 위한 클라우드 기반 플랫폼</p>
</li>
<li><p>Azure Cognitive Search : 지능형 검색 및 지식 마이닝을 위한 데이터, 추출, 보강, 인덱</p>
<p>Cognitive Service</p>
<p>: Azure 구독 내의 AI 애플리케이션 리소스</p>
<p>특정 서비스용 독립 실행형 리소스</p>
<p>여러 서비스용 일반 cognitive service 리소스</p>
<p>: 다음을 통해 애플리케이션에서 소비한다.</p>
<p>REST 앤드포인트(https://주소)</p>
<p>인증 키 또는 권한 부여 토큰</br></br></p>
<p>[실습]</p>
<p><a href="https://learn.microsoft.com/ko-kr/certifications/exams/ai-900/">https://learn.microsoft.com/ko-kr/certifications/exams/ai-900/</a></p>
</li>
</ul>
</li>
</ol>
<pre><code>https://github.com/MicrosoftLearning/AI-900-AIFundamentals/blob/main/instructions/01-module-01.md

위 링크로 실습하며 azure 익히기.&lt;/br&gt;&lt;/br&gt;

[필기 덤프문제 참고 링크]
https://gogetem.tistory.com/entry/AI-900-%EB%AC%B4%EB%A3%8C-%EB%8D%A4%ED%94%84-%ED%95%9C%EA%B8%80-01

https://www.examtopics.com/exams/microsoft/ai-900/view/

&lt;/br&gt;
덤프 문제를 반복적으로 풀고 나면 충분히 합격할 수 있다.
ai-900은 비교적 쉬운 편에 속해 5일 정도 집중 공략했고 ai는 알파고 밖에 몰랐던 비전공자도 충분히 합격할 수 있었다.
시험은 한글로 접수하고 시험칠때 영어지문 보기를 클릭할 수 있어 참고하여 보는 것도 추천한다.

다들 꼭 합격하시길 바랍니다!</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Optimizer(옵티마이저)]]></title>
            <link>https://velog.io/@orange_e7/Optimizer%EC%98%B5%ED%8B%B0%EB%A7%88%EC%9D%B4%EC%A0%80</link>
            <guid>https://velog.io/@orange_e7/Optimizer%EC%98%B5%ED%8B%B0%EB%A7%88%EC%9D%B4%EC%A0%80</guid>
            <pubDate>Wed, 10 May 2023 16:20:33 GMT</pubDate>
            <description><![CDATA[<h4 id="💡-optimizer옵티마이저란">💡 Optimizer(옵티마이저)란?</h4>
<p>손실 함수에 손실 점수에 따라 가중치를 조절해주는 역할을 한다.
손실 함수를 줄여나가면서 학습하는 방법은 어떤 옵티마이저를 사용하는 지에 따라 달라진다.</p>
<h4 id="✔️-종류">✔️ 종류</h4>
<ol>
<li>경사하강법(Graient Descent) : 기울기가 0에 가까워지는 점을 찾는다.</li>
</ol>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/91946739-b6d2-43b9-a454-1c1661f8e266/image.png" alt=""></p>
<ol start="2">
<li>SGD : 구간을 끊으면서 점프해서 접근하는 방식이다.</li>
</ol>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/51499ce5-f3a2-4e77-be16-31e33ab484ce/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/45d84603-5179-4c62-9e0e-288f8ef28a47/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/2a800d57-be09-49aa-80d0-90964f39cbcb/image.png" alt=""></p>
<ol start="3">
<li>모멘텀(Momentum) : 로컬 미니멈에 갇혀있다. 물리 엔진인 것 처럼? 공을 넣어 튀어 나오는 것처럼 글로벌 미니멈을 찾는다.</li>
</ol>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/fb450755-831b-4e0c-b7dd-2ec00100ac89/image.png" alt=""></p>
<ol start="4">
<li>그 외 옵티마이저들</li>
</ol>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/ccb02aab-2e63-45ce-8392-cb01a1129a94/image.png" alt=""></p>
<p>RMSProp와 AdaDelta가 가장 많이 사용된다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/9d7ba71c-a3c4-412f-a709-0adbccee2b8a/image.png" alt=""></p>
<p>모델을 학습시킬 때 옵티마이저는 최적의 가중치를 찾아주는 것이 중요하다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Keras(케라스)_주택 가격 예측 : 회귀 문제]]></title>
            <link>https://velog.io/@orange_e7/Keras%EC%BC%80%EB%9D%BC%EC%8A%A4%EC%A3%BC%ED%83%9D-%EA%B0%80%EA%B2%A9-%EC%98%88%EC%B8%A1-%ED%9A%8C%EA%B7%80-%EB%AC%B8%EC%A0%9C</link>
            <guid>https://velog.io/@orange_e7/Keras%EC%BC%80%EB%9D%BC%EC%8A%A4%EC%A3%BC%ED%83%9D-%EA%B0%80%EA%B2%A9-%EC%98%88%EC%B8%A1-%ED%9A%8C%EA%B7%80-%EB%AC%B8%EC%A0%9C</guid>
            <pubDate>Wed, 10 May 2023 16:05:50 GMT</pubDate>
            <description><![CDATA[<h2 id="보스턴-하우징-데이터셋을-활용한-주택-가격-예측">보스턴 하우징 데이터셋을 활용한 주택 가격 예측</h2>
<p>✔️ 보스턴 하우징 데이터 셋 케라스에 포함되어 있는 buston_housing 데이터를 이용해 주택 가격을 예측하는 회귀 문제를 구현할 수 있다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/10fdc9bb-eec1-41fa-b827-5750ecb55cba/image.png" alt=""></p>
<p>우선 케라스에서 제공하는 boston_housing 데이터를 import해주고
train_data와 test_data를 호출하여 데이터 셋을 load해주었다.
이 데이터는 13개의 특성값을 가진 numpy배열로 구성되어 있고
train_data는 404개로 학습 샘플과 test_data는 102개의 테스트 샘플이 있는 2차원의 배열임을 확인할 수 있다.</p>
<p>✔️ 데이터 전처리-Scaling
<img src="https://velog.velcdn.com/images/orange_e7/post/3f8ca603-cb36-45cc-ab0b-999ca7242593/image.png" alt=""></p>
<p>특성의 스케일이 다른 값들을 신경망에 학습시키면 최적의 값을 찾는 것에 어려움이 발생한다.
그래서 우선 데이터를 표준편차를 이용해 정규화(표준화)를 시켜 각 특성의 범위를 동일하게 해준다.
(딥러닝에서는 minmax scailing보다 표준편차 scailing을 사용해주는 것이 더 좋다.)</p>
<p><strong>mean = train_data.mean(axis=0)</strong>
➡️ train_data의 각 항목(축)의 평균을 구한다.
<strong>train_data -= mean</strong>
➡️ 전체 data에서 평균치를 빼면 각 특성의 평균이 0이 되도록한다.
*<em>std = train_data.std(axis=0)
train_data /= std
*</em>➡️ std함수로 표준편차를 구해준 후 train_data로 나눠주면 각 특성의 표준편차가 1이된다.</p>
<p>위와 같은 scaling 작업을 해주면, 각 특성이 다른 범위를 가지더라도
모든 특성이 동일한 범위를 갖게 해주어 모델 학습에 도움을 준다.</p>
<p>Scaling 작업을 거친 train_data의 배열은 13개로 동일한 것도 확인해볼 수 있다.</p>
<h4 id="✔️모델의-구성">✔️모델의 구성</h4>
<p>신경망 모델을 구현하기 앞서 필요한 모듈들을 아래와 같이 import해준다. </p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/6dcce2d5-c0f0-4cbb-8d37-694ba0c9026b/image.png" alt=""></p>
<p>Sequential()은 선형적 연산하는 함수로 model 매개변수에 저장한다.</p>
<p>layer는 3개를 생성하였고 입력층과 중간층의 활성화 함수는 &#39;relu&#39;를 사용한다.</p>
<p>input_shape=(train_data.shape[1],)은 첫 번째 요소는 하나의 튜플(tuple)로 정의되며,두 번째 요소는 입력데이터의 특성 개수를 나타낸다.
샘플 개수를 지정하지 않았다면, 입력 데이터의 샘플 개수가 가변적인 경우에 사용할 수 있다.</p>
<p>마지막 층의 유닛은 집값이라는 1개의 값만 필요하므로, (1)을 지정해주었다.</p>
<p>옵티마이저는 &#39;rmsprop&#39;, 회귀 알고리즘에서에서 손실은 &#39;mse&#39;라는 예측한 값과 실제 값 사이의 평균 제곱 오차를 사용하고, metrics도 동일하게 사용된다.</p>
<h4 id="✔️-k-folder-검증을-사용한-훈련-검증">✔️ K-folder 검증을 사용한 훈련 검증</h4>
<p>buston_housing 훈련 데이터 샘플이 404개로 적은 편에 속한다.
이때 사용하면 가장 좋은 검증 방법은 K-겹 교차 검증(K-fold cross-validation)을 쓰는 것이다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/7f158ca8-2634-46cd-989a-a3d689fbea60/image.png" alt=""></p>
<p>데이터를 K개의 분할로 나누고 K개의 모델을 각각 만들어
K – 1개의 분할에서 훈련하고 나머지 분할에서 평가하는 방법이다.
모델의 검증 점수는 K개의 검증 점수 평균이 된다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/ae539794-d7d0-46c6-a8cc-f3f311432c54/image.png" alt=""></p>
<p>총 404개 폴더를 k개로 나눠주면 한 폴더의 데이터수를 알 수 있다.
k=4 일때, 1개의 폴더의 사이즈는 101개가 된다.</p>
<p>이것을 반복하며 실험하기위해 all scores라는 변수에 미리 리스트 형태로 만들어준다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/bc764f17-3fb2-4558-bd02-30f5ca481dbb/image.png" alt=""></p>
<p>검증 데이터, 학습 데이터, 모델 학습, 모델 검증까지 k번 반복하는 for for문에 i 루프 변수가 사용해 &quot;처리중인 폴드 #i&quot;에 출력된다.</p>
<h4 id="✔️-검증-데이터-준비--k번째-분할">✔️ 검증 데이터 준비 : k번째 분할</h4>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/ce0eb7bb-2491-4aae-932c-a0ed9e6e06f6/image.png" alt=""></p>
<p>우선 학습용 데이터와 학습용 라벨을 잘라준다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/56b1c066-c405-42df-a14d-fca02b276613/image.png" alt=""></p>
<p>4개로 분할된 데이터의 각 폴더를 슬라이싱하여 끝점을 구해준다.
끝점을 알면 폴더 내 데이터를 쪼갤 수 있다.</p>
<h4 id="✔️-학습-데이터-준비--다른-분할-전체">✔️ 학습 데이터 준비 : 다른 분할 전체</h4>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/5889163b-5f36-447f-b563-81ffc3b51cbc/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/79b19a6b-40dd-4229-8cc9-7f081a5302bd/image.png" alt=""></p>
<p>가운데 폴더는 4로 나눴기 때문에 2개(data1, data2)로 나눠서 저장해준다.</p>
<p>이 두 데이터의 구조가 똑같다면 numpy에 있는 concatenate 함수를 사용해 두개를 합쳐줄 수 있다. (data1, data2)의 각 데이터를 구해 대입해주면 된다.</p>
<p>하지만 이때 길이가 동일한 가로축으로 병합하기 위해 axis = 0 값을 준다.</p>
<h4 id="✔️-모델-학습--케라스-모델-구성컴파일-포함">✔️ 모델 학습 : 케라스 모델 구성(컴파일 포함)</h4>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/e847e236-8710-4aa4-bb2c-d6729030b4b1/image.png" alt=""></p>
<p>404개의 데이터를 k=4개로 나누어 주었기 때문에, 4개가 100번씩 학습된다.</p>
<p>verbose=0이면 훈련상황을 생략한다. 바로 결과볼 수 있다.
verbose=1이면 훈련상황을 보여준다.</p>
<h4 id="✔️-모델-검증">✔️ 모델 검증</h4>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/51789cd1-8374-4256-be0d-af11c37bccd7/image.png" alt=""></p>
<p>이전까지 모델 검증 수행하는 메서드로 fit()함수를 사용했다.
fit()함수는 입력 데이터와 타깃 데이터를 모델에 제공해 가중치(w)를 조정하며 최적의 가중치를 찾는 것이다.
검증 데이터에 대한 성능 지표로 accuracy, loss 등을 사용한다.</p>
<p>evaluate()함수는 학습된 모델의 성능을 평가하는 메서드이다.
입력데이터와 타깃 데이터를 모델에 제공하여, 입력데이터를 예측한 결과와 타깃 데이터 간의 차이를 계산한다. 이를 통해 모델의 일반화 성능을 평가하고, 검증 데이터에 대한 성능 지표를 계산한다.</p>
<p>즉, <strong>fit()함수</strong>는 <strong>모델을 학습하면서 모델의 성능을 평가</strong>하는 역할을 수행.
<strong>evaluate()함수</strong>는 <strong>학습이 완료된 모델의 성능을 평가</strong>하는 역할을 수행한다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/e69cc05c-d50b-404f-b306-03512767e1e2/image.png" alt=""></p>
<p>같은 성능이면 params(모델의 학습 가능한 파라미터 수)계수가 낮아야 좋다.
모델이 더 적은 학습 가능한 파라미터로도 같은 수준의 성능을 내기 때문이다. 즉, 효율적인 모델이라고 할 수 있다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/0f72ecd0-f52b-4e1a-83ca-c0dde24cfbd7/image.png" alt=""></p>
<p>검증된 데이터의 성능 지표와 all_scores 배열의 평균값을 비교하였다.
비슷한 결과 값을 확인했고 이는 모델이 일관된 성능을 보인다는 것을 의미한다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Keras(케라스)_뉴스기사 분류]]></title>
            <link>https://velog.io/@orange_e7/Keras%EC%BC%80%EB%9D%BC%EC%8A%A4%EB%89%B4%EC%8A%A4%EA%B8%B0%EC%82%AC-%EB%B6%84%EB%A5%98</link>
            <guid>https://velog.io/@orange_e7/Keras%EC%BC%80%EB%9D%BC%EC%8A%A4%EB%89%B4%EC%8A%A4%EA%B8%B0%EC%82%AC-%EB%B6%84%EB%A5%98</guid>
            <pubDate>Wed, 10 May 2023 14:21:23 GMT</pubDate>
            <description><![CDATA[<h2 id="로이터-데이터-셋을-활용한-뉴스-기사-분류">로이터 데이터 셋을 활용한 뉴스 기사 분류</h2>
<h4 id="✔️-로이터-데이터셋">✔️ 로이터 데이터셋</h4>
<p>케라스에 포함되어 있는 로이터 데이터셋을 이용해 뉴스기사를 분류하는 과정을 구현해본다.
<img src="https://velog.velcdn.com/images/orange_e7/post/738d0e43-9a6c-4dd4-8ad5-9546cf6ca686/image.png" alt=""></p>
<p>위와 같이 필요한 모듈을 import해준다.
num_words=10000 매개변수는 데이터에 가장 자주 등장하는 단어 10000개로 제한한다.</p>
<h4 id="✔️-데이터-준비">✔️ 데이터 준비</h4>
<p>레이블을 벡터로 바꾸는 방법은 2가지가 있다.</p>
<p>첫 번째는 레이블의 리스트를 정수 tensor로 변환하는 것 
[참고] 영화리뷰 분류</p>
<p>두 번째는 원-핫 인코딩은 레이블의 인덱스 자리는 1이고
나머지는 모두 0인 벡터이다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/3779cc6b-b3e7-42ee-8cf6-a4e45de3b73c/image.png" alt=""></p>
<p>vectorize_sequences 함수는 정수로 이루어진 리스트 ‘sequences’와
one-hot-incoding된 벡터의 차원 ‘dimesion’은 기본값이 10,000으로 설정.</p>
<p>zero(len(sequences), dimension)은 크기가 (len(sequences), dimension)이고
모든 원소가 0인 2차원 행렬로 인코딩 된다.</p>
<p>for문을 통해 sequence 리스트에 서 각각의 시퀀스를 반복.</p>
<p>enumerate() 함수는 순서가 있는 자료형(list, tuple, dictionary, string)을
입력받아 인덱스 값을 포함하는 enumerate 객체를 리턴한다.</p>
<p>results[ i ]에서 특정 인덱서의 위치를 1로 반환한다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/5bc0fdca-dcaa-4d15-8c46-fa90ce2a0ec7/image.png" alt=""></p>
<p>데이터를 벡터로 변환하는 것은 뉴럴 네트워크를 투과하는 과정에서
행렬끼리의 연산이 필요하기에 데이터를 벡터로 변환해주어야 한다.</p>
<p>vectorize_sequences함수를 사용해 각각 학습용 데이터와
테스트 데이터를 벡터로 변환하여 저장해준다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/661f0ca0-a8a1-4b98-954d-7b4819e5c98f/image.png" alt=""></p>
<ul>
<li><em>라벨 데이터를 카테고리 데이터로 One-Hot incoding해주는 이유는?</em></li>
<li><em>수치에 대한 정보에 초점을 맞추기 위해서 사용한다.*</em>
예를 들어, 아이스크림의 종류를 분류하는 문제라면,
아이스크림 종류가 (메로나, 바밤바, 비비빅)이렇게 3가지 종류가 있다고 가정해 이를 라벨 데이터로 사용하게 된다면 (0,1,2)로 표현된다.
여기에서 1+1=2라고 처리를 하게되면, &#39;바밤바+바밤바=비비빅&#39;이라는 공식이 적용되게 된다. 각 카테고리의 특징을 반영하고 수치적 특성을 없애주기 위해 라벨 인코딩을 대신 원핫 인코딩으로 특징을 반영하고 수치적 특성을 없애주기 위해 one-hot 인코딩으로 카테고리 데이터로 변환시켜주는 것이다.</li>
</ul>
<h4 id="✔️-신경망-모델-제작">✔️ 신경망 모델 제작</h4>
<p>to_categorical()함수를 사용하여 레이블을 One-Hot 인코딩할 수 있어
필요한 모듈을 우선 import 해준다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/fd713ff2-266e-4843-9976-3c21c7562865/image.png" alt=""></p>
<p>sequential() 선형적 연산을 하는 모델 함수를 사용한다.
모델의 layer는 3개를 만들어주었다.</p>
<p>입력층과 중간층의 Dense 유닛 개수는 64개, 활성화함수는 &#39;relu&#39;,
input_shape(10000,)은 1차원의 10,000개 요소를 가지는 입력모양으로 지정해준다.</p>
<p>출력층은 다중 분류데이터의 마지막층에서 사용되는 softmax 활성화 함수를 사용한다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/4315b961-36dc-433a-8b27-0d0d8ec65cd9/image.png" alt=""></p>
<p>옵티마이저는 &#39;rmsprop&#39;, 손실 함수로 &#39;categorical_crossentropy&#39;,
metrics평가는 &#39;accuracy&#39;을 사용해 모델을 컴파일 해준다.</p>
<h4 id="✔️-훈련-검증-1">✔️ 훈련 검증 1</h4>
<p>데이터가 학습하는 동안 학습 데이터에 대한 모델의 정확도를 측정해 매개변수에 지정한다.
<img src="https://velog.velcdn.com/images/orange_e7/post/fdf35bbf-83d4-463f-963d-8f57d0d6eaf9/image.png" alt=""></p>
<p>10,000개의 샘플 데이터를 쪼개서 검증하기 위해 위와 같이 준비해준다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/1d4a7e0f-8843-4bcb-b362-8b37f74d3d7a/image.png" alt=""></p>
<p>학습 반복 횟수 epochs는 20번, 학습 데이터 개수 batch_size는 512개를
vaildation_data 각각의 매개변수에 검증 데이터를 전달한다.</p>
<h4 id="✔️-그래프-시각화">✔️ 그래프 시각화</h4>
<p>그래프 시각화를 위해 우선 matplot 모듈을 import해준다. </p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/1825afa7-c723-4617-be74-fca8aa25a406/image.png" alt=""></p>
<p>학습 데이터의 손실과 정확도,
검증 데이터의 손실과 정확도를 각 매개변수에 저장한다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/e134c8f2-8bff-4b99-9598-77f54442ae1d/image.png" alt=""></p>
<p>위 colormap 설정값과 라벨을 지정해 아래와 같은 그래프를 시각화한다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/e1833b93-c603-4b16-8455-dfea33fe1bd5/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/a618f826-b2c1-45ca-a2f0-f057d1bbe3b3/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/d89b6f3e-be05-44f1-99e6-907903f4942d/image.png" alt=""></p>
<h4 id="✔️-훈련-검증-2">✔️ 훈련 검증 2</h4>
<p>검증된 결과로 모델을 다시 학습시키고 평가한다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/87794de4-c20c-4c93-aea3-26031e0ab461/image.png" alt=""></p>
<p>1번째 훈련 검증에서 10번째 epochs가 가장 좋았던 것을 확인할 수 있었다.
그래서 2번째 검훈련 검증에서 epochs 값을 20에서 10으로 바꿔주었다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/85e2a3da-0c10-4708-bec0-efab02e35485/image.png" alt=""></p>
<p>모델의 정확도는 78%로 이고 손실은 0.97이라는 결과를 얻어냈다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Keras(케라스)_영화리뷰 분류]]></title>
            <link>https://velog.io/@orange_e7/Keras%EC%BC%80%EB%9D%BC%EC%8A%A4%EC%98%81%ED%99%94%EB%A6%AC%EB%B7%B0-%EB%B6%84%EB%A5%98</link>
            <guid>https://velog.io/@orange_e7/Keras%EC%BC%80%EB%9D%BC%EC%8A%A4%EC%98%81%ED%99%94%EB%A6%AC%EB%B7%B0-%EB%B6%84%EB%A5%98</guid>
            <pubDate>Wed, 10 May 2023 13:41:31 GMT</pubDate>
            <description><![CDATA[<h4 id="💡-imdbinternet-movie-data-base-dataset">💡 IMDB(Internet Movie Data base) DataSet</h4>
<p>✔️ imbd 데이터 셋은 케라스에 포함되어 있는 영화 리뷰 데이터를 이용해 파이썬으로 딥러닝을 구현할 수 있다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/9d647204-9f17-4170-8b41-326ff84f5bc7/image.png" alt=""></p>
<p>우선 케라스에서 제공하는 imbd 데이터를 import해주고
train_data와 test_data의 단어를 10,000개만 제한하여 사용하기 위해
데이터 셋을 load해주었다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/ac517fd1-433a-4fb0-9226-21970811a80d/image.png" alt=""></p>
<p>이 데이터의 모양을 확인해보니 1차원의 25000개 샘플 데이터이다.
라벨 데이터는 1과 0으로만 이루어진 데이터이다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/4c0b533f-dcc4-403c-9c73-115d7ed23423/image.png" alt=""></p>
<p>max반복문은 모든 sequence함수 안에 있는 가장 큰 값을 찾는 것이다.</p>
<h4 id="✔️-데이터-준비">✔️ 데이터 준비</h4>
<p>numpy 모듈을 import해 데이터를 준비한다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/79d8aa13-6cdc-4d24-a2e9-99b17165c02b/image.png" alt=""></p>
<p>크기가 (len(sequences), dimension)이고 모든 원소가 0인 행렬로 만들어주었다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/21ebde91-1e51-43b3-91bf-106128201a23/image.png" alt=""></p>
<p>a 리스트의 원소들을 반복하면서 각 원소의 인덱스를 i 변수에,
원소 자체를 item 변수에 할당해준다.</p>
<p>enumerate() 함수는 순서가 있는 자료형(list, tuple, dictionary, string)을 입력받아 인덱스 값을 포함하는 enumerate 객체를 리턴한다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/fd706695-60fa-4067-b4c0-22a89a4ca60f/image.png" alt=""></p>
<p>train_data와 test_data를 각각 벡터로 변환해주면,
레이블을 쉽게 벡터로 바꿀 수 있게 된다.</p>
<p>여기서 영화리뷰 데이터는 긍정과 부정 두가지로 나뉘는 데이터인데,
이는 문자열 형태의 데이터이다.
각 단어에 해당하는 정수값을 부여하기 위해 레이블의 리스트를 정수 tensor로 변환하는 것이다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/c30e23a2-695e-4bc7-b9df-0551f916bd30/image.png" alt=""></p>
<p>보통 라벨 데이터는 0과 1사이의 값을 가지는 실수형으로 변환한다.
이는 분류 문제에서 모델의 출력과 0과 1사이의 값으로 나타나기 때문에
실수형으로으로 바꿔주어 신경망에 주입할 데이터로 준비해준다.</p>
<h4 id="✔️-신경망-모델-제작">✔️ 신경망 모델 제작</h4>
<p>모델 만들기 위해 필요한 models와 layers 모듈을 import해준다.
<img src="https://velog.velcdn.com/images/orange_e7/post/2db23324-7426-4aec-b7f3-5009842cff07/image.png" alt=""></p>
<p>1번째 input layer의 Dense 유닛 개수는 16개, activation은 &#39;relu&#39; 함수를 사용해준다.
그러면 16차원의 공간으로 바꾸어 선형적인 연산을 하게된다.
input_shape(10000,)은 1차원 배열에 10000개 요소가 들어간 입력모양이다.</p>
<p>2번째 hidden layer은 input layer와 동일하다.</p>
<p>3번째 output layer의 Dense 유닛은 1개이다. 긍정 or 부정 둘 중 하나의 값만 도출되어야 하기 때문에 하나로 설정한다.
activation은 0과 1사이의 점수로, 어떤 샘플 타깃이 1일 가능성이 높다는 것은 그 리뷰가 긍정일 가능성이 높다는 것을 의미한다.
이진분류 모델의 마지막 활성화로 시그모이드 활성화 함수를 사용하는 것이 좋다.</p>
<p>마지막으로 손실 함수와 옵티마이저를 선택해야한다.
model.compile은 rnsprop 옵티마이저와 binary_crossentropy 손실 함수로 모델을 설정하는 단계이다.
훈련하는 동안 accuracy(정확도)를 사용하여 metrics(평가)한다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/73b2afc5-01de-411c-941c-39cf5c0bb54f/image.png" alt=""></p>
<p>input layer / hidden layer / output layer 총 3개의 레이어를 생성하면 위와 같은 모양의 모델이 형성된다.</p>
<h4 id="✔️-훈련-검증">✔️ 훈련 검증</h4>
<p>훈련하는 동안 train_data에 대한 모델의 정확도를 측정해준다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/f38b9653-6435-4f29-83f5-d3cc6f284f79/image.png" alt=""></p>
<p>10,000개의 샘플 데이터를 쪼개서 검증하기 위해 위와 같이 준비해준다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/52999c44-df9c-4388-9f79-5e8b6cbe22cc/image.png" alt=""></p>
<p>x_train과 y_train tensor에 있는 샘플의 손실과 정확도를 측정할 것이다.
partial_x_train과 partial_y_train를 512개의 샘플씩
20번의 epoch(에포크)동안 반복 훈련,
vaildation_data 매개변수에 검증 데이터를 전달한다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/fce07d98-1d12-4207-8c43-d34396c06c77/image.png" alt=""></p>
<p>이 dictionary는 모델의 학습과정을 모니터링하기 위해 사용되는 검증데이터이다.</p>
<h4 id="✔️-모델-그래프-시각화">✔️ 모델 그래프 시각화</h4>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/03cacfa2-526e-40f6-a873-29e963e16f3f/image.png" alt=""></p>
<p>&#39;acc&#39;: 학습 데이터에 대한 정확도(accuracy)를 나타내는 값
&#39;loss&#39;: 학습 데이터에 대한 손실(loss)을 나타내는 값
&#39;val_acc&#39;: 검증 데이터에 대한 정확도를 나타내는 값
&#39;val_loss&#39;: 검증 데이터에 대한 손실을 나타내는 값</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/a01d5547-ae4e-4c75-94af-beeb718ad187/image.png" alt=""></p>
<p>위는 loss에 대한 그래프이다.
노란색 포인트가 가장 좋은 epochs이고
그 이후는 훈련 데이터가 과하게 최적화되었다는 뜻의 overfitting이다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/9eac7c36-b3ed-4cc3-ac92-d65f7c141840/image.png" alt=""></p>
<p>위는 accuracy에 대한 그래프이다.
노란색 포인트가 가장 좋은 epochs이고
이를 기준으로 왼쪽은 underfitting, 오른쪽은 overfitting이다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Keras(케라스)_mnist dataset 활용]]></title>
            <link>https://velog.io/@orange_e7/Keras%EC%BC%80%EB%9D%BC%EC%8A%A4</link>
            <guid>https://velog.io/@orange_e7/Keras%EC%BC%80%EB%9D%BC%EC%8A%A4</guid>
            <pubDate>Tue, 09 May 2023 18:29:25 GMT</pubDate>
            <description><![CDATA[<h4 id="💡-keras란">💡 Keras란?</h4>
<p>파이썬으로 구현된 high-level deep learning API이다.
high-level은 추상화 레벨이 높다는 것으로 딥러닝 모델에 적합하다.
또한 쉬운 사용법과 간단한 문법, 빠른 설계가 가능하다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/de54ce34-78c2-4313-b6a9-5c43cd56fa7f/image.png" alt=""></p>
<p>케라스는 위와 같이 x값 input되었을때,
예측된 y값과 실제 y값을 비교하고 손실 점수에 따라
최적의 값을 찾는 프레임워크로 활용된다.<br/><br/></p>
<ul>
<li>overfitting : 학습 데이터를 과하게 공급하여 학습시켰을 때 발생하는 에러</li>
<li>underfitting : 학습 데이터를 부족하게 공급하여 학습시켰을 떄 발생하는 에러<br/></br></li>
</ul>
<h4 id="✔️-파이썬으로-keras-프레임워크를-활용해-데이터를-분석하고-학습시키는-딥러닝-과정을-구현할-수-있다">✔️ 파이썬으로 Keras 프레임워크를 활용해 데이터를 분석하고 학습시키는 딥러닝 과정을 구현할 수 있다.</h4>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/0cd29e8b-6991-4ca0-80f4-6323b98ee79b/image.png" alt=""></p>
<p>케라스 모듈을 import하고 keras 버전도 확인해주었다.
케라스에서 사용할 datasets은 mnist라는 손글씨 데이터이다.
minst.load_data()함수를 호출하여 반환된 값을 (train_images, train_labels), (test_images, test_labels)에 각각 할당해주었다.</p>
<ul>
<li>train_images : 학습용 이미지 데이터</li>
<li>train_labels : 학습용 이미지 라벨</li>
<li>test_images : 테스트용 이미지 데이터</li>
<li>test_labels : 테스트용 이미지 라벨</li>
</ul>
<p>위와 같이 분리된 학습 데이터셋과 테스트셋은 머신러닝 모델을 학습시키고 검증하는 데 사용된다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/e89b6b70-8da9-4e22-a2ae-9ceff377b6d4/image.png" alt=""></p>
<p>train_images와 test_images의 데이터 모양을 살펴보았다.
train data는 60000개로 학습하고 test data는 10000개로 테스트를 진행할 것이다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/df1f8fe5-7295-41c3-92d1-131339dab8c4/image.png" alt=""></p>
<p>train_labels의 dtype은 uint8이며,
이는 데이터 타입이 부호 없는 8비트의 정수임을 의미한다.</p>
<p>train_labels의 각 요소는 array([5,0,4,...,5,6,8])이며 해당 학습용 이미지 데이터가 0부터 9까지 나타낸다. train_labels의 첫 번째 요소는 첫 번째 학습용 이미지 데이터가 숫자5를 나타내는 것을 의미한다.
이 머신러닝 모델은 학습용 이미지 데이터와 해당 이미지 데이터가 나타내는 숫자(label)을 함께 사용하여 숫자 인식 분류 문제를 학습할 것이다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/1438aaf8-93a8-4502-9922-ffb62c32be1f/image.png" alt=""></p>
<h4 id="✔️-데이터-확인">✔️ 데이터 확인</h4>
<p>우선 matplot 모듈을 import하여 파이썬의 데이터를 시각화할 수 있게 세팅해두었다.
digit = train_images[4]은 이미지 데이터셋에 5번째 이미지를 train_images라는 변수로 불러와 digit이라는 변수에 저장해두었다.
inshow 함수는 이미지를 보여주는 함수.
cmap 함수는 colormap을 설정하는 인자.
plt.cm.binary는 흑백 이미지를 표시하기 위한 colormap.
따라서 plt.imshow(digit, cmap=plt.cm.binary)은 digit 변수에 저장된 이미지 데이터를 흑백으로 시각화하는 코드이다.<br/><br/></p>
<h4 id="✔️신경망-만들기">✔️신경망 만들기</h4>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/6daf0589-5e16-4364-b719-0f87bdb56bd0/image.png" alt=""></p>
<p>신경망을 만들기 위한 모듈을 임포트해주었다.</p>
<ul>
<li><p>optimizer은 손실 함수에 손실 점수에 따라 가중를 조절하는 역할이다. (옵티마이저 자세한 내용은 다음 포스팅에 언급하겠다.)</p>
</li>
<li><p>Sequential()은 순차적으로 레이어 층을 더해주는 순차 모델이라고 불리며, 케라스에서 흔히 사용되는 모델이다.</p>
</li>
</ul>
<p>network.add(layers.Dense())을 2개 생성하여 2개 레이어를 가진 신경망으로 만들었다. 구조의 이해를 위해 아래와 같은 그림을 첨부하였다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/89824229-f5bb-4caf-8e82-00924bb8a31b/image.png" alt=""></p>
<ul>
<li>Dense()는 뉴런마다 input들이 전부 연결된 것들을 Dense Layer라고 부른다.</li>
</ul>
<p>첫 번째 layer는 512개의 유닛과 28x28 배열의 입력되는 모양을 가진 레이어
두 번째 layer는 출력층이며, 0~9까지 layer들을 계산하며 모양은 생략해도 1번 layer과 동일하게 적용된다.</p>
<h4 id="✔️-데이터-준비하기">✔️ 데이터 준비하기</h4>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/127cd697-eb1d-4ae5-8cda-ab4cf6c25141/image.png" alt=""></p>
<p>이미지 데이터는 기본적으로 3차원으로 구성되어 있으며, 모델을 학습하기 위해 과부화 발생을 방지하기 위해 차원을 축소해주는 것이 좋다.
reshape함수를 사용해 데이터 손실 없이 데이터 모양만 바꿔 2차원으로 축소시켜주었다.</p>
<p>또한 이미지 데이터는 0~255까지의 값으로 이루어져 있으며, 이 값을 신경망 모델이 학습할 수 있는 형태로 변환하기 위해 &#39;float32&#39; 데이터 타입으로 변환해주었다.
이렇게 하면 소수점 이하의 값을 포함할 수 있어, 더 다양한 값을 표현할 수 있다.</p>
<p>÷ 255를 한 이유는 모든 픽셀 값이 0부터 1사이의 값으로 스케일링시키기 위해서 이다. 픽셀값이 모두 동일한 범위내에 있게 되어 학습이 더욱 안정적으로 이루어지게 된다.</p>
<h4 id="✔️-라벨-데이터를-카테고리-데이터로-변환하기">✔️ 라벨 데이터를 카테고리 데이터로 변환하기</h4>
<p>원래 아래와 같이 train_labels은 1차원에 8비트 정수형 데이터이다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/125126e2-8fa2-493a-a9e4-f507c1ec195f/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/93fffb86-2aca-454e-9772-ac2e59ca24d2/image.png" alt=""></p>
<p>라벨 데이터는 숫자가 아닌 문자 데이터로 인식하게 설정하여 계산되지 않게 해주었다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/b4395cca-91f3-45fb-8525-ba3451c28be1/image.png" alt=""></p>
<p>그림과 같이 라벨 데이터는 문자로 남게된다.</p>
<h4 id="✔️-신경망-학습">✔️ 신경망 학습</h4>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/12ec6929-c780-4111-b13f-5d0bd59ecc2a/image.png" alt=""></p>
<p>network 변수에 train_images와 train_labels를 fit함수로 학습시킨다.
이때 epochs = 5, batch_size = 128로 지정해주었다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/6a5e0386-93d4-4f01-8cb8-69eeaca07323/image.png" alt=""></p>
<p>쉽게 이해하기 위해 그림과 함께 살펴보면,
epoch는 학습하는 횟수이고 batch_size는 학습 데이터의 개수이다.</p>
<ul>
<li><p>epoch 값이 높을 수록 다양한 무작위 가중치를 학습하며,
적합한 파라미터를 찾을 확률이 올라간다.(즉, 손실 값이 내려간다.)
그러나, 지나치게 값을 높이면 그 학습 데이터셋에 oberfitting이 되어
다른 데이터에 대해선 제대로 된 예측을 못할 가능성이 있다.</p>
</li>
<li><p>batch_size 값이 너무 크면 한번에 처리해야 할 데이터 양이 많아져서
학습 속도가 느려지고, 메모리 부족 문제가 발생할 수 있다.
그러나 값이 너무 작으면 적은 데이터를 대상으로 가중치를 업데이트하고,
이 업데이트가 자주 발생해 훈련이 불안정해진다.</p>
</li>
</ul>
<p><em>그래서 손실 함수를 줄이면서 가중치를 업데이트할 수 있는 적합한 값을 찾아야한다.</em></p>
<p>학습된 결과를 살펴 보면 epoch는 5번 모두 실행되었고,
accuracy는 5번째가 0.9882로 가장 우수하다.
loss도 5번째가 0.0386으로 손실이 가장 낮다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/4430df55-6498-4d7f-ba2e-a299d1afc2f2/image.png" alt=""></p>
<p>테스트 데이터셋으로 test_loss와 test_acc를 모델의 성능을 평가해보니,
손실 값이 0.0626, 정확도는 0.9809임을 나타낸다.
이 학습된 신경망 모델은 약 98.1%의 정확도를 보이며, 숫자 인식 분류 문제에서 좋은 성능을 내는 모델이다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Activation Function(활성화 함수)]]></title>
            <link>https://velog.io/@orange_e7/Activation-Function%ED%99%9C%EC%84%B1%ED%99%94-%ED%95%A8%EC%88%98</link>
            <guid>https://velog.io/@orange_e7/Activation-Function%ED%99%9C%EC%84%B1%ED%99%94-%ED%95%A8%EC%88%98</guid>
            <pubDate>Tue, 09 May 2023 14:09:09 GMT</pubDate>
            <description><![CDATA[<h3 id="💡-활성함수란"><strong>💡 활성함수란?</strong></h3>
<p>입력 신호의 총합을 출력신호로 변환하는 함수.
활성화 함수에 따라 출력값이 결정된다.</p>
<h4 id="✔️-종류">✔️ 종류</h4>
<h4 id="1-step-function계단함수">1. Step Function(계단함수)</h4>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/5f6f94b0-9f58-4cc4-944a-5a22e2719c79/image.png" alt=""></p>
<p>y 값이 0에서 0.9 사이에서는 반응이 발생하지 않는다.
y=1이 되었을 때 반응이 발생한다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/d862dc78-f440-4ccd-b012-5f9325659880/image.png" alt=""></p>
<p>계단 함수를 위와 같이 구현해보았을 때,
x&gt;0 이면 1을 리턴해주고 x&lt;=0 이면 0을 리턴하게 되어 있다.
출력 결과 0일때 0, -1일때 0, 0.1일때 1이라는 결과값이 도출된다.
<img src="https://velog.velcdn.com/images/orange_e7/post/b2682c4b-32b4-4fa3-beca-756555f6ee18/image.png" alt=""></p>
<p>리스트로 입력값을 받으면,
a = np.array([5,3,-4,2,0])는 def step_function_for_nump(x)의 x값이며 
y = x &gt; 0 으로 계산되어 return y.astype(np.int) 결과로 도출된다.
return값은 int 정수형으로 1 또는 0이 된다.
x = 5, y = True(=1)
x = 3, y = True(=1)
x = -4, y = False(=0)
x = 2, y = True(=1)
x = 0, y = False(=0) </p>
<h4 id="2sigmoid-function시그모이드-함수">2.Sigmoid Function(시그모이드 함수)</h4>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/74088925-ba3c-4baa-84ce-86ab965664eb/image.png" alt=""></p>
<p>이진분류(binary classification)에 주로 사용되는 함수이다.
출력값이 0~1의 값이며, 이는 확률로 표현 가능하다.</p>
<ul>
<li>이진분류란? 예를 들면 개와 고양이를 분류할때 값이 정확하게 나눠지지 않고 애매한 위치에 분포한 데이터들이 존재한다. 이때 선명하게 분류하기 위해 시그모이드 함수가 사용된다. 변별력을 높여주는 역할을 하기 때문에 중간층에서 사용하지 않고 마지막 층에서 확실하게 분류할 때 사용한다.
<img src="https://velog.velcdn.com/images/orange_e7/post/86c985f2-4736-4fa5-a975-5574a8c88ab6/image.png" alt=""></li>
</ul>
<p>이 공식에 대입하여 아래와 같이 시그모이드 함수를 파이썬으로 구현할 수 있다.
<img src="https://velog.velcdn.com/images/orange_e7/post/ff365b48-96d6-42eb-b6d1-0b1abcbb16b7/image.png" alt=""></p>
<ul>
<li>계단 함수와 시그모이드 함수 비교
<img src="https://velog.velcdn.com/images/orange_e7/post/61460038-4a20-4b49-9fa8-c350b09ba627/image.png" alt=""></li>
</ul>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/5ac21201-bd9f-4891-a948-11b27123eda9/image.png" alt=""></p>
<p>위 자료는
x = np.arange(-5,5,0.01) 배열을 입력값으로 받으며,
y1 = sigmoid(x)는 &#39;r-&#39; 빨간 실선으로 표시하고
y2 = step_function_for_numpy(x)는 &#39;b--&#39; 파란색 점선으로 표시하여
matplot함수로 시각화한 그래프이다.</p>
<h4 id="3-relurectified-linear-unit-함수">3. ReLU(Rectified Linear Unit) 함수</h4>
<p>가장 많이 사용되는 함수 중 하나이다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/368fcd92-6b74-4305-b3bd-feacaf771ddc/image.png" alt=""></p>
<p>Rectified란 &#39;정류된&#39;이라는 뜻으로
x가 0이하일 때 차단되어 아무값도 출력하지 않고 0을 출력하는 정류된 선형 함수이다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/0096b01e-e014-40eb-bbe2-79e7cfd1981a/image.png" alt=""></p>
<p>위 공식에 대입하여 파이썬으로 구현할 수 있다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/f641f8ea-ba68-4602-b1b0-2bfd76c69682/image.png" alt=""></p>
<p>x = 5 이면 5를 출력되고
x = -5 이면 0이 출력되는 것을 확인할 수 있다.</p>
<h4 id="4-identity-function항등-함수">4. Identity Function(항등 함수)</h4>
<p>회귀(Regression)문제에서 주로 사용되며 출력층의 활성화 함수로 활용된다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/4567f805-5001-4cab-b668-f83809673a05/image.png" alt=""></p>
<pre><code>y = x</code></pre><p>입력값 그대로 출력하기 때문에 굳이 정의할 필요는 없지만 신경망 중간 레이어 흐름과 통일하기 위해 사용한다.</p>
<p><img src="https://velog.velcdn.com/images/orange_e7/post/fe6b497c-3650-4c5c-abc5-b7cf441d4863/image.png" alt=""></p>
<p>항등 함수는 위와 같이 파이썬으로 구현할 수 있다.</p>
<h4 id="💡-정리">💡 정리</h4>
<p>*<em>시그모이드 : 이진 분류 모델의 마지막 활성화 함수
소프트맥스 : 다중 분류 모델의 마지막 활성화 함수
ReLU : 기본적으로 은닉층에 사용하는 활성화 함수 *</em></p>
]]></description>
        </item>
    </channel>
</rss>