728x90
반응형

컴퓨터 비전

디지털 이미지를 기계가 이해할 수 있게 만드는 연구 영역을 컴퓨터 비전이라고 합니다. 

 

출처 : 

처음 배우는 인공지능

반응형

'개념 정리' 카테고리의 다른 글

초해상도 이미지 인식  (0) 2022.01.10
HOG 특징량  (0) 2022.01.10
패턴 인식  (0) 2022.01.07
LSTM  (0) 2022.01.06
완전 연결 계층  (0) 2022.01.05
728x90
반응형

패턴 인식

지도 학습은 특히 이미지와 소리 같은 데이터는 데이터 속의 일정한 패턴을 추출하고 조합해 학습하기 좋습니다. 

이를 패턴 인식 프로그램이라고 하며 고전적인 머신러닝을 이용한 구축 방법과 2010년대 이후 트랜드인 딥러닝을 이용한 구축 방법이 있습니다. 

 

다음 문제를 해결해야 합니다 

네트워크 설계의 시행착오를 줄여야 합니다 

예상하지 않은 학습 결과가 나왔을 때 원인을 찾아야 합니다. 

-> 이 두가지는 고전적인 머신러닝을 이용하는 것보다 딥러닝을 이용하는 것이 어려운 이유라고 말할 수 있습니다. 

그러나 딥러닝의 이미지 인식은 이미 공개된 다양한 네트워크를 재사용해 전이 학습 등을 할 수 있다는 장점이 있으므로 꼭 활용해야 합니다. 

출처 : 처음 배우는 인공지능

반응형

'개념 정리' 카테고리의 다른 글

HOG 특징량  (0) 2022.01.10
컴퓨터 비전  (0) 2022.01.10
LSTM  (0) 2022.01.06
완전 연결 계층  (0) 2022.01.05
스파스 코딩_2021014  (0) 2022.01.05
728x90
반응형

LSTM

Long Short-Term Memory

순환 신경망은 거슬러 올라가는 단계 수가 많아지면 기울기 소실 문제 때문에 제대로 학습할 수 없습니다. 

이 문제를 개선하는 것이 LSTM입니다. 

LSTM은 신경망의 중간 계층에서의 각 유닛을 LSTM 블록이라는 메모리 유닛으로 치환한 구조입니다. 

LSTM 블록에는 입력 게이트 , 망각 게이트 출력 게이트 라는 세가지 게이트가 있으며 메모리 셀에 저장된 1단계 이전의 상태를 망각 게이트에 참조(요소곱)합니다. 

그리고 입력 게이트와 망각 게이트를 잘 여닫으면서 출력을 조정합니다. 

 

출처 : 처음 배우는 인공지능

반응형

'개념 정리' 카테고리의 다른 글

컴퓨터 비전  (0) 2022.01.10
패턴 인식  (0) 2022.01.07
완전 연결 계층  (0) 2022.01.05
스파스 코딩_2021014  (0) 2022.01.05
오토인코더_20220103  (0) 2022.01.03
728x90
반응형

출처 : 프로그래머스

문제 설명

0과 1로 이루어진 2n x 2n 크기의 2차원 정수 배열 arr이 있습니다. 당신은 이 arr을 쿼드 트리와 같은 방식으로 압축하고자 합니다. 구체적인 방식은 다음과 같습니다.

  1. 당신이 압축하고자 하는 특정 영역을 S라고 정의합니다.
  2. 만약 S 내부에 있는 모든 수가 같은 값이라면, S를 해당 수 하나로 압축시킵니다.
  3. 그렇지 않다면, S를 정확히 4개의 균일한 정사각형 영역(입출력 예를 참고해주시기 바랍니다.)으로 쪼갠 뒤, 각 정사각형 영역에 대해 같은 방식의 압축을 시도합니다.

arr이 매개변수로 주어집니다. 위와 같은 방식으로 arr을 압축했을 때, 배열에 최종적으로 남는 0의 개수와 1의 개수를 배열에 담아서 return 하도록 solution 함수를 완성해주세요.


제한사항
  • arr의 행의 개수는 1 이상 1024 이하이며, 2의 거듭 제곱수 형태를 하고 있습니다. 즉, arr의 행의 개수는 1, 2, 4, 8, ..., 1024 중 하나입니다.
    • arr의 각 행의 길이는 arr의 행의 개수와 같습니다. 즉, arr은 정사각형 배열입니다.
    • arr의 각 행에 있는 모든 값은 0 또는 1 입니다.

