페이지

2025년 7월 7일 월요일

차등 정보보호 - 소개

차등 정보보호 - 소개

환자 질병 유무 데이터를 공개할 때 데이터셋에 불확실성을 추가함으로써 개별 환자의 질병 유무를 확정할 수 없도록 만들 수 있습니다.

예를 들어 어떤 병원이 데이터 분석을 목적으로 10,000명 규모의 환자 데이터셋을 만들고 그 중에서 무작위로 약 1,000명을 선택하여 그들의 질병 유무를 반대로 바꾼다고 생각해 봅시다. 이렇게 만들어진 데이터셋과 무작위 선택 방법을 공개하지만 누구의 질병 유무를 바꾸었는지는 공개하지 않습니다. 따라서 공개된 데이터셋을 보게 되더라도 특정 환자의 질병 유무를 100% 수준으로는 확신할 수 없게 됩니다.

이때 적용하는 방법과 알고리즘을 차등 정보보호(Differential Privacy, DP)라고 하고 처리된 데이터셋을 Differentially Private Data라고 합니다.

개인정보보호에 대한 하나의 수학적 정의인 차등정보보호는 다음과 같은 특징을 가지고 있습니다.

  • 개인정보보호 손실에 대한 정량화
  • 수학적 증명이 가능한 개인정보보호 수준의 보장

Written with StackEdit.

2025년 7월 6일 일요일

차등 정보보호 - 예시

차등 정보보호 - 예시

다섯 명의 환자 질병 유무 데이터에 불확실성을 추가하여 공개하고 이로부터 원래의 질병 보유 환자 비율이 어떤 값일지 추정하는 과정을 보여 줍니다.

불확실성 추가 방식 정하기

전체 영역 중에서 밝은 부분의 면적이 차지하는 비율이 90%인 스피너를 사용하여 원본 데이터에 불확실성을 추가합니다.

  • plight=0.9p_{light} = 0.9

시행 결과로 바늘이 밝은 부분에서 멈추면 질병 유무를 그대로 유지하고 어두운 부분에서 멈추면 질병 유무를 뒤집어서 기록합니다.

원본 데이터 준비하기

위의 데이터는 원본이기 때문에 환자 D의 False가 진짜 False일 가능성은 100%입니다.

불확실성 추가하기

환자별로 스피너를 시행하고 그 결과에 따라 질병 유무를 그대로 유지하거나 반대로 바꿉니다.

데이터 공개하기

스피너를 시행하여 처리한 결과 데이터를 공개합니다.

불확실성의 추가로 인해 환자 D의 True가 진짜 True일 가능성은 100%가 아니고 90%가 됩니다. 이것은 다른 환자들의 질병 유무에 대해서도 마찬가지입니다.

질병 보유 비율 추정

공개된 데이터로부터 원본 데이터의 질병 보유 비율을 추정합니다.

통계 자료

원본 데이터에서 질병 유무가 True인 환자의 비율:

  • noriginal=0.6n_{original} = 0.6

공개 데이터에서 질병 유무가 True인 환자의 비율:

  • npublic=0.8n_{public} = 0.8

수식 유도

공개 데이터로부터 추정하는 원본 데이터에서 질병 유무가 True인 환자의 비율:

  • nestimated=?n_{estimated} = ?

공개 데이터에서 질병 유무가 True인 환자는 진짜 True인 환자가 True로 대답했거나 진짜 False인 환자가 True로 대답한 경우에 해당합니다. 따라서 다음의 관계가 성립합니다.

  • npublic=nestimated×plight+(1nestimated)×(1plight)n_{public} = n_{estimated} \times p_{light} + (1 - n_{estimated}) \times (1 - p_{light})

위의 관계를 사용하여 질병 유무가 진짜 True인 환자의 비율을 추정할 수 있습니다.

  • nestimated=npublic(1plight)2×plight1=0.8(10.9)2×0.91=0.70.8=0.875n_{estimated} = \frac {n_{public} - (1 - p_{light})}{2 \times p_{light} - 1} = \frac {0.8 - (1 - 0.9)}{2 \times 0.9 - 1} = \frac {0.7}{0.8} = 0.875

오차율

