day 002 KPMG Future Academy

sottuggung·2024년 11월 19일
0

KPMG-future-academy

목록 보기
2/41

KPMG Future Academy AI 활용 데이터 분석가 3기 2일차 수업을 2024년 11월 19일에 참석했다. 오후에는 총 12명의 수강생이 수업을 들었다.

오전에는 인공지능 개론 수업이 진행되었는데, 여러 인문학적 호기심이 따르는 수업이었다. 이어서 다양한 모델들이 게시된 사이트에서 모델들을 직접 테스트해보았다.

오후에는 Visual Studio를 설치하여 로컬 개발환경에 파이썬과 Jupyter Notebook을 설치하고 파이썬 기초 이론을 수강하였다. 파이썬 자료구조가 궁금하여 패키지, 모듈, 메소드 및 클래스와 인스턴스에 대해 공부하였다.

  1. AI 개론
    1.1. 생성형 인공지능
    1.2. 대화형 인공지능
  2. 개발환경 설정
  3. 자료형
    3.1. 숫자형 자료형
    3.2. 문자열 자료형
  4. 예습 - 파이썬 자료구조

1. AI 개론

최초 AI는 심리학자, 철학자 등으로부터 시작되었다.

[기술 시대의 흐름]
PC > 인터넷 > 모바일 > AI > ?

[퍼셉트론의 한계점]
AND 게이트와 OR 게이트 : 문제풀기 성공
XOR 게이트 : 문제풀기 실패
이로 인해 단층 퍼셉트론이 빙하기를 겪음.
이후 차원을 다층으로 증가시켜 고차원 문제를 해결하고 다층 퍼셉트론, 역전파 알고리즘 등이 발전함.

[최근 10년 인공지능 역사]
2012년 합성곱 신경망 CNN
2014년 적대적 생성 신경망 GAN
2015년 텐서플로
2016년 알파고
2017년 트랜스포머, 아실로마 인공지능 원칙
2018년 자기지도학습 부각
2019년 GPT-2 언어모델, BERT 언어모델
2020년 GPT-3, 알파폴드2
2021년 AI 반도체 전성시대, DALL-E
2022년 DALL-E2, 미드저니, Stable diffusion, Pati, Imagen, Make A Movie

*IBM 딥블루 : 체스 특화 인공지능 컴퓨터
*이미지넷 챌린지(현재 진행되지 않음) : 컴퓨터 비전 알고리즘 성능 평가 챌린지
2012년 기점 딥러닝으로 인해 급격히 성능이 향상됨
*브레이크아웃(벽돌깨기) 강화학습 : 컨볼루션 신경망(CNN)의 예