입출력 예arrresult
[[1,1,0,0],[1,0,0,0],[1,0,0,1],[1,1,1,1]] [4,9]
[[1,1,1,1,1,1,1,1],[0,1,1,1,1,1,1,1],[0,0,0,0,1,1,1,1],[0,1,0,0,1,1,1,1],[0,0,0,0,0,0,1,1],[0,0,0,0,0,0,0,1],[0,0,0,0,1,0,0,1],[0,0,0,0,1,1,1,1]] [10,15]

입출력 예 설명

입출력 예 #1

  • 다음 그림은 주어진 arr을 압축하는 과정을 나타낸 것입니다.
  • 최종 압축 결과에 0이 4개, 1이 9개 있으므로, [4,9]를 return 해야 합니다.

입출력 예 #2

  • 다음 그림은 주어진 arr을 압축하는 과정을 나타낸 것입니다.
  • 최종 압축 결과에 0이 10개, 1이 15개 있으므로, [10,15]를 return 해야 합니다.
answer = {0:0, 1:0}


def findArr(startx, endx, starty, endy , arr):
    value = arr[startx][starty]
    
    issame = True
    for i in range(startx, endx):
        for j in range(starty, endy):
            if arr[i][j] != value:
                issame= False
                break

        if not issame :
            break
    if issame :
        answer[value] = answer.get(value) +1
        return (True if value==1 else False,True,startx, endx, starty, endy)
    else:
        topleft = findArr(startx, (startx+endx)//2 , starty,(starty+endy)//2 , arr)
        topright = findArr(startx, (startx+endx)//2 , (starty+endy)//2,endy , arr)
        bottomleft = findArr((startx+endx)//2, endx ,starty,(starty+endy)//2 , arr)
        bottomright = findArr((startx+endx)//2, endx ,(starty+endy)//2,endy , arr)
        return (False, False, topleft,topright,bottomleft,bottomright)

def solution(arr):
    n = len(arr)
    findArr(0, n, 0, n , arr)
    return list(answer.values())

#arr= [[1,1,0,0],[1,0,0,0],[1,0,0,1],[1,1,1,1]]
 
arr=[[1,1,1,1,1,1,1,1],[0,1,1,1,1,1,1,1],[0,0,0,0,1,1,1,1],[0,1,0,0,1,1,1,1],[0,0,0,0,0,0,1,1],[0,0,0,0,0,0,0,1],[0,0,0,0,1,0,0,1],[0,0,0,0,1,1,1,1]]
solution(arr)
반응형

'문제 > 프로그래머스' 카테고리의 다른 글

신과 결과 받기  (0) 2022.01.22
n^2 배열 자르기  (0) 2022.01.15
스킬트리  (0) 2022.01.05
방문 길이  (0) 2022.01.03
[3차] 방금그곡  (0) 2021.12.30
728x90
반응형

완전 연결 계층

Fully Connected layer

합성곱 계층과 풀링 계층 사이을 반복해서 거친 후 마지막

 

출처 : 

처음 배우는 인공지능

반응형

'개념 정리' 카테고리의 다른 글

패턴 인식  (0) 2022.01.07
LSTM  (0) 2022.01.06
스파스 코딩_2021014  (0) 2022.01.05
오토인코더_20220103  (0) 2022.01.03
심층 신뢰 신경망_20220102  (0) 2022.01.03
728x90
반응형

스파스 코딩

" 뇌 안에는 뉴런 소수가 반응해 복잡한 표현을 나타내는 기구가 있는 것이 아닐ㄲ?"

기구를 스파스 코딩이라고 말합니다. 

 

스파스 sparse

수학에서는 벡터나 행렬의 많은 원소가 0일때 이를 스파스 하다고 합니다. 

 

스파스 구조의 데이터 분석은 "많은 요소 중 0이 아닌 요소가 어는 것인지"라는 조합과 값을 찾아낼 필요가 있습니다.

따라서 계산량 매우 많은 NP-난해 NP-hardness문제라고 합니다. 

이러한 구조에서 데이터의 특징을 나타낼 수 있다면 특징 추출과 데이터 압축에 효율적입니다. 

 

출처 : 처음 배우는 인공지능

반응형

'개념 정리' 카테고리의 다른 글

LSTM  (0) 2022.01.06
완전 연결 계층  (0) 2022.01.05
오토인코더_20220103  (0) 2022.01.03
심층 신뢰 신경망_20220102  (0) 2022.01.03
선행 학습  (0) 2021.12.31
728x90
반응형

출처 : 프로그래머스

선행 스킬이란 어떤 스킬을 배우기 전에 먼저 배워야 하는 스킬을 뜻합니다.

예를 들어 선행 스킬 순서가 스파크 → 라이트닝 볼트 → 썬더일때, 썬더를 배우려면 먼저 라이트닝 볼트를 배워야 하고, 라이트닝 볼트를 배우려면 먼저 스파크를 배워야 합니다.

위 순서에 없는 다른 스킬(힐링 등)은 순서에 상관없이 배울 수 있습니다. 따라서 스파크 → 힐링 → 라이트닝 볼트 → 썬더와 같은 스킬트리는 가능하지만, 썬더 → 스파크나 라이트닝 볼트 → 스파크 → 힐링 → 썬더와 같은 스킬트리는 불가능합니다.

선행 스킬 순서 skill과 유저들이 만든 스킬트리1를 담은 배열 skill_trees가 매개변수로 주어질 때, 가능한 스킬트리 개수를 return 하는 solution 함수를 작성해주세요.

제한 조건

  • 스킬은 알파벳 대문자로 표기하며, 모든 문자열은 알파벳 대문자로만 이루어져 있습니다.
  • 스킬 순서와 스킬트리는 문자열로 표기합니다.
    • 예를 들어, C → B → D 라면 "CBD"로 표기합니다
  • 선행 스킬 순서 skill의 길이는 1 이상 26 이하이며, 스킬은 중복해 주어지지 않습니다.
  • skill_trees는 길이 1 이상 20 이하인 배열입니다.
  • skill_trees의 원소는 스킬을 나타내는 문자열입니다.
    • skill_trees의 원소는 길이가 2 이상 26 이하인 문자열이며, 스킬이 중복해 주어지지 않습니다.

입출력 예

skillskill_treesreturn

"CBD" ["BACDE", "CBADF", "AECB", "BDA"] 2

입출력 예 설명

  • "BACDE": B 스킬을 배우기 전에 C 스킬을 먼저 배워야 합니다. 불가능한 스킬트립니다.
  • "CBADF": 가능한 스킬트리입니다.
  • "AECB": 가능한 스킬트리입니다.
  • "BDA": B 스킬을 배우기 전에 C 스킬을 먼저 배워야 합니다. 불가능한 스킬트리입니다.

  1. 스킬 트리: 유저가 스킬을 배울 순서 
 

코딩테스트 연습 - 스킬트리

 

programmers.co.kr

  1. index를 찾는다. 해당 index가 있을 경우만 return 한다.
  2. index가 있는 값만 result을 추가한다.
  3. result의 길이가 0일 경우에는 answer의 값을 추가한다.
  4. match_skill 길이만큼 list를 생성한다. 예를 들어 아래 케이스의 경우 : [0, 1, 2, 3]
  5. 정렬된 result과 result길이 만큼 짤린 match_skill 의 값이 같을 경우 예를 들어 result=[0,1] result과 result길이 만큼 짤린 match_skill 의 값이 같을 경우 result=[1,0]을 방지하기 위해서
def solution(skill, skill_trees):
    answer = 0
    match_skill = "".join([str(i) for i in range(len(skill))])
    for skill_tree in skill_trees:
        result= ""
        for i in skill_tree:
            skill_index = skill.find(i)
            if (skill_index) != -1:
                result += str(skill_index)
        
        if result == match_skill[:len(result)]:
            answer+= 1

    return answer

다른 사람 풀이를 보니깐 매우 간단하게 하였다. 좀 너무 어렵게 접근한 것 같다. 

그래서 코드를 좀 수정하였다. 

 

 

반응형

'문제 > 프로그래머스' 카테고리의 다른 글

n^2 배열 자르기  (0) 2022.01.15
쿼드압축 후 개수 세기  (0) 2022.01.06
방문 길이  (0) 2022.01.03
[3차] 방금그곡  (0) 2021.12.30
가장 큰 정사각형 찾기  (0) 2021.12.24
728x90
반응형

오토인코더

전파형 네트워크의 하나입니다. 

입력 데이터 1을 통해 얻은 출력 데이터 1을 다시 입력 데이터 2로 설정합니다. 

입력 데이터 2에서 얻은 출력 데이터 2를 이력데이터 1과 비교합니다. 

출력 데이터 2와 입력 데이터 1이 서로 더 가까운 상태가 되는 특징을 얻습니다. 

얻은 특징을 통해 더 나은 데이터를 얻습니다 

 

지도 데이터가 없는 자율학습입니다. 

네트워크 형태로는 제한 볼츠만 머신과 비슷하며 선행 학습에 이용합니다. 

중간 계층의 유닛수는 입력 계층보다 적어야 합니다. 

 

출처 : 처음 배우는 인공지능

반응형

'개념 정리' 카테고리의 다른 글

완전 연결 계층  (0) 2022.01.05
스파스 코딩_2021014  (0) 2022.01.05
심층 신뢰 신경망_20220102  (0) 2022.01.03
선행 학습  (0) 2021.12.31
볼츠만 머신_20211231  (0) 2021.12.31

+ Recent posts