진짜 True 환자 비율과 추정 True 환자 비율의 차이:

  • error=nestimatednoriginal=0.8750.6=0.275{error} = n_{estimated} - n_{original} = 0.875 - 0.6 = 0.275

참고 자료

Written with StackEdit.

차등 정보보호 - 유형

 

데이터 처리 방식에 따른 분류

데이터에 직접 적용되어 프라이버시를 보장하는 핵심 알고리즘들입니다.

노이즈 추가

차등 정보보호에서 가장 보편적으로 사용되는 기법입니다. 핵심 원리는 데이터베이스에 대한 통계적 질의(Query)의 결과값에 수학적으로 생성된 '노이즈(noise)'라고 불리는 무작위 숫자를 더하여, 개별 데이터의 기여도를 모호하게 만드는 것입니다.

작동 원리

  1. 쿼리 실행: 데이터 분석가가 데이터베이스에 쿼리(예: "30대 사용자들의 평균 소득은 얼마인가?")를 실행하면, 시스템은 먼저 실제 결과값을 계산합니다.
  2. 민감도(Sensitivity) 계산: 쿼리 결과가 데이터베이스 내의 단 한 사람의 데이터 변화에 의해 얼마나 크게 변할 수 있는지를 측정합니다. 예를 들어, 한 사람의 데이터를 추가하거나 제거했을 때 평균 소득의 최댓값 변화가 '민감도'가 됩니다. 민감도가 높을수록 더 많은 노이즈가 필요합니다.
  3. 노이즈 생성 및 추가: 계산된 민감도와 목표 프라이버시 수준(엡실론, ε)에 따라 노이즈의 크기가 결정됩니다. 이 노이즈를 실제 쿼리 결과에 더하여 최종 결과를 만듭니다.

대표적인 노이즈 메커니즘

  • 라플라스 메커니즘 (Laplace Mechanism): 평균, 합계, 개수 등 수치형 결과를 반환하는 쿼리에 주로 사용됩니다. 민감도에 비례하는 라플라스 분포에서 추출된 노이즈를 추가합니다.
  • 가우시안 메커니즘 (Gaussian Mechanism): 라플라스 메커니즘과 유사하지만, 정규분포(가우시안 분포)에서 노이즈를 추출합니다. 여러 쿼리를 조합하거나 머신러닝 모델의 학습 파라미터를 보호하는 등 더 복잡한 분석에 적합합니다.

결론적으로, 노이즈 추가 기법은 분석 결과에 약간의 불확실성을 주입하여 "이 결과가 특정 개인의 정보 때문에 이렇게 나온 것"이라고 확신할 수 없게 만듦으로써 개인의 프라이버시를 보호합니다.

무작위 응답

주로 설문조사와 같이 사용자로부터 직접 데이터를 수집하는 단계에서 적용되는 기법입니다. 응답자가 자신의 민감한 정보(예: 위법 행위 경험, 특정 정치 성향 등)를 직접적으로 노출하지 않고도 통계적으로 유의미한 데이터를 제공할 수 있게 합니다.

작동 원리

이해를 돕기 위해 "불법 다운로드 경험이 있습니까?"라는 민감한 질문을 예로 들어보겠습니다.

  1. 무작위 규칙 설정: 응답자에게 다음과 같은 규칙을 제시합니다.
    • "먼저, 동전을 던지세요."
    • "앞면이 나오면, 진실을 답해주세요."
    • "뒷면이 나오면, 다시 동전을 던져서 앞면이 나오면 '예', 뒷면이 나오면 '아니요'라고 무작위로 답해주세요."
  2. 응답자 답변: 응답자는 이 규칙에 따라 답변합니다. 질문자는 응답자가 어떤 규칙에 따라 답변했는지(진실을 말했는지, 무작위로 답했는지) 알 수 없습니다. 따라서 "예"라는 답변이 실제 경험 때문인지, 아니면 동전 던지기 결과 때문인지 구분할 수 없습니다.
  3. 통계적 보정: 데이터 수집가는 이렇게 수집된 수많은 응답을 바탕으로 통계적 보정을 통해 실제 "예"의 비율을 추정할 수 있습니다. 예를 들어, 전체 응답 중 70%가 "예"라고 나왔다면, 무작위 응답으로 인해 "예"가 나올 확률(이 경우 25%)을 제외하여 실제 불법 다운로드 경험자의 비율을 수학적으로 계산해낼 수 있습니다.