[GPGPU : General-Purpose computing on Graphics Processing Units]
GPU라는 계산기를 두드리며 제어하고 명령하는 것은 여전히 CPU이다. (출처 : https://namu.wiki/w/GPGPU)

인문학적 관심 소재가 대두되어 아래와 같이 질의하였다.

"컨설팅사에서 사용하는 AI는 없는지? 최근 컨설팅사의 감사, 실사 등 폭증한 수요 및 업무량 대비 인적자원 공급이 현격히 부족해졌다. 이 업무를 대행해주는 AI는 왜 쉽게 상용화되지 않는 것인가?"

결산 등 일부 보조적으로 차용되는 중이나 완전한 대체는 어려운 환경 탓이다. 예를 들면 자율주행차량의 경우 기술이 훨씬 이르게 개발되었더라도 법률 등 여타 문제로 인해 출시가 늦어졌다. 즉 기술 그 자체보다 사회 제도적 문제로 인해 지연이 발생한다.

"위 질문을 두고 봤을 때 인간은 인간을 불신하면서 한편으로 비합리적으로 신뢰하는 듯 하다. 인간의 신뢰 구조가 갖는 모순에 대해 정의되지 않는 상태에서 기계적 기술이 그 간극을 메우려는 시도에는 필연적인 장애가 있는 것 같다."

인간 간 신뢰한다기 보다 암묵적 합의가 누적되어 어떤 경우에는 그 과정이 더 낫다. 즉, 여전히 일부 상황에서는 인간의 작업을 차용하는 선택이 더 효율적이다. 또한 해당 작업은 우선순위 상 더 뒤쳐졌을 수 있다.

"기술적 발전이 고도화될수록 인간의 지능으로는 예측되지 않는 위험이 커지므로 인간이 선택 또는 합의에 대해 판단을 더 장기적으로 보류하려고하는 딜레마가 있다. 이 간극에 대해 어떻게 해결가능한가?"

일부 희생이 따를 것이나, 이는 자연적인 것이며 항상 있는 현상이다.

이어서 개인적인 관심사인 위험관리 차원에서의 정보보안에 대해 일부 알아보았다.
PCI-DSS 보안 표준을 따르기 위해서는 OWASP에 부합해야한다.

[OWASP top 10 ranked 웹 애플리케이션 취약점 (2017)]
출처 : https://ko.wikipedia.org/wiki/OWASP
Injection (인젝션)
Broken Authentication (취약한 인증)
Sensitive Data Exposure (민감한 데이터 노출)
XML External Entities (XXE) (XML 외부 개체 (XXE))
Broken Access Control (취약한 접근 통제)
Security Misconfiguration (잘못된 보안 구성)
Cross-Site Scripting (XSS) (크로스 사이트 스크립팅 (XSS))
Insecure Deserialization(안전하지 않은 역직렬화)
Using Components with Known Vulnerabilities (알려진 취약점이 있는 구성요소 사용)
Insufficient Logging & Monitoring(불충분한 로깅 및 모니터링)

*클라우드 연결성 (the connectivity cloud) : TBD

1.1. 생성형 인공지능

다양한 생성형 인공지능을 둘러보고 직접 테스트해보았다. AI 최신 논문도 확인해볼 수 있었다.

[AI 서비스 체험해보기 - Huggingface]
A. https://huggingface.co/

a. LivePortrait : 영상의 표정을 다른 영상에 반영해주는 모델

b. 3F3D : 2D 이미지를 올리면 3D로 랜더링해주는 모델



맛동산

야구공 뒷면의 실밥은 나오지 않았다.

c. AI Comic Factory : 스토리와 스타일을 지정하면 컷 만화를 생성해주는 모델

나는 'Fairytale in Uzbekistan' 스토리를 요청했고, 스타일은 'sunny, dog'으로 설정했다. 그런데 서구의 일러스트레이션 스타일이 결과로 도출되었다. 실제 중앙아시아의 복식 및 일러스트레이션 스타일은 아래와 같다.

구글 번역에서 from 언어를 영어로 설정한 뒤 무심코 한국어를 입력하여 우즈베크어로 번역을 요청했더니, 알 수 없는 언어가 도출되었다. 이 언어의 정체는 무엇일까?

B. https://paperswithcode.com/
최신의 AI 관련 논문을 리서치할 수 있는 곳이다.

C. https://aitestkitchen.withgoogle.com/
ImageFX 등 생성형 이미지, 영상, 음원 등을 제작할 수 있는 곳이다.


1.2. 대화형 인공지능

대화형 인공지능의 조건 : 단기기억 등을 갖춰야함.
과거 : 선언적 챗봇, 현재 : 대화형 챗봇

o1-preview 모델이 2025 수능 국어 97점을 달성했다고 한다.

아래 질문에 대한 Claude 3와 ChatGPT의 대답을 비교해보았다.

How many data audit methodologies generally have been used?

2. 개발환경 설정

Visual Studio에 파이썬과 주피터 노트북을 설치하여 개발환경을 설정하였다.

3. 자료형

자료형 및 파이썬 문법을 익히고 실습하였다.

3.1. 숫자형 자료형

1) 정수형
음의 정수, 0, 양의 정수(자연수)를 합해 정수형이라 한다.

2) 실수형
소수점을 표시할 수 있는 숫자를 실수형이라고 한다.
실수 데이터와 정수 데이터 사이에서 연산을 수행하는 경우, 데이터의 형 변환(정수 → 실수)이 일어난다.

[연산자(Operators)]
산술 연산자(Arithmetic Operators)
1) 사칙 연산자
2) 몫, 나머지, 제곱 연산자

들여쓰기는 코드 블록을 구분할 때 씀.
% 연산자는 짝수 또는 홀수 인지를 판단할 때 사용하는 경우가 많다.
// 연산자는 10 단위 또는 100 단위 등의 수를 구할 때 사용하는 경우가 많다.

[print() 함수]
어떤 처리를 위해 미리 작성되어 모듈화된 코드를 함수(Function)라고 부른다.
단순 값, 변수의 값, 연산 결과 등을 확인하기 위해 print() 함수를 사용

print() 함수 안에 콤마로 구분해 값을 여러 개 전달할 수 있어 다음과 같이 사용할 수 있다.
print() 함수에 sep, end 옵션을 사용할 수도 있다.

[문1] name, age 변수에 이름과 나이를 대입하고 코드를 실행하시오.

[문2] 다음 변수들의 합계와 평균을 total_score, avg_score 변수에 담아 출력하는 코드를 작성하시오.

[복합 연산자(Assignment Operators)]
연산과 대입을 동시에 수행할 수 있는 연산자를 복합 연산자라고 부른다.
구문은 짧으나 가독성이 떨어지므로 너무 많이 사용하면 오히려 복잡해질 수 있다.

3.2. 문자열 자료형

  • 따옴표는 "", '' 를 구분하여 출력하거나, \", \' 등을 통해 이스케이프 코딩이 가능하다.
  • 큰 따옴표 안에 작은 따옴표, 또는 작은 따옴표 안에 큰 따옴표를 사용한다.
  • \' 또는 \"를 사용해도 된다.
  • print() 함수를 사용해야 의도한 내용이 제대로 표시된다.
  • 파이썬에서 문자열은 값을 변경할 수 없기 때문에, 불변(immutable) 객체라고도 한다.