이 기법은 각 응답의 신뢰도를 희생하는 대신, 응답자에게 그럴듯한 부인 가능성(Plausible Deniability)을 제공하여 더 솔직한 답변을 유도하고, 전체 데이터셋의 통계적 정확성을 확보하는 데 목적이 있습니다. 지역형 차등 정보보호(Local DP)의 근간이 되는 중요한 기술입니다.

구현 모델에 따른 분류

중앙형 차등 정보보호 (Central DP):

  • 개념: 신뢰할 수 있는 중앙 데이터 관리자(서버)가 원본 데이터를 모두 수집합니다.
  • 처리: 관리자는 수집된 전체 데이터에 대해 쿼리를 실행하고, 그 결과값에 노이즈를 추가하여 외부에 공개합니다.
  • 장점: 데이터 전체의 통계적 특성을 파악한 후 최소한의 노이즈를 추가하므로 데이터의 정확성과 유용성이 높습니다.
  • 단점: 모든 원본 데이터가 중앙 서버에 집중되므로, 서버 관리자에 대한 높은 신뢰가 필요하며 서버가 해킹당할 경우 개인정보 유출 위험이 있습니다.

지역형 차등 정보보호 (Local DP):

  • 개념: 중앙 관리자를 신뢰하지 않는 모델입니다. 각 사용자의 기기(로컬)에서 데이터가 중앙 서버로 전송되기 전에 프라이버시 처리가 이루어집니다.
  • 처리: 각 사용자가 자신의 데이터에 직접 노이즈를 추가한 후, 처리된 데이터를 서버로 전송합니다. 서버는 노이즈가 포함된 데이터들을 수집하여 통계를 분석합니다.
  • 장점: 원본 데이터가 기기를 떠나지 않으므로 강력한 프라이버시를 보장합니다. 중앙 서버 관리자를 신뢰할 필요가 없습니다.
  • 단점: 각 데이터에 개별적으로 노이즈가 추가되므로 전체적으로 노이즈의 양이 많아져 데이터의 정확성과 유용성이 중앙형 모델에 비해 낮아질 수 있습니다.



2025년 7월 4일 금요일

분산 환경에서 데이터 파이프라인과 워크플로우를 구성하고 관리할 수 있는 오픈소스 도구들

 

주요 오픈소스 도구들에 대한 기본 정보를 정리하여 비교할 수 있도록 하였습니다.

Apache Airflow

가장 널리 알려지고 강력한 생태계를 자랑하는 워크플로우 관리 도구입니다.

  • 핵심 철학:
    • Code-First
  • 주요 특징:

    • Python 코드 기반: 모든 워크플로우(DAG)를 Python 코드로 정의하여 버전 관리, 테스트, 동적 파이프라인 생성이 매우 유연합니다.
    • 강력한 생태계: 거의 모든 데이터 시스템과 클라우드 서비스에 연결할 수 있는 방대한 플러그인(Provider)을 제공합니다.
  • 추천 대상:

    • Python에 익숙한 개발자 중심 팀

제품 링크: https://airflow.apache.org/

DolphinScheduler

직관적인 UI를 통해 코딩 없이 워크플로우를 설계하고 관리하는 데 중점을 둔 도구입니다.

  • 핵심 철학:
    • UI-First
  • 주요 특징:

    • 시각적 UI: 웹 UI에서 드래그 앤 드롭(Drag & Drop) 방식으로 워크플로우를 시각적으로 설계합니다.
    • 높은 안정성: 분산형 다중 마스터/워커 구조로 설계되어 특정 노드에 장애가 발생해도 중단 없이 작업을 처리할 수 있습니다.
    • 낮은 진입 장벽: 개발자가 아니더라도 데이터 분석가나 운영자가 쉽게 사용할 수 있습니다.
  • 추천 대상:

    • 다양한 역할의 사용자가 협업하는 팀

제품 링크: https://dolphinscheduler.apache.org/en-us

Prefect

현대적인 데이터 스택을 위해 설계된 유연하고 동적인 워크플로우 자동화 도구입니다.

  • 핵심 철학:
    • Dynamic & Hybrid
  • 주요 특징:

    • 동적 워크플로우: 실행 시점에 파이프라인의 구조가 변경되는 동적인 워크플로우에 강점을 보입니다.
    • 하이브리드 실행 모델: 오케스트레이션은 Prefect Cloud에서 처리하고, 실제 데이터 처리는 사용자의 안전한 인프라 내에서 실행하여 보안을 강화할 수 있습니다.
  • 추천 대상:

    • 예측 불가능한 최신 데이터 파이프라인

제품 링크: https://www.prefect.io/

Dagster

데이터 파이프라인의 개발, 테스트, 운영 전반을 지원하는 데이터 오케스트레이터입니다.

  • 핵심 철학:
    • Asset-based
  • 주요 특징:

    • 데이터 자산 중심: 코드뿐만 아니라 파이프라인이 생성하는 데이터 자산(테이블, 파일, 모델 등)을 중심으로 워크플로우를 관리합니다.
    • 강력한 개발/테스트 지원: 로컬 개발과 테스트를 강력하게 지원하여 개발 단계에서 파이프라인의 안정성을 높일 수 있습니다.
  • 추천 대상:

    • 데이터 품질과 개발 생산성을 중시하는 팀

제품 링크: https://dagster.io/

Argo Workflows

쿠버네티스(Kubernetes) 환경에 특화된 컨테이너 네이티브 워크플로우 엔진입니다.

  • 핵심 철학:
    • K8s-Native
  • 주요 특징:

    • 쿠버네티스 네이티브: 모든 워크플로우가 쿠버네티스의 CRD(Custom Resource Definition)로 정의되어 쿠버네티스 생태계와 완벽하게 통합됩니다.
    • 대규모 병렬 처리: 수천 개의 컨테이너(Pod)를 동시에 실행하며 대규모 병렬 작업을 효율적으로 처리합니다.
  • 추천 대상:

    • 인프라가 쿠버네티스 중심인 환경

제품 링크: https://argoproj.github.io/workflows/



사이버 보안 - 주요 공격 벡터 유형

 

공격 벡터는 공격자가 시스템에 침투하기 위해 사용하는 경로와 방법을 의미하며, 크게 기술적 취약점을 이용하는 방식과 인간의 심리를 이용하는 방식으로 나눌 수 있습니다.

1. 사회 공학 (Social Engineering)

기술이 아닌 사람의 심리나 실수를 이용해 정보를 탈취하거나 악성 행위를 유도하는 공격입니다.

  • 피싱 (Phishing): 이메일, 문자(스미싱), 메신저 등을 통해 금융 기관이나 유명 기업으로 위장하여 계정 정보나 비밀번호 입력을 유도합니다.

  • 스피어 피싱 (Spear Phishing): 특정 개인이나 조직을 목표로 맞춤형 정보를 담아 보내는 정교한 피싱 공격입니다.

  • 비싱 (Vishing): 음성(Voice) 통화를 이용한 피싱으로, 콜센터 직원 등을 사칭하여 정보를 빼냅니다.

  • 미끼 (Baiting): 악성코드가 담긴 USB나 QR코드를 호기심을 자극하는 방식으로 노출시켜 사용자가 직접 실행하게 만듭니다.

2. 악성 소프트웨어 (Malware)

사용자 동의 없이 시스템에 설치되어 정보를 유출하거나 시스템을 파괴하는 모든 종류의 악의적 코드입니다.

  • 랜섬웨어 (Ransomware): 파일을 암호화한 뒤 이를 풀어주는 대가로 금전을 요구하는 가장 위협적인 공격 중 하나입니다.

  • 스파이웨어 (Spyware): 사용자 활동을 몰래 감시하고 키보드 입력, 개인 정보 등을 수집하여 공격자에게 전송합니다.

  • 트로이 목마 (Trojan Horse): 정상적인 프로그램으로 위장하여 시스템에 침투한 뒤, 숨겨진 악성 기능을 수행합니다.

  • 애드웨어 (Adware): 원치 않는 광고를 지속적으로 노출시키고, 때로는 스파이웨어 기능을 포함하기도 합니다.