[주피터 노트북 단축키]
a 위에 셀추가
b 아래에 셀추가
dd 셀 삭제

Ctrl + Enter : 해당 셀 실행
Shift + Enter : 해당 셀 실행 후 아래 셀로 이동. 아래 셀이 없는 경우 새롭게 셀을 생성함.
Alt + Enter : 해당 셀 실행 후 아래에 새로운 셀을 생성.

[문자열 인덱싱]
인덱싱 : 정수로 지정
슬라이싱 : 범위로 지정 [m:n] 이 때 n-1

4. 예습 - 파이썬 자료구조

[참고 : 날짜 시간 자료형]

모듈 내에 어떤 클래스가 있는지 확인.

dir(datetime)

Python은 날짜와 시간 관련 자료형을 제공하지 않으므로 datetime 라이브러리를 불러와 사용한다.

dt = now.datetime.now()에서 계층구조 :
모듈(now) -> 클래스(datetime) -> 메소드(now())

  • 패키지 : 라이브러리와 모듈을 모아둠 (.py 등 다양한 모듈을 포함)
  • 모듈 : 함수, 변수, 클래스 모음집. 일반적으로 한 파일.
  • 메소드 - 기능 : 클래스, 구조체, 열거형 등에 포함된 함수. (멤버 함수) 형식 '변수.함수()'

*파이썬은 Python은 의도적으로 패키지를 불러오는 방식의 import를 제한함.
*이유: 네임스페이스 오염 방지, 코드의 명확성 유지

특정 모듈만 불러오기:

import datetime as now

필요한 클래스나 함수만 직접 불러오기:

from datetime import datetime
dt = datetime.now()  # 더 간단해 보이지만, 출처가 불명확할 수 있다.

[파이썬의 철학]

  • 명시적인 것이 암시적인 것보다 낫다
  • 네임스페이스를 깔끔하게 유지
  • 코드의 가독성과 유지보수성 중시

[파이썬의 클래스]

  • 클래스 : 객체를 정의하기 위한 메소드와 변수. 객체를 만들기 위한 청사진 역할.
  • 클래스는 복잡한 데이터 구조와 동작을 정의함.

[클래스의 특징]

  • 복잡성 : 변수는 단순한 값 저장, 클래스는 복잡한 데이터 구조와 동작을 정의
  • 재사용성 : 클래스는 같은 구조를 가진 여러 객체를 만들 수 있음
  • 기능 : 클래스는 메소드를 통해 데이터를 처리하는 기능을 포함할 수 있음

[파이썬 클래스의 최소 구성 단위]

속성(Attributes)

  • 인스턴스 변수: 각 객체별로 가지는 데이터
  • 클래스 변수: 클래스 전체가 공유하는 데이터

메소드(Methods)

  • 인스턴스 메소드: 객체의 동작을 정의
  • 클래스 메소드: 클래스 전체에 관련된 동작
  • 정적 메소드: 클래스와 관련은 있지만 독립적인 동작

간단한 예시:

여기서 self.name = name은 인스턴스 변수를 초기화하는 것으로,
1. name은 생성자 메소드로 전달받은 매개변수
2. self.name은 해당 인스턴스 고유의 속성
3. 각 객체(인스턴스)마다 다른 값을 가질 수 있는 인스턴스 변수를 생성

예를 들어:

person1 = Person("철수", 25)   # self.name은 "철수"
person2 = Person("영희", 30)   # self.name은 "영희"

각 객체는 고유한 name 속성을 가진다.

[속성의 최소 단위]

self.name = "철수"  # 단일 값
self.numbers = [1, 2, 3]  # 컬렉션
self.is_active = True  # 불리언

[메소드의 최소 단위]

def simple_method(self):
    return 1  # 가장 단순한 반환

def empty_method(self):
    pass  # 아무 동작도 하지 않는 메소드

[데코레이터(@)를 통한 메소드 특성 지정:]

@property  # 메소드를 속성처럼 사용
def full_name(self):
    return f"{self.first_name} {self.last_name}"

[실제 사용 예시에서 datetime 클래스의 최소 단위들]

import datetime as now

dt = now.datetime.now()
print(dt.year)   # 년도 속성
print(dt.month)  # 월 속성
print(dt.day)    # 일 속성

여기서 year, month, day 등이 datetime 클래스의 속성들로, 더 이상 쪼갤 수 없는 최소 단위.
이러한 최소 단위들이 모여서 클래스의 전체 기능을 구성.

숫자열, 문자열 자료형의 기본 구문까지 배웠다. 내일부터 메소드를 배울 예정이다.

profile
hello world

0개의 댓글