3. 취약점 공격 (Exploits)

소프트웨어나 하드웨어에 존재하는 설계상의 허점(취약점)을 직접 공략하는 기술적인 공격입니다.

  • 제로 데이 공격 (Zero-day Attack): 개발사가 아직 인지하지 못하거나 패치를 발표하지 않은 취약점을 악용하는 공격입니다.

  • 패치 미적용 시스템 공격: 이미 보안 패치가 공개되었음에도 사용자가 업데이트를 적용하지 않은 시스템의 취약점을 노립니다.

  • 웹 애플리케이션 공격: SQL 인젝션, 크로스 사이트 스크립팅(XSS) 등 웹사이트의 취약점을 이용해 데이터베이스를 공격하거나 사용자 세션을 탈취합니다.

4. 자격 증명 탈취 및 도용 (Credential Theft)

사용자의 인증 정보(ID, 비밀번호, 인증서 등)를 훔쳐 정상 사용자인 것처럼 시스템에 접근하는 방식입니다.

  • 무차별 대입 공격 (Brute-force Attack): 가능한 모든 비밀번호 조합을 자동으로 시도하여 계정을 탈취합니다.

  • 패스워드 스프레잉 (Password Spraying): 하나의 흔한 비밀번호를 가지고 여러 사용자 계정에 로그인을 시도하는 공격입니다.

  • 크리덴셜 스터핑 (Credential Stuffing): 다른 곳에서 유출된 사용자 계정 정보를 다른 사이트에서 그대로 대입하여 로그인을 시도합니다.

5. 공급망 공격 (Supply Chain Attack)

보안이 비교적 취약한 협력업체나 소프트웨어 공급망을 먼저 해킹한 뒤, 이를 교두보 삼아 최종 목표인 대상을 공격하는 방식입니다. 신뢰 관계를 이용하기 때문에 방어가 매우 까다롭습니다.

6. 내부자 위협 (Insider Threats)

전·현직 직원이나 협력업체 직원 등 합법적인 접근 권한을 가진 내부자에 의해 의도적 또는 비의도적으로 정보 유출이나 시스템 파괴가 발생하는 경우입니다.

이러한 공격 벡터들은 단독으로 사용되기도 하지만, 여러 방식이 결합된 복합적인 형태로 나타나는 경우가 많아 다층적인 보안 전략이 필수적입니다.



사이버 보안 - 용어: 공격 표면(Attack Surface)

사이버 보안에서 공격 표면(Attack Surface)이란 해커가 시스템에 무단으로 접근하여 데이터를 훔치거나 손상시키기 위해 악용할 수 있는 모든 진입점(entry points)의 총합을 의미합니다.

쉽게 말해, 외부의 공격에 노출되어 있는 우리 회사나 개인 시스템의 모든 '문과 창문'이라고 생각할 수 있습니다. 이 '문과 창문'이 많고 관리가 허술할수록 공격 표면은 넓어지고, 해킹당할 위험은 커집니다.

공격 표면의 종류

공격 표면은 크게 세 가지로 나눌 수 있습니다.

1. 디지털 공격 표면 (Digital Attack Surface)

네트워크와 인터넷을 통해 접근할 수 있는 모든 자산을 포함합니다. 이는 가장 일반적인 공격 경로입니다.

  • 예시: 웹사이트, 서버, VPN, 방화벽, 이메일 계정, 클라우드 스토리지, API, 모바일 앱 등

2. 물리적 공격 표면 (Physical Attack Surface)

공격자가 물리적으로 접근하여 정보를 탈취하거나 시스템을 손상시킬 수 있는 영역입니다.

  • 예시: 사무실에 잠금 없이 놓아둔 노트북, USB 포트, 서버실, 분실되거나 도난당한 모바일 기기

3. 사회 공학적 공격 표면 (Social Engineering Attack Surface)

기술이 아닌 사람의 취약점을 노리는 공격 경로입니다.

  • 예시: 피싱 이메일에 쉽게 속는 직원, 내부 정보를 무심코 유출하는 경우, 비밀번호를 간단하게 설정하는 습관 등

공격 표면 관리의 중요성

공격 표면이 넓다는 것은 해커에게 더 많은 공격 기회를 제공한다는 의미입니다. 따라서 보안의 첫걸음은 공격 표면을 파악하고 줄이는 것입니다.

  • 파악 (Visibility): 우리 조직의 어떤 자산이 외부에 노출되어 있는지 정확히 파악하는 것이 중요합니다.
  • 축소 (Reduction): 사용하지 않는 포트, 불필요한 소프트웨어, 오래된 계정 등을 제거하여 공격자가 이용할 수 있는 진입점 자체를 줄여야 합니다.
  • 보호 (Protection): 파악된 모든 진입점에 대해 방화벽, 최신 보안 패치, 다단계 인증(MFA) 등의 강력한 보안 조치를 적용해야 합니다.

결론적으로, 공격 표면을 효과적으로 관리하는 것은 잠재적인 사이버 위협으로부터 조직의 핵심 자산을 보호하는 가장 근본적이고 중요한 활동입니다.

사이버 보안 - 용어: '공격 벡터'에서 '벡터(vector)'라는 단어의 유래

'공격 벡터'에서 '벡터(vector)' 라는 단어를 사용하는 이유는 이 단어가 가진 '방향과 경로를 통해 무언가를 전달하는 매개체' 라는 핵심 의미 때문입니다. 이는 주로 생물학과 수학/물리학에서 유래한 비유입니다.

1. 생물학적 비유 (질병의 전파)

가장 강력한 비유는 생물학의 '매개체(vector)'입니다.

  • 생물학에서 벡터란? 말라리아를 옮기는 모기처럼, 병원균을 한 숙주에서 다른 숙주로 옮기는 생물을 의미합니다. 모기 자체가 질병은 아니지만, 질병을 전달하는 경로이자 수단이 됩니다.
  • 사이버 보안의 적용: 이와 마찬가지로, 피싱 이메일은 악성코드라는 '병원균(pathogen)'을 공격자로부터 사용자 컴퓨터라는 '숙주(host)'로 전달하는 '공격 벡터'가 됩니다. 이메일 자체가 해킹은 아니지만, 해킹을 성공시키는 결정적인 경로와 수단의 역할을 하는 것입니다.

2. 수학/물리학적 비유 (방향과 경로)

수학이나 물리학에서 벡터는 '크기와 방향을 가진 양'을 나타내며, 특정 시작점에서 끝점으로의 경로를 의미합니다.

  • 수학에서 벡터란? 점 A에서 점 B로 향하는 화살표(→)로 표현되며, 명확한 방향과 경로를 나타냅니다.
  • 사이버 보안의 적용: 공격 벡터는 공격자(시작점)가 시스템의 취약점(목표 지점)에 도달하기 위해 사용하는 구체적인 공격 경로(path)를 의미합니다. 공격이 어떤 방향과 방법으로 진행되는지를 명확하게 설명해주는 용어입니다.

결론적으로 '공격 벡터'라는 용어는 단순히 '공격 방법'이라고 말하는 것보다, 공격이 어떤 경로를 통해, 어떤 매개체를 이용하여 전달되고 실행되는지를 보다 전문적이고 명확하게 표현하기 위해 사용됩니다.

2025년 7월 2일 수요일

[신경망 이해] 다층 퍼셉트론 오류 역전파 및 기울기 계산

[신경망 이해] 다층 퍼셉트론 오류 역전파 및 기울기 계산

개요

  • 붓꽃 데이터를 대상으로 꽃의 종류를 분류
  • 다층 퍼셉트론(Multi-Layer Perceptron, MLP) 모델의 오류 역전파 및 기울기 계산 과정 설명

데이터셋

  • 붓꽃 데이터
    • 꽃 종류
      • setosa (50개)
      • versicolor (50개)
      • virginica (50개)
    • 측정 항목
      • sepal length (cm): 꽃받침 길이
      • sepal width (cm): 꽃받침 넓이
      • petal length (cm): 꽃잎 길이
      • petal width (cm): 꽃잎 넓이

문제 정의

  1. 붓꽃의 종류가 무엇인지 표시되어 있는 데이터 세트를 사용하여 붓꽃 분류 기능을 학습합니다.
  2. 새로운 붓꽃 데이터에 대하여 종류가 무엇인지 예측합니다.

모델 함수 정의

  • 입력층의 크기: 4
  • 은닉층의 크기: 8 (다른 값으로 지정할 수도 있음)
  • 출력층의 크기: 3

h=tanh(Wxhx+bh)y=Whyh+bypi=softmax(yi)=eyik=02eyk \begin{alignat}{4} h& = tanh (W_{xh} \cdot x + b_{h}) \\ y& = W_{hy} \cdot h + b_{y} \\ p_{i}& = softmax(y_{i}) = \frac {e^{y_i}} { \sum_{k=0}^2 e^{y_k} } \\ \end{alignat}

  • ii는 붓꽃 종류에 부여한 인덱스 (0: setosa, 1: versicolor, 2: virginica)
  • xx는 한 개의 붓꽃에 대한 측정값 입력 벡터
  • hh는 은닉층의 노드
  • yy는 MLP 네트워크의 출력 벡터
  • pp는 붓꽃 종류별 예측 확률 벡터
  • WxhW_{xh}, WhyW_{hy}는 모델 학습 가중치 파라미터 행렬
  • bhb_{h}, byb_{y}는 모델 학습 바이어스 파라미터 벡터

비용 함수 정의

비용 함수로 크로스-엔트로피 손실(cross-entropy loss)을 사용합니다.

L=ln(pc) \begin{alignat}{4} L&=-ln(p_{c}) \end{alignat}

  • cc는 참인 종류
  • pcp_c는 참인 종류일 확률

예를 들어, 데이터 샘플의 참 값이 setosa(0)이고 해당 샘플에 대하여 모델로 계산한 확률 분포에서 setosa일 확률이 0.5일 때 손실 값은 다음과 같습니다.

c=0pc=0.5L=ln(0.5)0.693 \begin{aligned} & c = 0 \\ & p_c = 0.5 \\ & L = -ln(0.5) \approx 0.693 \end{aligned}

모델 파라미터 찾기

경사하강법(Gradient Descent)을 사용하여 손실 값을 줄일 수 있는 모델의 파라미터를 찾습니다.

기울기 수식 도출

찾고자 하는 파라미터를 변경하였을 때 영향을 받는 변수들을 화살표 방향으로 표시해 봄으로써 오류 역전파 경로를 파악하고 파라미터 변경에 대한 비용 함수의 기울기 수식을 도출할 수 있습니다.

LWhy=yWhyLyLby=ybyLyLWxh=hWxhyhLyLbh=hbhyhLy \begin{alignat}{5} \frac {\partial L}{\partial W_{hy}}& = \frac {\partial y}{\partial W_{hy}} \cdot \frac {\partial L}{\partial y} \\ \frac {\partial L}{\partial b_{y}}& = \frac {\partial y}{\partial b_{y}} \cdot \frac {\partial L}{\partial y} \\ \frac {\partial L}{\partial W_{xh}}& = \frac {\partial h}{\partial W_{xh}} \cdot \frac {\partial y}{\partial h} \cdot \frac {\partial L}{\partial y} \\ \frac {\partial L}{\partial b_{h}}& = \frac {\partial h}{\partial b_{h}} \cdot \frac {\partial y}{\partial h} \cdot \frac {\partial L}{\partial y} \end{alignat}

위의 기울기 수식에서 각각의 항목을 구하면 아래와 같습니다.

yWhy=hyby=1hWxh=(1h2)xhbh=(1h2)1yh=Why \begin{alignat}{4} \frac {\partial y}{\partial W_{hy}}& = h \\ \frac {\partial y}{\partial b_{y}}& = 1 \\ \frac {\partial h}{\partial W_{xh}}& = (1 - {h}^2) \cdot x \\ \frac {\partial h}{\partial b_{h}}& = (1 - {h}^2) \cdot 1 \\ \frac {\partial y}{\partial h}& = W_{hy} \end{alignat}

남은 항목 Ly\frac {\partial L}{\partial y}의 계산 과정은 생략하고 결과만 적으면 아래와 같습니다.

Lyi=pi,foricLyi=pi1,fori=c \begin{alignat}{4} \frac {\partial L}{\partial y_i}& = p_i &{, \quad for \quad i \ne c} \\ \frac {\partial L}{\partial y_i}& = p_i - 1 &{, \quad for \quad i = c} \end{alignat}

이제 기울기 계산에 필요한 모든 항목을 구할 수 있게 되었습니다.

LWhy=hLyLby=1LyLWxh=(1h2)xWhyLyLbh=(1h2)1WhyLy \begin{alignat}{5} \frac {\partial L}{\partial W_{hy}}& = h \cdot \frac {\partial L}{\partial y} \\ \frac {\partial L}{\partial b_{y}}& = 1 \cdot \frac {\partial L}{\partial y} \\ \frac {\partial L}{\partial W_{xh}}& = (1-h^2) \cdot x \cdot W_{hy} \cdot \frac {\partial L}{\partial y} \\ \frac {\partial L}{\partial b_{h}}& = (1-h^2) \cdot 1 \cdot W_{hy} \cdot \frac {\partial L}{\partial y} \end{alignat}

위 기울기 수식에서, LLyy에 대한 기울기는 주어진 샘플 데이터의 참 값이 무엇인지를 고려하여 식 (14)와 (15)로 계산합니다. 수식 (16) ~ (19)로부터 다음 두 가지 사항을 알 수 있습니다.

  • 기울기 결정 요소
    • 입력 값: xx
    • 현재의 파라미터 값들: WhyW_{hy}
    • 신경망을 통해 계산하는 과정에서 나오는 값들: hh, pip_{i}
  • 기울기 계산 대상
    • 훈련 가능한 개별 파라미터별

반복 수행 (학습 단계)

비용 함수의 값이 최솟값에 가까워지도록 아래의 과정을 수행합니다.

  1. 지정한 epoch 수만큼 반복
    1. 훈련 데이터의 수만큼 반복
      1. 예측 및 오류 계산
        1. 오류 역전파 과정에서 사용하기 위하여 xx 보관
        2. hh를 얻기 위하여 수식 (1)을 적용
        3. 오류 역전파 과정에서 사용하기 위하여 hh 보관
        4. 위의 결과로 얻은 hh에 대하여 수식 (2), (3)을 적용
        5. 수식 (4)를 통해서 오류 계산
      2. 오류 역전파 및 기울기 계산
        1. 수식 (9) ~ (15) 계산
        2. 수식 (16), (17)으로 비용 함수의 WhyW_{hy}, byb_y에 대한 기울기 계산
        3. 수식 (18), (19)로 비용 함수의 WxhW_{xh}, bhb_h에 대한 기울기 계산
      3. 파라미터 조정
        Why=lr×LWhyby=lr×LbyWxh=lr×LWxhbh=lr×Lbh \begin{alignat}{4} W_{hy}& -= l_r \times \frac {\partial L}{\partial W_{hy}} \\ b_{y}& -= l_r \times \frac {\partial L}{\partial b_{y}} \\ W_{xh}& -= l_r \times \frac {\partial L}{\partial W_{xh}} \\ b_{h}& -= l_r \times \frac {\partial L}{\partial b_{h}} \\ \end{alignat}
  • lrl_r은 학습 속도

새로운 붓꽃의 종류 예측

새로운 붓꽃 데이터가 아래와 같이 주어졌을 때 학습을 마친 모델을 사용하여 꽃의 종류를 예측해 봅니다.

x=[6.1,3.3,5.1,2.4] x = [6.1, 3.3, 5.1, 2.4]

  1. xx에 대하여 수식 (1)을 적용
  2. 위의 결과로 얻은 hh에 대하여 수식 (2), (3)을 적용
  3. 수식 (3)의 결과 p0p_0, p1p_1, p2p_2 중에서 제일 큰 값에 해당하는 종류를 채택

위에서, 출력층과 분류 확률의 구체적인 값은 예시를 위해 임의로 지정한 값입니다. 실제 모델에서는 다른 값일 수도 있습니다.

Written with StackEdit.

차등 정보보호 - 소개

차등 정보보호 - 소개 환자 질병 유무 데이터를 공개할 때 데이터셋에 불확실성을 추가함으로써 개별 환자의 질병 유무를 확정할 수 없도록 만들 수 있습니다. 예를 들어 어떤 병원이 데이터 분석을 목적으로 10,00...